Welche Objekte kann ich mit einer AWS-DMS-Aufgabe migrieren?

Lesedauer: 6 Minute
0

Ich habe eine AWS Database Migration Service (AWS DMS)-Aufgabe, die nicht alle Datenbankschemaobjekte migriert. Welche Objekte migriert eine AWS-DMS-Aufgabe und wie migriere ich die verbleibenden Objekte?

Kurzbeschreibung

Wenn Ihre AWS-DMS-Aufgabe ein Objekt nicht migriert, liegt das möglicherweise daran, dass AWS-DMS-Aufgaben diese Art von Objekt nicht migrieren. AWS DMS erstellt eine Reihe von Objekten wie Tabellen und Primärschlüssel, aber keine Objekte, die nicht für die Migration von Daten aus der Quelle benötigt werden. Einige Beispiele für Objekte, die AWS DMS nicht erstellt, sind Sekundärindizes, Datenstandardwerte und Einschränkungen für Nicht-Primärschlüssel

Weitere Informationen zu den Objekten, die AWS DMS erstellt, finden Sie unter Problembehandlung bei Migrationsaufgaben im AWS Database Migration Service.

Um die verbleibenden Objekte zu migrieren, die nicht von AWS DMS migriert werden, verwenden Sie eine der folgenden Methoden:

  • Für eine homogene Migration (zwischen zwei Datenbanken desselben Engine-Typs) migrieren Sie das Schema, indem Sie die systemeigenen Tools Ihrer Engine verwenden, um das Schema selbst zu exportieren und zu importieren, ohne irgendwelche Daten.
  • Verwenden Sie für eine heterogene Migration (zwischen zwei Datenbanken, die unterschiedliche Engine-Typen verwenden) das AWS Schema Conversion Tool (AWS SCT), um ein vollständiges Zielschema zu generieren.

Auflösung

Überprüfen Sie, ob ein Objekt durch eine AWS-DMS-Aufgabe migriert wird

Überprüfen Sie zunächst anhand dieser Richtlinien, ob ein Objekt durch eine AWS-DMS-Aufgabe migriert wird:

  • Eine AWS-DMS-Aufgabe erstellt die Tabelle auf dem Ziel zusammen mit der Primärschlüsseleinschränkung und dem Index.
  • Wenn kein Primärschlüssel vorhanden ist, erstellt die Aufgabe den eindeutigen Schlüssel (sofern er in der Quelltabelle vorhanden ist).
  • Wenn in der Quelltabelle NOT-NULL-Beschränkungen existieren, erstellt die AWS-DMS-Aufgabe die NOT-NULL-Beschränkungen im Ziel. Dies schließt keine großen Objektspalten (LOB) ein. Wenn AWS DMS die Zieltabellen erstellt, werden LOB-Spalten standardmäßig auf nullfähig gesetzt. Weitere Informationen finden Sie unter Migrieren großer binärer Objekte (LOBs).
  • Wenn die Quelltabelle über eine Spalte mit automatischem Inkrement verfügt, wird die Eigenschaft auto-increment nicht migriert.
  • Andere tabellenspezifische Eigenschaften wie Fremdschlüsseleinschränkungen, Prüfungen, Datenstandardwerte und Kommentare werden von der AWS-DMS-Aufgabe nicht repliziert.
  • Datenbankobjekte wie sekundäre Indizes, Ansichten, Prozeduren, Funktionen, Pakete und Auslöser werden von der AWS-DMS-Aufgabe nicht migriert. Migrieren Sie diese Objekte separat.

Migrieren Sie Objekte mithilfe der nativen Tools Ihrer Engine (homogene Migration)

Verwenden Sie für eine homogene Datenbankmigration Ihre nativen Tools, um die Schema-Metadaten ohne die Daten zu exportieren. Dieser reine Metadaten-Dump wird dann in die Zieldatenbank importiert, um die Datenbankobjekte ohne Daten zu erstellen. Führen Sie dann die AWS-DMS-Aufgabe aus, wobei die Aufgabeneinstellung TargetTablePrepMode auf TRUNCATE_BEFORE_LOAD festgelegt ist. Das bedeutet, dass die Aufgabe die Tabellen auf dem Ziel nicht löscht und neu erstellt.

Oracle

Um Objekte mit Oracle-Datenbanken zu migrieren, verwenden Sie das Export Data Pump Utility (expdp), um einen reinen Metadaten-Dump zu erstellen. Mit dem Parameter CONTENT=METADATA_ONLY entlädt das Datenpumpendienstprogramm nur Datenbankobjektdefinitionen. Das Dienstprogramm entlädt keine Tabellenzeilendaten.

1.    Um einen reinen Metadaten-Dump zu erstellen, erstellen Sie eine Parameterdatei, um das Schema zu exportieren:

