IBM Cloud Docs
Migration auf Databases for PostgreSQL

Migration auf Databases for PostgreSQL

Es gibt verschiedene Optionen, um Daten aus vorhandenen PostgreSQL-Datenbanken auf IBM Cloud® Databases for PostgreSQL zu migrieren. Wir konzentrieren uns auf die einfachste und effektivste. Für den Beginn müssen Sie PostgreSQL lokal installiert haben, sodass Sie über die Tools psql und pg_dump verfügen. Die Cloud Databases-CLI erleichtert die Verbindung und Wiederherstellung auf eine neue Databases for PostgreSQL-Bereitstellung, ist aber nicht zwingend erforderlich.

pg_dump

Führen Sie in der Quellendatenbank pg_dump aus, um eine SQL-Datei zu erstellen, die zum erneuten Erstellen der Datenbank verwendet werden kann. pg_dump setzt mindestens einen Hostnamen (Flag -h), eine Portnummer (Flag -p), einen Datenbanknamen (Flag -d), einen Benutzernamen (Flag -U) und eine Datei oder einen Verzeichnisnamen (Flag -f) zum Schreiben des Speicherauszugs voraus.

Mit dem folgenden Befehl wird beispielsweise ein Speicherauszug der "zusammengesetzten" PostgreSQL-Datenbank, die auf sl-eu-lon-2-portal.4.dblayer.com, Port 17980 gehostet wird, mit dem Benutzer mit Administratorberechtigung erstellt und die Ergebnisse werden in der Datei dump.sql gespeichert.

pg_dump -h sl-eu-lon-2-portal.4.dblayer.com -p 17980 -d compose -U admin -f dump.sql

Der pg_dump hat viele Optionen, und es wird empfohlen, dass Sie die offizielle Dokumentation zu konsultieren und befehlsreferenz verwenden, um einen umfassenderen Überblick über seine Möglichkeiten zu erhalten.

Ausgabe von 'pg_dump' wiederherstellen

Die Ausgabe von pg_dump kann anschließend in eine neue Databases for PostgreSQL-Bereitstellung hochgeladen werden. Da die Ausgabe in SQL verfasst ist, kann sie einfach über den Befehl psql an die Datenbank gesendet werden. Es wird empfohlen, Importe über den Benutzer mit Administratorberechtigung auszuführen.

Unter Verbinden mit psql erfahren Sie, wie Sie sich als Administrator mit psql verbinden können. Für Verbindungen mit dem Befehl psql benötigen Sie die Verbindungszeichenfolge des Benutzers mit Administratorberechtigung sowie das TLS-Zertifikat. Das Zertifikat muss aus Base64 entschlüsselt und als beliebige lokale Datei gespeichert werden. Um die zuvor erstellte dump.sql in eine Datenbankbereitstellung namens example-psql zu importieren, kann der psql-Befehl mit -f dump.sql als Parameter aufgerufen werden. Der Parameter weist psql an, die SQL-Anweisungen in der Datei zu lesen und auszuführen. Der Befehl sieht ungefähr wie folgt aus:

PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt psql 'host=c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud port=32484 dbname=ibmclouddb user=admin sslmode=verify-full' -f dump.sql

Wie in der Dokumentation Verbindungen mit psqlherstellen beschrieben, vereinfacht das Cloud Databases-CLI-Plug-in die Verbindungsherstellung. Der vorangehende psql-Import kann wie folgt ausgeführt werden:

ibmcloud cdb deployment-connections example-psql -s -- -f dump.sql

Wenn kein Benutzer angegeben ist, verwendet der Befehl automatisch den Benutzer mit Administratorberechtigung. Zudem fordert er auch interaktiv zur Kennworteingabe auf. Das TLS-Zertifikat wird automatisch abgerufen und verwendet. Der Befehl -s startet psql (oder den Befehl, der konfiguriert wurde), sobald die Details aus der API erhalten wurden. Alles, was nach -- kommt, wird an den Befehl übergeben.

Während der Wiederherstellungsprozess ausgeführt wird, gibt er eine Reihe von Nachrichten über Änderungen aus, die er an der Datenbankbereitstellung vornimmt.

Zusätzliche Migrationsmöglichkeit durch Verwendung von pg_restore

Für Benutzer mit einer TAR-Datei, die SQL und Daten separat enthält, kann zusätzlich zu den zuvor genannten pg_restore-Befehlen der Befehl psql verwendet werden, um die Daten zu migrieren. Ein Beispiel für den Befehl pg_restore:

 PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt pg_restore -h c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud -p 32484 -U admin -F t -d ibmclouddb tarfile.tar