Migrieren Sie Amazon RDS for Oracle zu Amazon RDS for PostgreSQL mit AWS SCT und AWS DMS mithilfe von AWS CLI und AWS CloudFormation - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migrieren Sie Amazon RDS for Oracle zu Amazon RDS for PostgreSQL mit AWS SCT und AWS DMS mithilfe von AWS CLI und AWS CloudFormation

Erstellt von Pinesh Singal (AWS)

Umgebung: PoC oder Pilotprojekt

Quelle: Amazon RDS for Oracle

Ziel: Amazon RDS for PostgreSQL

R-Typ: Re-Architect

Arbeitslast: Oracle; Open Source

Technologien: Migration; Datenbanken

AWS-Dienste: AWS DMS; Amazon RDS; AWS SCT

Übersicht

Dieses Muster zeigt, wie eine Amazon Relational Database Service (Amazon RDS) für Oracle-DB-Instance mit mehreren Terabyte mithilfe der AWS-Befehlszeilenschnittstelle (AWS CLI) zu einer Amazon RDS for PostgreSQL PostgreSQL-DB-Instance migriert wird. Dieser Ansatz bietet minimale Ausfallzeiten und erfordert keine Anmeldung bei der AWS-Managementkonsole.

Dieses Muster hilft, manuelle Konfigurationen und individuelle Migrationen mithilfe der Konsolen AWS Schema Conversion Tool (AWS SCT) und AWS Database Migration Service (AWS DMS) zu vermeiden. Die Lösung richtet eine einmalige Konfiguration für mehrere Datenbanken ein und führt die Migrationen mithilfe von AWS SCT und AWS DMS auf der AWS-CLI durch.

Das Muster verwendet AWS SCT, um Datenbankschemaobjekte von Amazon RDS for Oracle nach Amazon RDS for PostgreSQL zu konvertieren, und verwendet dann AWS DMS, um die Daten zu migrieren. Mithilfe von Python-Skripts in AWS CLI erstellen Sie AWS SCT-Objekte und AWS DMS-Aufgaben mit einer CloudFormation AWS-Vorlage.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto.

  • Eine bestehende Amazon RDS for Oracle DB-Instance.

  • Eine bestehende Amazon RDS for PostgreSQL PostgreSQL-DB-Instance. 

  • Eine Amazon EC2 EC2-Instance oder ein lokaler Computer mit Windows- oder Linux-Betriebssystem zum Ausführen von Skripten.

  • Ein Verständnis der folgenden Arten von AWS DMS-Migrationsaufgaben:full-load,cdc,full-load-and-cdc.  Weitere Informationen finden Sie in der AWS DMS-Dokumentation unter Aufgabe erstellen

  • AWS SCT, installiert und konfiguriert mit Java Database Connectivity (JDBC) -Treibern für Oracle- und PostgreSQL-Datenbank-Engines. Weitere Informationen finden Sie unter Installation von AWS SCT und Installation der erforderlichen Datenbanktreiber in der AWS SCT-Dokumentation. 

  • Die AWSSchemaConversionToolBatch.jar Datei aus dem installierten AWS SCT-Ordner wurde in Ihr Arbeitsverzeichnis kopiert.

  • Die cli-sct-dms-cft.zip Datei (angehängt), heruntergeladen und in Ihr Arbeitsverzeichnis extrahiert.

Einschränkungen

  • Die Mindestanforderungen für Ihre Amazon RDS for Oracle DB-Quell-Instance sind: 

    • Oracle-Versionen 12c (v12.1.0.2, v12.2.0.1), 18c (v18.0.0.0) und 19c (v19.0.0.0) für die Editionen Enterprise, Standard, Standard One und Standard Two.

    • Obwohl Amazon RDS Oracle 18c (v18.0.0.0) unterstützt, ist diese Version veraltet, da Oracle nach diesem Datum keine Patches mehr für 18c bereitstellt. end-of-support Weitere Informationen finden Sie unter Oracle on Amazon RDS in der Amazon RDS-Dokumentation.

    • Amazon RDS for Oracle 11g wird nicht mehr unterstützt.

  • Die Mindestanforderungen für Ihre Amazon RDS for PostgreSQL PostgreSQL-DB-Ziel-Instance sind: 

    • PostgreSQL-Versionen 9 (Versionen 9.5 und 9.6), 10.x, 11.x, 12.x und 13.x

