Datenbanken importieren, exportieren und migrieren
Migrieren Sie Daten aus einer anderen PostgreSQL-Datenbank in eine OCI Database with PostgreSQL-Datenbanksystem.
Verwenden von PostgreSQL-Utilitys wie pg_dump
Das Utility pg_dump
enthält standardmäßig eine PostgreSQL-Installation und kann zum Extrahieren einer PostgreSQL-Datenbank in eine Skriptdatei oder eine andere Archivdatei verwendet werden. These files can be provided to an OCI Database with PostgreSQL with psql
or pg_restore
commands to re-create a database in the same state at the time of its dump.
Wenn Sie eine OCI Database with PostgreSQL erstellen, geben Sie einen Admin-Benutzer an. Dieser Benutzer kann aus einer mit diesen Utilitys erstellten Datei wiederherstellen. Da es sich bei diesen Utilitys um reguläre PostgreSQL-Clientanwendungen handelt, können Sie diese Migrationsprozedur von jedem Remotehost aus ausführen, der Zugriff auf die Datenbank hat.
In dieser Dokumentation wird
pg_dump
verwendet, um die Dumps im Nur-Text-Format zu erstellen, und das Utility psql
, um den Dump wiederherzustellen. Sie können auch Dumps in einem anderen Format erstellen und pg_restore
verwenden, um die Dumps wiederherzustellen.Beispiel: Alle Datenbanken eines Datenbanksystems exportieren und importieren
Im folgenden Beispiel wird davon ausgegangen, dass das Quelldatenbanksystem ein Vanilla-PostgreSQL-System mit drei Datenbanken ist: db_1, db_2 und db_3. Das Quelldatenbanksystem verfügt über viele Benutzer, von denen einige über SUPERUSER-Berechtigungen verfügen.
-
Erstellen Sie den Nur-Schema-Dump aller Datenbanken. Dump jeder Datenbank in eine einzelne Datei mit den Objektverantwortungsinformationen der Benutzer.
/usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -s -E 'UTF8' -d <db_1> -f <db_1_schema_dump>.sql
-U
: Benutzer, der den Dump erstellt-h
: Hostadresse der Quelldatenbank-s
: Nur Dump-Schema, keine Daten-E
: Die Clientcodierung der Dumpdatei auf UTF-8 setzen-d
: Datenbank für Dump-f
: O/p-Datei zum Dump des Datenbankschemas
Wiederholen Sie diesen Vorgang für Datenbanken db_2 und db_3.
-
Erstellen Sie einen Data-Only-Dump jeder Datenbank in einzelne Dateien.
/usr/lib/postgresql/bin/pg_dump -U psql -h <IP_of_Source_DB> -a -E 'UTF8' -d db_1 -f <db_1_data_dump>.sql
-a
: Dump nur die Daten, nicht das Schema
Wiederholen Sie diesen Vorgang für Datenbanken db_2 und db_3.
-
Globale Objekte ohne Tablespace-Informationen ausgeben
/usr/lib/postgresql/bin/pg_dumpall -U psql -h <IP_of_Source_DB> -g --no-role-passwords --no-tablespaces -f <all_roles>.sql
-g
: Nur globale Objekte ausgeben, keine Datenbanken--no-role-passwords
: Verwenden Sie dieses Flag, um ein Dumping von Kennwörtern zu vermeiden.--no-tablespaces
: OCI Database with PostgreSQL unterstützt nur In-Place-Tablespaces.
-
Da der Admin-Benutzer des OCI Database with PostgreSQL-Datenbanksystems keine SUPERUSER-Berechtigungen, NOSUPERUSER, NOREPLICTION usw. hat, muss er aus den
CREATE USER
-Anweisungen im Dump entfernt werden.Nehmen Sie die erforderlichen Änderungen in der globalen Dumpdatei vor, um alle Befehle zu entfernen, die SUPERUSER-Berechtigungen benötigen. Beispiel:
ALTER ROLE/USER test WITH NOSUPERUSER NOINHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'test';
Sollte geändert werden in:
ALTER ROLE/USER test WITH LOGIN PASSWORD 'test';
-
Stellen Sie den globalen Dump mit dem OCI Database with PostgreSQL-Admin-Benutzer in dem OCI Database with PostgreSQL-Datenbanksystem wieder her, um alle Rollen/Benutzer zu erstellen:
/usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <all_roles>.sql
-h
: Ziel-OCI Database with PostgreSQL-Datenbanksystem-IP. Anweisungen zum Suchen der IP-Adresse eines Datenbanksystems finden Sie unter Details zu einem Datenbanksystem abrufen.
-
Schreiben Sie die Nur-Schema-Datenbank-Dumps zurück:
/usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_schema_dump>.sql
Wiederholen Sie diesen Vorgang für Datenbanken db_2 und db_3.
Hinweis
Beheben Sie alle Fehler mit Berechtigungen oder Objektunstimmigkeiten, bevor Sie fortfahren. -
Schreiben Sie die Data-Only-Datenbank-Dumps zurück:
/usr/lib/postgresql/bin/psql -U psql -d postgres -h <IP_of_Target_Database_System> -f <db_1_data_dump>.sql
Wiederholen Sie diesen Vorgang für Datenbanken db_2 und db_3.
- Prüfen Sie die Zeilenanzahl aller Tabellen anhand der Quelldatenbank.
- Stellen Sie sicher, dass alle Berechtigungsstufen des Quelldatenbanksystems genau im OCI Database with PostgreSQL-Datenbanksystem widergespiegelt werden.
- Legen Sie Kennwörter für die Benutzer fest, die im OCI Database with PostgreSQL-Datenbanksystem erstellt wurden.
-
Führen Sie
VACUUM ANALYZE
für jede Datenbank oder einzelne Tabellen aus, um die Statistiken der Datenbanken zu aktualisieren. Mit diesem Befehl kann der Abfrageplaner PostgreSQL optimierte Abfragepläne erstellen, was zu einer besseren Performance führt. Um den Abschluss vonVACUUM ANALYZE
zu beschleunigen, wird empfohlen,maintenance_work_mem
in der PSQL-Session zu erhöhen.VACUUM ANALYZE
kann auch in separaten Sessions parallel ausgeführt werden, um die Abschlusszeit zu verkürzen.SET maintenance_work_mem = '<a_few_gigabytes_depending_on_shape>';
VACUUM ANALYZE <db_1>;
Wiederholen Sie diesen Vorgang für Datenbanken db_2 und db_3.
Hinweis
Es wird empfohlen,VACUUM ANALYZE
undREINDEX
regelmäßig für aufgeblähte Tabellen und Indizes auszuführen, um die Performance des Datenbanksystems aufrechtzuerhalten. Führen Sie diesen Vorgang außerhalb der Hauptzeiten aus, um Auswirkungen auf Anwendungen zu vermeiden.
GoldenGate verwenden
Mit GoldenGate können Sie die Replikation von einer PostgreSQL-Quelldatenbank in eine OCI Database with PostgreSQL-Datenbanksystem einrichten.
Die folgenden Schritte umfassen die Konfiguration von Quelle, Ziel und GoldenGate, um Datenbanken synchron zu halten. Sie können jederzeit und ohne Ausfallzeiten auf OCI Database with PostgreSQL umstellen, nachdem der Prozess erfolgreich abgeschlossen wurde.
Voraussetzungen
Um GoldenGate zu verwenden, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Prüfen Sie, ob die erforderlichen IAM-Ressourcen und das OCI-Netzwerk vorhanden sind. Weitere Informationen finden Sie unter Erste Schritte mit OCI Database with PostgreSQL.
-
Erstellen Sie ein Datenbanksystem, das als Ziel für die Replikation GoldenGate verwendet werden kann.
- Erstellen Sie Compute-Instanzen, um den PostgreSQL-Client zu hosten, der eine Verbindung zu den Quell- und Zieldatenbanksystemen herstellen kann. Wenn Sie die Instanzen erstellen:
-
Laden Sie das SSH-Schlüsselpaar herunter.
Achtung
Jeder, der Zugriff auf den Private Key hat, kann sich bei der Instanz anmelden. Speichern Sie den Private Key an einem sicheren Speicherort. - Wählen Sie das VCN und das private Subnetz aus, die beim Erstellen des Datenbanksystems verwendet werden.
- Installieren Sie eine Version des PostgreSQL-Clients, die mit der Version PostgreSQL des Datenbanksystems kompatibel ist. Befolgen Sie dazu die Anweisungen unter https://www.postgresql.org/download/.
-
Quelldatenbank vorbereiten
Quelldatenbanken müssen die Benutzer- und Konfigurationsanforderungen erfüllen, damit GoldenGate Daten extrahieren und replizieren kann.
Benutzeranforderungen
GoldenGate-Prozesse erfordern einen Datenbankbenutzer, der Quelldaten erfassen und an OCI Database with PostgreSQL übermitteln kann. Es wird empfohlen, einen dedizierten PostgreSQL-Datenbankbenutzer für GoldenGate Extract und GoldenGate Replicat zu erstellen. Weitere Informationen zu Datenbankbenutzern und GoldenGate finden Sie unter Datenbankberechtigungen für Oracle GoldenGate für PostgreSQL.
Konfigurationsanforderungen
Jede Quelldatenbank muss für den Extraktionsprozess GoldenGate konfiguriert werden. Folgende Parameter mit ihren Werten für jede Quelldatenbank sind erforderlich:
listen_addresses
: Für die Remotekonnektivität eines Extract- oder Replicats legen Sie"listen_addresses = * "
fest, um die Remote-Datenbankkonnektivität zu ermöglichen.wal_level
: Das Write-Ahead-Logging in der Quelldatenbank muss auflogical
gesetzt sein. Dadurch werden Informationen hinzugefügt, die zur Unterstützung der Dekodierung von Transaktionsdatensätzen erforderlich sind.max_replication_slots
: Die Anzahl der maximalen Replikationsslots muss so festgelegt werden, dass ein offener Slot pro GoldenGate Extract berücksichtigt wird. Im Allgemeinen ist nicht mehr als ein GoldenGate Extract pro Datenbank erforderlich.Hinweis
Wenn die Quelldatenbank bereits die native Replikation PostgreSQL und alle verfügbaren Replikationsslots verwendet, erhöhen Sie den Wert, um die Registrierung eines GoldenGate-Extracts zuzulassen.max_wal_senders
: Legen Sie den maximalen Wert für Write-Ahead-Sender so fest, dass er mit dem maximalen Wert für Replikations-Slots übereinstimmt.track_commit_timestamp
: Optional können Commit-Zeitstempel im Write-Ahead-Log aktiviert werden. Wenn diese Option gleichzeitig aktiviert ist, dass das logische Write-Ahead-Logging aktiviert ist, werden DML-Commit-Datensätze ab diesem Zeitpunkt mit dem richtigen Zeitstempelwert erfasst. Andernfalls weist der erste von GoldenGate erfasste Datensatz einen falschen Commit-Zeitstempel auf.
Um Community PostgreSQL als Quelldatenbank zu verwenden, kann der Benutzer Konfigurationsänderungen in der Datei postgresql.conf
vornehmen und die Datenbank neu starten, damit die Änderungen wirksam werden:
listen_addresses = *
wal_level = logical
max_replication_slots = 1 (min required for GG)
max_wal_senders = 1 (min required for GG)
track_commit_timestamp = on
In Amazon Aurora PostgreSQL werden Datenbankeinstellungen mithilfe von Parametergruppen geändert. Informationen zum Bearbeiten von Datenbankeinstellungen in einer neuen Parametergruppe und zum Zuweisen zu einer Datenbankinstanz finden Sie in der Amazon AWS-Dokumentation.
Stellen Sie sicher, dass die Konfigurationsanforderungen der Datenbank erfüllt sind, indem Sie die Einstellungen in der der Instanz zugewiesenen Parametergruppe prüfen.
Die Einstellung wal_level
für Amazon Aurora ist mit dem Parameter rds.logical_replication
konfiguriert. Setzen Sie rds.logical_replication
auf 1
, um die Datenbank als Quelle für GoldenGate Extract zu verwenden.
Der Datenbankbenutzer, der für die Migration verwendet wird, muss Replikationsberechtigungen haben. Erteilen Sie dem Benutzer im Quellsystem von Amazon Aurora Berechtigungen, indem Sie Folgendes verwenden:
grant replication to <migration-user>;
In Amazon RDS für PostgreSQL werden Datenbankeinstellungen mit Parametergruppen geändert. Informationen zum Bearbeiten von Datenbankeinstellungen in einer neuen Parametergruppe und zum Zuweisen zu einer Datenbankinstanz finden Sie in der Amazon AWS-Dokumentation.
Stellen Sie sicher, dass die Konfigurationsanforderungen der Datenbank erfüllt sind, indem Sie die Einstellungen in der der Instanz zugewiesenen Parametergruppe prüfen.
Die Einstellung wal_level
für Amazon-Datenbankservices wird mit dem Parameter rds.logical_replication
konfiguriert. Setzen Sie rds.logical_replication
auf 1
, um die Datenbank als Quelle für GoldenGate Extract zu verwenden.
Der Datenbankbenutzer, der für die Migration verwendet wird, muss Replikationsberechtigungen haben. Erteilen Sie dem Benutzer im Amazon RDS-Quellsystem Berechtigungen wie folgt:
grant replication to <migration-user>;
In der Azure-Datenbank für PostgreSQL werden Datenbankeinstellungen mit Serverparametern für die Datenbankinstanz geändert. Informationen zum Bearbeiten von Datenbankeinstellungen finden Sie in der Dokumentation zur Azure-Datenbank für PostgreSQL.
Stellen Sie sicher, dass die Konfigurationsanforderungen der Datenbank erfüllt sind, indem Sie die Einstellungen in der Quellinstanz prüfen.
Wenn Sie GoldenGate für einen PostgreSQL-Extrakt für eine Azure-Datenbank für PostgreSQL-Datenbank konfigurieren, muss wal_level
aktiviert und auf LOGICAL
gesetzt sein.
Der Datenbankbenutzer, der für die Migration verwendet wird, muss Replikationsberechtigungen haben. Erteilen Sie dem Benutzer im Quellsystem Berechtigungen wie folgt:
ALTER ROLE <migration-user> WITH REPLICATION;
Speicherabzug des Quelldatenbankschemas erstellen
Testen Sie die Konnektivität von der Compute-Instanz zum Quelldatenbanksystem, und geben Sie dann das Schema der Quelldatenbank mit dem folgenden Befehl aus:
/<path-to-binary>/pg_dump -U <user-to-take-dump> -h <IP-of-source-DB> -s -E 'UTF8' -d <source-DB-name> -f schema_only.sql
-U
: Benutzer, der den Dump erstellt-h
: Hostadresse der Quelldatenbank-s
: Nur Dump-Schema, keine Daten-E
: Die Clientcodierung der Dumpdatei auf UTF-8 setzen-d
: Datenbank für Dump-f
: O/p-Datei zum Dump des Datenbankschemas
Dieses Schema wird beim Vorbereiten des Zieldatenbanksystems verwendet. Weitere Informationen zu pg_dump und OCI Database with PostgreSQL finden Sie unter PostgreSQL-Utilitys wie pg_dump verwenden.
Zieldatenbanksystem vorbereiten
Stellen Sie sicher, dass die Voraussetzungen für die Verwendung von GoldenGate zum Replizieren von Daten in OCI Database with PostgreSQL erfüllt sind, dass die Quelldatenbank vorbereitet ist und das Schema der Quelldatenbank dann mit dem folgenden Befehl in das OCI Database with PostgreSQL-Ziel zurückgeschrieben wird:
/<path-to-binary>/psql -U <user-to-load-dump> -d <target-DB-name> -h <Private_endpoint_of_target_database_system> -f schema_only.sql
-U
: Benutzer stellt den Dump wieder her-h
: Hostadresse der Zieldatenbank-d
: Datenbank für Dump-f
: O/p-Datei zum Dump des Datenbankschemas
Weitere Informationen zu psql
und OCI Database with PostgreSQL finden Sie unter Utilties PostgreSQL wie pg_dump verwenden.
Weitere Informationen zur Verwendung einer Instanz für die Verbindung zu einem Datenbanksystem finden Sie unter Verbindung zu einer Datenbank herstellen.
GoldenGate für Replikation verwenden
Führen Sie die folgenden Schritte aus, um GoldenGate für die Verwendung mit OCI Database with PostgreSQL einzurichten. Verwenden Sie das Compartment, das das OCI Database with PostgreSQL-Zieldatenbanksystem enthält.
- Erstellen Sie ein Deployment, und wählen Sie PostgreSQL als Technologie aus.
- Erstellen Sie eine Quellverbindung basierend auf der Quelldatenbank und der Testkonnektivität.
-
Erstellen Sie eine PostgreSQL-Serverzielverbindung und eine Testverbindung.
Hinweis
Wählen Sie für die Netzwerkkonnektivität Dedizierter Endpunkt als Trafficroutingmethode aus. - Weisen Sie dem Deployment sowohl Quell- als auch Zielverbindungen zu.
- Fügen Sie einen Extract für PostgreSQL zum Deployment hinzu, der für die Quellverbindung ausgeführt werden soll, und extrahieren oder erfassen Sie Daten.
- Aktivieren Sie das zusätzliche Logging auf Tabellenebene für die Quelldatenbank. Verwenden Sie den Schemanamen, der beim Dumping des Quelldatenbankschemas erstellt wurde. Weitere Informationen finden Sie im Schritt Zusätzliches Logging aktivieren unter Extract für PostgreSQL hinzufügen: Bevor Sie beginnen.
- Fügen Sie einen Initial Load Extract (INI) hinzu.
- Geben Sie einen Trailnamen an. Beispiel:
xx
. Diese Datei enthält die Änderungen, die in der Quelldatenbank vorgenommen werden. -
Stellen Sie auf der Seite Parameterdatei sicher, dass Folgendes in der Datei enthalten ist:
exttrail xx INITIALLOADOPTIONS USESNAPSHOT TABLE *.*;
INITIALLOADOPTIONS
muss hinzugefügt werden, um einen konsistenten Snapshot der Datenbank sicherzustellen, nachdem die erstmalige Ladeextraktion mit der LSN-Nummer abgeschlossen wurde. - Wählen Sie Erstellen und ausführen aus.
- Überwachen Sie den Prozess bis zum Abschluss, und prüfen Sie dann die LSN-Nummer in der Berichtsdatei. Zeichnen Sie die LSN-Nummer für die zukünftige Verwendung auf.
- Geben Sie einen Trailnamen an. Beispiel:
- Fügen Sie dem Deployment einen weiteren Extract hinzu. Wählen Sie diesmal Change Data Capture Extract (CDC) als Extrakttyp aus.
- Wählen Sie unter Begin die Option None (Keine).
- Geben Sie einen Trailnamen an, z.B.
yy
. -
Stellen Sie auf der Seite Parameterdatei sicher, dass Folgendes in der Datei enthalten ist:
exttrail yy TABLE public.*;
INITIALLOADOPTIONS
muss hinzugefügt werden, um einen konsistenten Snapshot der Datenbank sicherzustellen, nachdem die erstmalige Ladeextraktion mit der LSN-Nummer abgeschlossen wurde. - Wählen Sie Erstellen. Führen Sie den Export noch nicht aus.
- Wählen Sie auf der Seite "Deployment" im Menü "Aktion" der neuen CDC die Option Mit Option starten aus.
- Wählen Sie unter Startpunkt die Option Bei CSN aus
- Geben Sie unter CSN die LSN-Nummer aus dem anfänglichen Export ein, und wählen Sie Start aus. Transaktionen in der Quelldatenbank werden erfasst und auf der Registerkarte Statistiken des CDC-Extrakts angezeigt.
Hinweis
Bisher haben wir nur mit der Quelldatenbank gearbeitet. Der Start von Initial Load Extract und CDC zeichnet Änderungen in der Quelle in den jeweiligen Traildateien im Deployment auf. Der Replicat-Prozess liefert die Daten aus diesen Traildateien an das Ziel-OCI Database with PostgreSQL. - Fügen Sie ein Replicat für PostgreSQL zum Deployment hinzu. Dieses Replicat gilt für den erstmaligen Ladeextrakt (REINI).
- Checkpoint-Tabelle erstellen Weitere Informationen finden Sie unter Replikat für PostgreSQL hinzufügen: Bevor Sie beginnen.
- Geben Sie beim Erstellen des Replicats den Trailnamen aus dem INI an, z.B.
xx
. - Geben Sie die Checkpoint-Tabelle für das Replicat an.
-
Stellen Sie auf der Seite Parameterdatei sicher, dass Folgendes in der Datei enthalten ist:
MAP public.* TARGET public.*;
- Wählen Sie Erstellen und ausführen aus. Prüfen Sie, ob das Laden von Daten in das OCI Database with PostgreSQL-Datenbanksystem gestartet wurde.
- Fügen Sie ein Replicat für PostgreSQL zum Deployment hinzu. Dieses Replicat gilt für den Change Data Capture Extract (RECDC).
- Geben Sie beim Erstellen des Replicats den Trailnamen aus dem CDC an. Beispiel:
yy
. - Geben Sie die Checkpoint-Tabelle für das Replicat an.
-
Stellen Sie auf der Seite Parameterdatei sicher, dass Folgendes in der Datei enthalten ist:
MAP public.* TARGET public.*;
- Wählen Sie Erstellen. Führen Sie den RECDC erst aus, wenn die REINI abgeschlossen ist. Die GoldenGate muss zwei Extract-Prozesse und zwei Replicat-Prozesse enthalten.
- Wählen Sie auf der Deployment-Seite im Menü "Aktion" des neuen RECDC die Option Starten aus.
- Geben Sie beim Erstellen des Replicats den Trailnamen aus dem CDC an. Beispiel:
- Prüfen Sie den Status im Ziel-OCI Database with PostgreSQL-Datenbanksystem, und stimmen Sie die Datensatzanzahl und -werte ab.