OCI Database with PostgreSQL bereitstellen und mit OCI von On-Premises mit minimaler Ausfallzeit migrieren GoldenGate
Einführung
Oracle Cloud Infrastructure Database mit PostgreSQL (OCI Database with PostgreSQL) ist ein vollständig verwalteter PostgreSQL-kompatibler Service, der 3-mal höhere Performance durch datenbankoptimierten Speicher bietet, halbe Kosten im Vergleich zu Amazon Web Service (AWS), automatisierte Backups, High Availability, geplante Wartung, dynamische Speicherskalierung, vertikale Skalierung usw. bietet.
Beispiel: Geschäftskontinuität
Der Service OCI Database with PostgreSQL bietet ein Service Level Agreement (SLA) mit 99,99% Betriebszeit, ein Recovery Time Objective (RTO) mit weniger als 2 Minuten für Datenbanksysteme mit mehreren Knoten und ein Recovery Point Objective (RPO) mit 0 ohne Datenverlust. Bei Datenbanksystemen mit einem Knoten in einzelnen Availability-Domains (AD)-Regionen bietet der Service ein SLA für 99,9% Betriebszeit, ein RTO von weniger als 20 Minuten und ein RPO von 0.
OCI Database with PostgreSQL nutzt OCI Block Volumes, um Benutzerdaten zu speichern. Es gelten also die gleichen Dauerhaftigkeits-, Sicherheits- und Leistungsgarantien. Weitere Informationen finden Sie unter Überblick über OCI Database with PostgreSQL und First Principles: PostgreSQL für die Cloud optimieren.
Dieses Tutorial konzentriert sich auf die Migration von einer On-Premises-Datenbank PostgreSQL zu OCI Database with PostgreSQL mit OCI GoldenGate mit minimaler Ausfallzeit.
Umgebungsdetails:
- Benutzername der OCI-GoldenGate-Konsole:
oggadmin
. - OCI GoldenGate-Version:
23ai
. - OCI Database with PostgreSQL-Admin-Name:
admin
.
On-Premise-Quelle | OCI-Ziel | |
---|---|---|
DB-Name | product_inventory | Zieldatenbank |
Benutzer | Auftragsmanager | admin |
Schema | data_analyze | data_analyze |
DB-Version | 15,12 | 15,6 |
Ziele
-
OCI Database with PostgreSQL-Datenbanksystem erstellen
-
OCI GoldenGate-Deployment bereitstellen.
-
On-Premise-Datenbank und OCI-Datenbankverbindung beim Deployment erstellen und Verbindungen zuweisen.
-
Quelldatenbankserver und -datenbank vorbereiten
-
Extrakt für erstmaliges Laden erstellen.
-
Sichern Sie Metadaten der Quelldatenbank mit dem Utility
pg_dump
. -
Importieren Sie Metadaten in OCI Database with PostgreSQL.
-
Erstellen Sie das anfängliche Laden von Replicat mit der Traildatei.
-
Erstellen Sie einen Online- oder Change Data Capture-(CDC-)Extract, der zur ersten Logsequenznummer (LSN) für die Erfassung wechselt.
-
Online-Replicat mit CDC-Extrakt-Traildatei erstellen.
Aufgabe 1: OCI Database with PostgreSQL-Datenbanksystem bereitstellen
In diesen Aufgaben wird erläutert, wie Sie ein Datenbanksystem erstellen. Vor dem Provisioning sind die folgenden Policys erforderlich. Weitere Informationen finden Sie unter Datenbanksystem verwalten.
-
Fügen Sie die folgenden Oracle Cloud Infrastructure Identity and Access Management-(IAM-)Policys hinzu.
Allow group <postgresql-admin-group> to read compartments in tenancy Allow group <postgresql-admin-group> to manage postgres-db-systems in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-backups in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read postgres-work-requests in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage postgres-configuration in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to manage virtual-network-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read secret-family in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read vaults in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to read metrics in [ tenancy | compartment <compartment_name> | compartment id <compartment_OCID> ] Allow group <postgresql-admin-group> to use tag-namespaces in tenancy
-
Erstellen Sie einen Vault für das Datenbankadministratorkennwort, oder wählen Sie ihn aus. Weitere Informationen finden Sie unter Vaults verwalten.
-
Erstellen Sie einen Schlüssel für das Datenbankkennwort. Weitere Informationen finden Sie unter Schlüssel verwalten.
-
Erstellen Sie ein Secret für das Datenbankkennwort. Weitere Informationen finden Sie unter Vault-Secrets verwalten.
-
Melden Sie sich bei der OCI-Konsole an, navigieren Sie zu Datenbank, PostgreSQL, DB-Systeme, Neues Datenbanksystem erstellen, und klicken Sie auf Weiter.
-
Wählen Sie Hardwarekonfiguration.
-
Wählen Sie Virtuelles Cloud-Netzwerk und Subnetz aus, und geben Sie Zugangsdaten des Datenbanksystemadministrators ein. In diesem Beispiel lautet der Name Username admin.
Sobald die Erstellung abgeschlossen ist, zeigt das Datenbanksystem den Status Active an.
-
Führen Sie den folgenden Befehl aus, um die Verbindung zu OCI Database with PostgreSQL vom Compute Node zu prüfen.
-bash-4.2$ psql "sslmode=verify-full sslrootcert=c.pub host=<OCI DB server ip address> user=admin dbname=postgres" Password for user admin: psql (15.12, server 15.6) SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off) Type "help" for help. postgres=>
Aufgabe 2: OCI GoldenGate-Deployment für Migration erstellen
-
Navigieren Sie zur OCI-Konsole, navigieren Sie zu Oracle Database, GoldenGate, Deployments, und klicken Sie auf Deployment erstellen.
-
Geben Sie die erforderlichen Informationen in die folgenden Bilder ein, und wählen Sie PostgreSQL als Technologie auswählen aus.
-
Verwenden Sie unter Deployment konfigurieren
oggadmin
als Benutzername, um sich als Administrator bei der OCI-GoldenGate-Konsole anzumelden. -
Klicken Sie auf Erstellen, um die Erstellung und das Deployment zu starten. Sobald der Vorgang erfolgreich abgeschlossen wurde, wird der Status Active angezeigt.
Aufgabe 3: On-Premise-Datenbankverbindung, OCI-Datenbankverbindungen beim Deployment erstellen und Verbindungen zuweisen
OCI GoldenGate erfordert sowohl die Quell- als auch die Zieldatenbankverbindung und weist dem Deployment beide Verbindungen zu.
-
Quelldatenbankverbindung erstellen.
-
Klicken Sie auf den Deployment-Namen (
PG_Mig_deployment
), wählen Sie Verbindungen aus, und klicken Sie auf Verbindung erstellen. Geben Sie die erforderlichen Informationen wie in den folgenden Bildern dargestellt ein. -
Wählen Sie Type als PostgreSQL Server, Security Protocol als Plain aus, und klicken Sie auf Create.
-
-
Zieldatenbankverbindung erstellen.
-
Klicken Sie auf den Deployment-Namen, wählen Sie Verbindungen aus, und klicken Sie auf Verbindung erstellen. Geben Sie die erforderlichen Informationen wie in den folgenden Bildern dargestellt ein.
-
Wählen Sie Typ als OCI PostgreSQL aus.
-
Wählen Sie Sicherheitsprotokoll als TLS und SSL-Modus als Erforderlich.
-
-
Weisen Sie die Datenbankverbindungen dem Deployment zu.
-
Gehen Sie zu Deployments, klicken Sie auf den Deployment-Namen (
PG_Mig_deployment
), wählen Sie Verbindungen zuweisen aus, und klicken Sie auf Verbindung zuweisen. -
Geben Sie die erforderlichen Informationen wie in den folgenden Bildern dargestellt ein.
Nach Abschluss der Verbindung wird der Status Active angezeigt.
-
Aufgabe 4: Quelldatenbankserver und -datenbank vorbereiten
-
Installieren Sie das Package
postgresql15-contrib
.OCI GoldenGate erfordert das Package
postgresql14-contrib
auf dem Quelldatenbankserver, um aus der PostgreSQL-Serverdatenbank zu extrahieren. Package kann mit dem Befehlsudo yum install postgresql15-contrib
installiert werden (Quelldatenbankversion ist 15).Hinweis: Es wird empfohlen, dass die Version der Clientbibliotheken mit der Datenbankversion PostgreSQL übereinstimmt. Clientversionen unter 10 werden nicht unterstützt.
-
Bereiten Sie die Erstellung von Datenbankbenutzern in der Quelldatenbank und den erforderlichen Berechtigungen vor.
product_inventory=# create user ggreplication with password 'abc1234'; ERROR: role "ggreplication" already exists product_inventory=# product_inventory=# select current_database(); current_database ------------------- product_inventory (1 row) product_inventory=# GRANT CONNECT ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# ALTER USER ggreplication WITH REPLICATION; ALTER ROLE product_inventory=# ALTER USER ggreplication WITH SUPERUSER; ALTER ROLE product_inventory=# GRANT USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT CREATE ON DATABASE product_inventory TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT CREATE, USAGE ON SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA ordermanager TO ggreplication; GRANT product_inventory=# GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA data_analyze TO ggreplication; GRANT product_inventory=#
Weitere Informationen zum spezifischen Zweck der einzelnen Berechtigungen finden Sie unter Datenbankbenutzer und -berechtigungen für PostgreSQL vorbereiten.
-
Im Folgenden werden die Parameter in der Datenbankkonfigurationsdatei PostgreSQL aufgeführt. Der Speicherort der Konfigurationsdatei ist
$PGDATA/postgresql.conf
.wal_level = logical **# set to logical for Capture** max_replication_slots = 1 **# max number of replication and one slot for Extract/Client** max_wal_senders = 1 **# one sender per max repl slot** track_commit_timestamp = on **# optional, correlates tx commit time** with begin tx log record (useful for # timestamp- based positioning)
Hinweis:
- Nachdem Sie eine der oben genannten Änderungen vorgenommen haben, starten Sie die Datenbank neu.
- Die OCI-GoldenGate-Replikation unterstützte PostgreSQL-Datentypen und die Beschränkung der unterstützten Datentypen, unterstützten Objekte und Vorgänge können aus der Dokumentation geprüft werden. Weitere Informationen finden Sie unter Datenbanken vorbereiten.
Aufgabe 5: Extrakt für erstmaliges Laden erstellen
Sie müssen den Extract für das erstmalige Laden erstellen. Dadurch wird die LSN im Berichtsabschnitt "OCI GoldenGate Extract" bereitgestellt.
-
Navigieren Sie zur OCI-Konsole, navigieren Sie zu Datenbank, GoldenGate und Deployments, und klicken Sie auf den in Aufgabe 2 erstellten Deployment-Namen.
-
Klicken Sie auf Konsole starten, und geben Sie die Zugangsdaten ein.
-
Gehen Sie zu DB-Verbindungen, und zeigen Sie dabei die zugewiesene Quelle und die OCI Database with PostgreSQL-Datenbankverbindungen an, und prüfen Sie die Konnektivitätsprüfung.
Erfolgreiche Verbindung ist gut, um den ersten Ladevorgang in dieser Phase zu starten.
-
Navigieren Sie zur OCI-GoldenGate-Konsole, navigieren Sie zu Extrahieren, und klicken Sie auf +.
Nachdem der Extract zum ersten Laden gestoppt wurde, prüfen Sie die OCI-Berichtsdateien GoldenGate, notieren Sie sich die LSN-Details, und halten Sie sie für die Verwendung in Aufgabe 9 bereit.
Aufgabe 6: Metadaten der Quelldatenbank mit dem Befehl pg_dump
sichern
Der Befehl pg_dump
wird nur zum Dump der Metadaten der Quelldatenbank product_inventory
verwendet.
pg_dump -h localhost -U ggreplication -d product_inventory -F c -v -s --file=/tmp/exp_source_db.dump
Aufgabe 7: Metadaten mit PostgreSQLOCI Database with PostgreSQL in OCI Database importieren
Verwenden Sie die Binärdatei pg_restore, um sie mit PostgreSQLOCI Database with PostgreSQL in die Ziel-OCI-Datenbank zu importieren. Hier lautet der OCI-Datenbankname targetdb
.
Führen Sie den Restore-Befehl auf dem OCI Compute-Knoten aus, auf dem der Verbindungsbefehl in Aufgabe 1.8 erfolgreich ausgeführt wurde.
pg_restore -h <OCI IP address> -U admin -d targetdb -v exp_source_db.dump
postgres=> \c targetdb
psql (15.12, server 15.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, compression: off)
You are now connected to database "targetdb" as user "admin".
targetdb=> \dn
List of schemas
Name | Owner
--------------+-------------------
data_analyze | admin
ordermanager | admin
public | pg_database_owner
(3 rows)
Hinweis: Mit der Abfrage
select table_name,table_schema from information_schema.tables where table_type='BASE TABLE' and table_schema in ('data_analyze','ordermanager') order by table_schema,table_name;
können Sie die Tabellennamen nach dem Metadatenimport auf dem Ziel prüfen.
Aufgabe 8: Replicat zum erstmaligen Laden mit Traildatei erstellen
-
Navigieren Sie zur OCI-GoldenGate-Konsole, navigieren Sie zu Replikate, und klicken Sie auf +, um Replicat zu erstellen.
-
Klicken Sie auf Erstellen und ausführen, um das erstmalige Laden von Replicate zu starten. Prüfen Sie nach Abschluss die Anzahl der Tabellenzeilen.
-
Gehen Sie zu Berichte, und prüfen Sie das erstmalige Laden von Replicate-Berichten. Anzahl der wenigen Tabellenzeilen in beiden Datenbanken prüfen
Aufgabe 9: CDC-Extraktion erstellen, die sich in die erste LSN für die Erfassung ändert
"CDC-Extraktion" ist ein Online-Extrakt, mit dem laufende Änderungen an der vorhandenen Datenbank erfasst werden. CDC-Extraktion beginnt mit der Erfassung anhand der erfassten LSN-Nummer.
-
Navigieren Sie zur OCI-GoldenGate-Konsole, navigieren Sie zu Extracts, klicken Sie auf +, und geben Sie die erforderlichen Informationen ein, wie in den folgenden Bildern dargestellt.
-
Nachdem CDC registriert und erstellt wurde, klicken Sie auf Mit Optionen beginnen, um das Lesen aus einer bestimmten LSN anzuweisen, die in Aufgabe 5 erfasst wird.
Nach einiger Zeit können wir eine Verzögerung von null Sekunden bei CDC Extract sehen.
Aufgabe 10: Online-Replikat mit CDC-Extrakttraildatei erstellen
-
Gehen Sie zur OCI-GoldenGate-Konsole, navigieren Sie zu Replikate, klicken Sie auf +, und geben Sie die erforderlichen Informationen ein, wie in den folgenden Bildern dargestellt.
-
Klicken Sie auf Create and Run, nachdem Sie den Befehl
MAP
geändert haben.Wir können eine Verzögerung von null Sekunden bei Online Replicat nach einiger Zeit sehen.
Verifizierung
Führen Sie die folgenden Abfragen aus, um sie in die Quelltabelle einzufügen, die data_analyze.table3
in der Tabelle data_analyze.table3
der Zieldatenbank repliziert.
Anzahl und Daten der Zielseitenverifizierungstabelle.
Verwandte Links
-
Datenbankbenutzer und -berechtigungen für PostgreSQL vorbereiten
-
Präzise Instanziierung zwischen PostgreSQL-Umgebungen mit pg_dump
Bestätigung
- Autor – Sivakrishna Burle (Senior Cloud Engineer, Oracle North America Cloud Services – NACIE)
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Provision OCI Database with PostgreSQL and Migrate from On-Premises with Minimum Downtime using OCI GoldenGate
G39910-02
Copyright ©2025, Oracle and/or its affiliates.