Produktversionen

  • Amazon RDS for Oracle DB-Instance Version 12.1.0.2 und höher

  • Amazon RDS for PostgreSQL DB-Instance Version 11.5 und höher

  • AWS-CLI Version 2 

  • Die neueste Version von AWS SCT

  • Die neueste Version von Python 3

Architektur

Quelltechnologie-Stack

  • Amazon RDS für Oracle

Zieltechnologie-Stack

  • Amazon RDS für PostgreSQL

Quell- und Zielarchitektur

Das folgende Diagramm zeigt die Migration einer Amazon RDS for Oracle DB-Instance zu einer Amazon RDS for PostgreSQL DB-Instance mithilfe von AWS DMS- und Python-Skripten.

Migration der RDS für Oracle-DB-Instance zur RDS for PostgreSQL-DB-Instance mithilfe von AWS DMS und Python.

Das Diagramm zeigt den folgenden Migrationsablauf:

  1. Das Python-Skript verwendet AWS SCT, um eine Verbindung zu den Quell- und Ziel-DB-Instances herzustellen.

  2. Der Benutzer startet AWS SCT mit dem Python-Skript, konvertiert den Oracle-Code in PostgreSQL-Code und führt ihn auf der Ziel-DB-Instance aus.

  3. Das Python-Skript erstellt AWS DMS-Replikationsaufgaben für die Quell- und Ziel-DB-Instances.

  4. Der Benutzer stellt Python-Skripte bereit, um die AWS DMS-Aufgaben zu starten, und stoppt die Aufgaben dann, nachdem die Datenmigration abgeschlossen ist.

Automatisierung und Skalierung

Sie können diese Migration automatisieren, indem Sie Ihrem Python-Skript zusätzliche Parameter und sicherheitsrelevante Änderungen für mehrere Funktionen in einem einzigen Programm hinzufügen. 

Tools

  • AWS Command Line Interface (AWS CLI) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.

  • AWS CloudFormation hilft Ihnen dabei, AWS-Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und Regionen hinweg zu verwalten. Dieses Muster konvertiert die .csv-Eingabedatei mithilfe eines Python-Skripts in eine .json-Eingabedatei. Die.json-Datei wird in AWS-CLI-Befehlen verwendet, um einen CloudFormation AWS-Stack zu erstellen, der mehrere AWS-DMS-Replikationsaufgaben mit Amazon-Ressourcennamen (ARNs), Migrationstypen, Aufgabeneinstellungen und Tabellenzuordnungen erstellt.

  • AWS Database Migration Service (AWS DMS) unterstützt Sie bei der Migration von Datenspeichern in die AWS-Cloud oder zwischen Kombinationen von Cloud- und lokalen Setups. Dieses Muster verwendet AWS DMS, um Aufgaben mit einem Python-Skript, das über die Befehlszeile ausgeführt wird, zu erstellen, zu starten und zu beenden und die AWS-Vorlage zu erstellen. CloudFormation

  • Das AWS Schema Conversion Tool (AWS SCT) unterstützt heterogene Datenbankmigrationen, indem das Quelldatenbankschema und ein Großteil des benutzerdefinierten Codes automatisch in ein Format konvertiert werden, das mit der Zieldatenbank kompatibel ist. Für dieses Muster ist die AWSSchemaConversionToolBatch.jar Datei aus dem installierten AWS SCT-Verzeichnis erforderlich.

Code

Die cli-sct-dms-cft.zip Datei (angehängt) enthält den vollständigen Quellcode für dieses Muster.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Konfigurieren Sie AWS SCT für die Ausführung über die AWS-CLI.

1. Konfigurieren Sie die Konfigurationsdetails der Quell- und Zielumgebung in der database_migration.txt Datei im folgenden Format:

#source_vendor,source_hostname,source_dbname,source_user,source_pwd,source_schema,source_port,source_sid,target_vendor,target_hostname,target_user,target_pwd,target_dbname,target_port ORACLE,myoracledb.cokmvis0v46q.us-east-1.rds.amazonaws.com,ORCL,orcl,orcl1234,orcl,1521,ORCL,POSTGRESQL,mypgdbinstance.cokmvis0v46q.us-east-1.rds.amazonaws.com,pguser,pgpassword,pgdb,5432

2. Ändern Sie die AWS SCT-Konfigurationsparameter gemäß Ihren Anforderungen in den folgenden Dateien: project_settings.xmlOracle_PG_Test_Batch.xml, undORACLE-orcl-to-POSTGRESQL.xml.

DBA

Führen Sie das Python-Skript run_aws_sct.py aus.

Führen Sie das run_aws_sct.py Python-Skript mit dem folgenden Befehl aus:

$ python run_aws_sct.py database_migration.txt

Das Python-Skript konvertiert die Datenbankobjekte von Oracle nach PostgreSQL und erstellt SQL-Dateien im PostgreSQL-Format. Das Skript erstellt auch die Database migration assessment report PDF-Datei, die Ihnen detaillierte Empfehlungen und Konvertierungsstatistiken für Datenbankobjekte bietet.

DBA

Erstellen Sie Objekte in Amazon RDS for PostgreSQL.

  1. Ändern Sie die von AWS SCT generierten SQL-Dateien manuell, falls erforderlich.

  2. Führen Sie die SQL-Dateien aus und erstellen Sie Objekte in Ihrer Amazon RDS for PostgreSQL PostgreSQL-DB-Instance.

DBA
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine AWS DMS-Replikations-Instance.

Melden Sie sich bei der AWS-Managementkonsole an, öffnen Sie die AWS DMS-Konsole und erstellen Sie eine Replikationsinstanz, die gemäß Ihren Anforderungen konfiguriert ist.

Weitere Informationen finden Sie unter Erstellen einer Replikationsinstanz in der AWS DMS-Dokumentation und Wie erstelle ich eine AWS DMS-Replikationsinstanz in der AWS-Supportdokumentation.

DBA

Erstellen Sie den Quellendpunkt.

Wählen Sie in der AWS DMS-Konsole Endpoints aus und erstellen Sie dann einen Quellendpunkt für die Oracle-Datenbank gemäß Ihren Anforderungen. 

Hinweis: Das zusätzliche Verbindungsattribut muss numberDataTypeScale einen -2 Wert haben.

Weitere Informationen finden Sie unter Quell- und Zielendpunkte erstellen in der AWS DMS-Dokumentation.

 

DBA

Erstellen Sie den Zielendpunkt.

Wählen Sie in der AWS DMS-Konsole Endpoints aus und erstellen Sie dann einen Zielendpunkt für die PostgreSQL-Datenbank gemäß Ihren Anforderungen.  

Weitere Informationen finden Sie unter Quell- und Zielendpunkte erstellen in der AWS DMS-Dokumentation.

DevOps Ingenieur

Konfigurieren Sie die AWS DMS-Replikationsdetails für die Ausführung über die AWS-CLI.

Konfigurieren Sie die AWS DMS-Quell- und Zielendpunkte sowie die Replikationsdetails in der dms-arn-list.txt Datei mit dem Quellendpunkt-ARN, dem Zielendpunkt-ARN und dem Replikationsinstanz-ARN mithilfe des folgenden Formats:

#sourceARN,targetARN,repARN arn:aws:dms:us-east-1:123456789012:endpoint:EH7AINRUDZ5GOYIY6HVMXECMCQ arn:aws:dms:us-east-1:123456789012:endpoint:HHJVUV57N7O3CQF4PJZKGIOYY5 arn:aws:dms:us-east-1:123456789012:rep:LL57N77AQQAHHJF4PJFHNEDZ5G
DBA

Führen Sie das Python-Skript dms-create-task .py aus, um die AWS DMS-Aufgaben zu erstellen.

1. Führen Sie das dms-create-task.py Python-Skript mit dem folgenden Befehl aus:

$ python dms-create-task.py database_migration.txt dms-arn-list.txt <cft-stack-name> <migration-type>

  • database_migration.txtist die Textdatei für die Datenbankmigration

  • dms-arn-list.txtist die ARN-Liste für AWS DMS

  • <cft-stack-name>ist der benutzerdefinierte CloudFormation AWS-Stack-Name

  • <migration-type>ist der Migrationstyp (Full-Load, CDC oder) full-load-and-cdc

2. Abhängig von Ihrem Migrationstyp können Sie die folgenden Befehle verwenden, um drei Arten von AWS DMS-Aufgaben zu erstellen:

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack cdc

  • $ python dms-create-task.py database_migration.txt dms-arn-list.txt dms-cli-cft-stack full-load-and-cdc

3. Der CloudFormation AWS-Stack und die AWS DMS-Aufgaben werden erstellt 

 

DBA

Prüfen Sie, ob die AWS DMS-Aufgaben bereit sind.

Überprüfen Sie in der AWS-Konsole im Abschnitt Status, ob Ihre AWS DMS-Aufgaben den Ready Status haben.

DBA
AufgabeBeschreibungErforderliche Fähigkeiten

Starten Sie die AWS DMS-Aufgaben.

Führen Sie das dms-start-task.py Python-Skript mit dem folgenden Befehl aus:

$ python dms-start-task.py start ‘<cdc-start-datetime>’

Hinweis: Das Startdatum und die Startzeit müssen im Datentypformat 'DD-MON-YYYY' oder 'YYYY-MM-DDTHH:MI:SS' timestamp angegeben werden (z. B. ‘01-Dec-2019’ oder‘2018-03-08T12:12:12’)

Sie können den Status der AWS DMS-Aufgaben auf der Registerkarte Tabellenstatistiken Ihrer Migrationsaufgaben auf der Seite Aufgaben der AWS DMS-Konsole überprüfen.

DBA

Validieren Sie die Daten.

  1. Nach Abschluss der Volllastmigration wird die Aufgabe kontinuierlich ausgeführt, um kontinuierliche Datenänderungen (CDC) zu gewährleisten.

  2. Wenn CDC abgeschlossen ist oder keine Änderungen mehr migriert werden müssen, überprüfen und validieren Sie die Ergebnisse und Daten der Migrationsaufgaben in Ihren Oracle- und PostgreSQL-Datenbanken.

  3. Sie können Ihre Daten überprüfen, indem Sie die Status- und Zählspalten (Validation stateValidation pendingValidation failed,Validation suspended,, undValidation details) auf der Registerkarte Tabellenstatistiken Ihrer Datenbankmigrationsaufgabe auf der Seite Aufgaben der AWS DMS-Konsole überprüfen. 

Weitere Informationen finden Sie unter AWS DMS-Datenvalidierung in der AWS DMS-Dokumentation.

DBA

Beenden Sie die AWS DMS-Aufgaben.

Führen Sie das Python-Skript mit dem folgenden Befehl aus:

$ python dms-start-task.py stop

Hinweis: AWS DMS-Aufgaben können je nach failed Validierungsstatus mit einem Status beendet werden. Weitere Informationen finden Sie in der Tabelle zur Fehlerbehebung im Abschnitt Zusätzliche Informationen.

DBA

Fehlerbehebung

ProblemLösung

Die Quell- und Zieltestverbindungen von AWS SCT schlagen fehl

Konfigurieren Sie die JDBC-Treiberversionen und die Regeln für den eingehenden Datenverkehr der VPC-Sicherheitsgruppe so, dass sie den eingehenden Datenverkehr akzeptieren.

Der Testlauf am Quell- oder Zielendpunkt schlägt fehl

Überprüfen Sie, ob sich die Endpunkteinstellungen und die Replikationsinstanz im Available Status befinden. Überprüfen Sie, ob der Status der Endpunktverbindung lautetSuccessful

Weitere Informationen finden Sie in der AWS-Support-Dokumentation unter Wie kann ich Verbindungsfehler bei AWS DMS-Endgeräten beheben?

Der Volllastlauf schlägt fehl

Überprüfen Sie, ob die Quell- und Zieldatenbanken übereinstimmende Datentypen und Größen haben. 

Weitere Informationen finden Sie unter Fehlerbehebung bei Migrationsaufgaben in AWS DMS in der AWS DMS-Dokumentation.

Fehler beim Validierungslauf

Prüfen Sie, ob die Tabelle einen Primärschlüssel hat, da Tabellen, die keine Primärschlüssel sind, nicht validiert werden.

Wenn die Tabelle einen Primärschlüssel enthält und Fehler auftreten, überprüfen Sie, ob das zusätzliche Verbindungsattribut im Quellendpunkt einen hatnumberDataTypeScale=-2.

Weitere Informationen finden Sie unter Zusätzliche Verbindungsattribute bei der Verwendung von Oracle als Quelle für AWS DMS und Problembehandlung in der AWS DMS-Dokumentation. OracleSettings

Zugehörige Ressourcen

Anlagen

Um auf zusätzliche Inhalte zuzugreifen, die mit diesem Dokument verknüpft sind, entpacken Sie die folgende Datei: attachment.zip