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 Der Befehl verfügt über viele Optionen und es wird empfohlen, die offizielle Dokumentation und die Befehlsreferenz zu konsultieren, um einen umfassenderen Überblick über seine Funktionen zu erhalten.
Die Verwendung von pg_dumpall führt zu Berechtigungsproblemen, da es versucht, Systemtabellen in die Operation einzubeziehen, was nicht unterstützt wird. Wie dokumentiert, verwenden Sie pg_dump und geben Sie benutzerspezifische Tabellen an.
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.
Siehe Verbinden mit psql für Details zum Herstellen einer Verbindung als Administrator mithilfe von psql. 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