$> cat export_sample_user.par 
userid=DMS_USER/password@SOURCE_DB
directory=DATA_PUMP_DIR
logfile=export_dms_sample_user_metadata.log
dumpfile=export_dms_sample_user_metadata_%U.dmp
schemas=DMS_SAMPLE
CONTENT=METADATA_ONLY

2    Führen Sie den Export mit dem Dienstprogramm expdp aus:

expdp parfile=export_sample_user.par

3.    Nachdem die Dump-Dateien in DATA_PUMP_DIR der Quelldatenbank erstellt wurden, kopieren Sie sie in DATA_PUMP_DIR der Oracle-Zieldatenbank. Um die Objekte in der Oracle-Zieldatenbank zu erstellen, führen Sie das Import Data Pump Utility (impdp) aus, um die Metadaten zu importieren:

impdp admin@TARGET_DB directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_user_metadata_%U.dmp

SQL Server

Um Objekte mit SQL Server zu migrieren, erstellen Sie ein SQL-Skript für das Datenbankschema:

  1. Melden Sie sich mit SQL Server Management Studio (SSMS) bei der Quelldatenbank an.
  2. Klicken Sie mit der rechten Maustaste auf die Datenbank, für die Sie Skripts generieren möchten, wählen Sie Aufgaben, und wählen Sie dann Skripts generieren.
  3. Wählen Sie unter Bestimmte Datenbankobjekte auswählen die Tabellen, Sichten und alle anderen Objekte aus, die Sie verwenden möchten, und klicken Sie dann auf Weiter.
  4. Wählen Sie die Schaltfläche Erweitert aus, und wählen Sie dann die Datentypen aus, für die Sie ein Skript erstellen möchten.
  5. Wenn Sie die SQL für sekundäre Indizes abrufen möchten, setzen Sie Skriptindizes auf wahr. Skriptindizes sind standardmäßig auf falsch gesetzt.
  6. Wählen Sie aus, wie Sie die Skripts speichern möchten. Sie können beispielsweise eine SQL-Datei auf der Festplatte erstellen, das SQL in ein neues Abfragefenster kopieren oder die Skripte in die Zwischenablage kopieren.
  7. Wählen Sie Weiter.
  8. Wählen Sie erneut Weiter unddann Fertigstellen.

Um Objekte in der Zieldatenbank zu erstellen, führen Sie das SQL-Skript aus, das nach Abschluss dieser Schritte generiert wird.

MySQL

Um Objekte mit MySQL zu migrieren, verwenden Sie das Dienstprogramm mysqldump, um eine Dump-Datei zu generieren, die nur die Schema-Metadaten enthält. Die Option --no-data weist mysqldump an, keine Tabellendaten auszugeben, sodass die Ergebnisse in der Dump-Datei nur Anweisungen zum Erstellen der Tabellen enthalten. Fügen Sie für einen Nur-Definition-Dump die Optionen --routines und --events hinzu, um auch gespeicherte Routine- und Ereignisdefinitionen einzubeziehen.

Beispiel:

mysqldump --no-data --routines --events -h SOURCE_DB_SERVER_NAME -u DMS_USER -p SOURCE_DB > path_to_dump_file.sql

Um die Objekte in der Zieldatenbank zu erstellen, führen Sie das SQL-Skript aus, das nach dem Ausführen des vorherigen Befehls generiert wird.

PostgreSQL

Um Objekte mit PostgreSQL-Datenbanken zu migrieren, verwenden Sie das Dienstprogramm pg_dump, um eine Dump-Datei zu generieren, die nur die Schema-Metadaten enthält. Die Option -s oder --schema-only gibt die Objektdefinitionen (Schema) und nicht die Daten aus.

Beispiel:

pg_dump --host SOURCE_DB_SERVER_NAME --port 5432 --username DMS_USER --schema-only --verbose SOURCE_DB > path_to_dump_file.sql

Um die Objekte in der Zieldatenbank zu erstellen, führen Sie das SQL-Skript aus, das nach dem Ausführen des vorherigen Befehls generiert wird.

Migrieren Sie Objekte mithilfe des AWS Schema Conversion Tool (AWS SCT)

Verwenden Sie AWS SCT, um Ihre vorhandenen Datenbankschemas von einer Datenbank-Engine in eine andere zu konvertieren und zu migrieren. Sie können auch das AWS SCT verwenden, um ein vorhandenes On-Premises-Datenbankschema in eine Amazon Relational Database Service (Amazon RDS)-DB-Instance zu kopieren, auf der dasselbe Modul ausgeführt wird.

Gehen Sie folgendermaßen vor, um Ihr Datenbankschema zu konvertieren:

  1. Erstellen Sie Migrationsregeln in AWS SCT.
  2. Konvertieren Sie Ihr Schema mithilfe von AWS SCT.
  3. Speichern und wenden Sie Ihr konvertiertes Schema in AWS SCT an.

Weitere Informationen finden Sie unter Konvertieren von Datenbankschemas mit AWS SCT.


Verwandte Informationen

Überblick über AWS DMS auf hoher Ebene

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren