Migrieren einer PostgreSQL-Datenbank zu einem PostgreSQL-Server mit Azure Arc-Unterstützung
In diesem Dokument wird beschrieben, wie Sie Ihre vorhandene PostgreSQL-Datenbank (die nicht in Datendiensten mit Azure Arc-Unterstützung gehostet wird) auf Ihren PostgreSQL-Server mit Azure Arc-Unterstützung verlagern.
Hinweis
Als Previewfunktion unterliegt die in diesem Artikel vorgestellte Technologie den zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen.
Die neuesten Updates sind in den Versionshinweisenverfügbar.
Überlegungen
PostgreSQL-Server mit Azure Arc-Unterstützung ist die Communityversion von PostgreSQL. Daher sollte jedes Tool, das mit PostgreSQL außerhalb von Azure Arc funktioniert, auch mit einem PostgreSQL-Server mit Azure Arc-Unterstützung funktionieren.
Folglich sollten Sie mit den Tools, die Sie aktuell für Postgres einsetzen, in der Lage sein, die folgenden Aktionen durchzuführen:
- Sichern Ihrer Postgres-Datenbank auf der Instanz, die außerhalb von Azure Arc gehostet wird
- Wiederherstellen der Datenbank auf dem PostgreSQL-Server mit Azure Arc-Unterstützung
Sie müssen nur noch die folgenden Schritte ausführen:
- Zurücksetzen der Serverparameter
- Zurücksetzen der Sicherheitskontexte: Benutzer und Rollen neu erstellen, Berechtigungen zurücksetzen usw.
Um diesen Sicherungs-/Wiederherstellungsvorgang auszuführen, können Sie ein beliebiges Tool verwenden, das Sicherungen/Wiederherstellungen für Postgres ausführen kann. Beispiel:
- Azure Data Studio und die zugehörige Postgres-Erweiterung
pgcli
pgAdmin
pg_dump
pg_restore
psql
- ...
Beispiel
Veranschaulichen wir die Schritte anhand des Tools pgAdmin
.
Betrachten Sie folgendes Setup:
Quelle:
Ein Postgres-Server, der lokal auf einem Bare-Metal-Server mit dem Namen JEANYDSRV ausgeführt wird. Er verfügt über Version 14 und hostet eine Datenbank mit dem Namen „MyOnPremPostgresDB“, die eine Tabelle „T1“ mit einer Zeile enthält:Ziel:
Ein Postgres-Server namens postgres01, der in einer Azure Arc-Umgebung ausgeführt wird. Der Server verfügt über Version 14. Er enthält keine Datenbank mit Ausnahme der standardmäßigen Postgres-Datenbank.
Eine lokale Sicherung der Quelldatenbank erstellen
Diese konfigurieren:
- Geben Sie ihr einen Dateinamen: MySourceBackup.
- Legen Sie das Format auf Benutzerdefiniert fest.
Die Sicherung wird erfolgreich abgeschlossen:
Erstellen einer leeren Datenbank im Zielsystem in Ihrem PostgreSQL-Server mit Azure Arc-Unterstützung
Hinweis
Um eine Postgres-Instanz im Tool pgAdmin
zu registrieren, müssen Sie die öffentliche IP-Adresse Ihrer Instanz in Ihrem Kubernetes-Cluster verwenden und den Port und den Sicherheitskontext entsprechend festlegen. Sie finden diese Informationen in der Zeile des psql
-Endpunkts, nachdem Sie folgenden Befehl ausgeführt haben:
az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s
Es wird eine ähnliche Ausgabe wie die folgende zurückgegeben:
{
"instances": [
{
"endpoints": [
"Description": "PostgreSQL Instance",
"Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
},
{
"Description": "Log Search Dashboard",
"Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
},
{
"Description": "Metrics Dashboard",
"Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
}
],
"engine": "PostgreSql",
"name": "postgres01"
}
],
"namespace": "arc"
}
Wir nennen die Zieldatenbank RESTORED_MyOnPremPostgresDB.
Die Datenbank im Arc-Setup wiederherstellen
Die Wiederherstellung konfigurieren:
Zeigen Sie auf die Datei, die die wiederherzustellende Sicherung enthält: MySourceBackup.
Behalten Sie das Format als Benutzerdefiniert oder TAR bei.
Klicken Sie auf Wiederherstellen.
Die Wiederherstellung ist erfolgreich.
Überprüfen, ob die Datenbank erfolgreich in Ihrem PostgreSQL-Server mit Azure Arc-Unterstützung wiederhergestellt wurde
Verwenden Sie eine der folgenden beiden Methoden:
Von pgAdmin
:
Erweitern Sie die Postgres-Instanz, die im Azure Arc-Setup gehostet wird. Die Tabelle wird in der wiederhergestellten Datenbank angezeigt. Wenn Sie die Daten auswählen, wird dieselbe Zeile wie in der lokalen Instanz angezeigt:
Von psql
innerhalb Ihres Azure Arc-Setups:
In Ihrem Arc-Setup können Sie psql
verwenden, um eine Verbindung mit der Postgres-Instanz herzustellen, den Datenbankkontext auf RESTORED_MyOnPremPostgresDB
festzulegen und die Daten abzufragen:
Listen Sie die Endpunkte auf, um Ihre
psql
Verbindungszeichenfolge zu bilden:az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s
{ "instances": [ { "endpoints": [ "Description": "PostgreSQL Instance", "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234" }, { "Description": "Log Search Dashboard", "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))" }, { "Description": "Metrics Dashboard", "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01" } ], "engine": "PostgreSql", "name": "postgres01" } ], "namespace": "arc" }
Verwenden Sie aus der
psql
-Verbindungszeichenfolge den Parameter-d
, um den Datenbanknamen anzugeben. Mit dem folgenden Befehl werden Sie zur Eingabe des Kennworts aufgefordert:psql -d RESTORED_MyOnPremPostgresDB -U postgres -h 10.0.0.4 -p 32639
psql
verbindenPassword for user postgres: psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1), server 12.3 (Debian 12.3-1.pgdg100+1)) WARNING: psql major version 10, server major version 12. Some psql features might not work. SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. RESTORED_MyOnPremPostgresDB=#
Wenn Sie die Tabelle auswählen, werden die Daten angezeigt, die Sie von der lokalen Postgres-Instanz wiederhergestellt haben:
RESTORED_MyOnPremPostgresDB=# select * from t1;
col1 | col2 ------+------------- 1 | BobbyIsADog (1 row)
Hinweis
- Es ist derzeit nicht möglich, für eine vorhandene Postgres-Instanz, die lokal oder in einer anderen Cloud ausgeführt wird, ein „Onboarding in Azure Arc“ durchzuführen. Anders ausgedrückt: Es ist nicht möglich, einen „Azure Arc-Agent“ auf Ihrer vorhandenen Postgres-Instanz zu installieren, um diese in ein Postgres-Setup mit Azure Arc-Unterstützung zu verwandeln. Stattdessen müssen Sie eine neue Postgres-Instanz erstellen und Daten auf die Instanz übertragen. Sie können dazu das oben aufgeführte Verfahren oder ein ETL-Tool Ihrer Wahl verwenden.
* Überspringen Sie in diesen Dokumenten die Abschnitte Anmelden am Azure-Portal und Erstellen einer Azure Database for PostgreSQL-Instanz. Implementieren Sie die restlichen Schritte in Ihrer Azure Arc-Bereitstellung. Diese Abschnitte gelten nur für den Azure Database for PostgreSQL-Server, der in der Azure-Cloud als PaaS-Dienst angeboten wird. Die restlichen Abschnitte der Dokumente sind direkt auf Ihren PostgreSQL-Server mit Azure Arc-Unterstützung übertragbar.