Warum hat AWS DMS die Daten von meinem Amazon S3-Quellendpunkt nicht migriert, obwohl meine AWS DMS-Aufgabe erfolgreich ist?

Lesedauer: 4 Minute
0

Meine AWS Database Migration Service (AWS DMS)-Aufgabe ist erfolgreich, migriert aber keine Daten von meinem Amazon Simple Storage Service (Amazon S3)-Quellendpunkt. Ich möchte dieses Problem beheben.

Lösung

Es gibt mehrere Gründe, warum eine AWS DMS-Aufgabe erfolgreich ist, aber keine Daten migriert. Vervollständige die Lösung für deinen Anwendungsfall.

Der Aufgabenstatus lautet „Laden abgeschlossen, Replikation läuft“, aber die AWS DMS-Aufgabe lädt keine Daten auf das Ziel

Vergewissere dich, dass der S3-Pfad, den du für den Quellendpunkt definiert hast, korrekt ist. Identifiziere im Replikationsprotokoll Einträge, die zeigen, dass AWS DMS die Datendateien im S3-Pfad nicht finden kann.

Beispiel für einen Replikationsprotokolleintrag:

[SOURCE_UNLOAD ]I: Unload finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows sent. (streamcomponent.c:3396)
[TARGET_LOAD ]I: Load finished for table 'dms_schema'.'dms_table' (Id = 1). 0 rows received. 0 rows skipped. Volume transferred 0. (streamcomponent.c:3667)

Amazon S3 speichert die Datendatei für die vollständige Ladephase (data.csv) und die Datendatei für laufende Änderungen (change_data.csv) im folgenden Format:

  • S3-bucket/dms-folder/sub-folder/dms_schema/dms_table/data.csv
  • S3-bucket/dms-folder/sub-folder/dms-cdc-path/dms-cdc-sub-path/change_data.csv

Um die Datendateien zu finden, verwendet der S3-Quellendpunkt den Bucket-Ordner, den CDC-Pfad (Change Data Capture) und die Tabellenstrukturfelder.

In den vorherigen Beispieldateipfaden ist dms-folder/sub-folder der Bucket-Ordner. Der CDC-Pfad, den du beim Erstellen des S3-Quellendpunkts eingibst, lautet dms-cdc-path/dms-cdc-sub-path.

Beispiel für eine Tabellenstruktur, die den Pfad der Beispieldatei verwendet:

{
  "TableCount": 1,
  "Tables": [
    {
      "TableColumns": […],
      "TableColumnsTotal": "1",
      "TableName": "dms_table",
      "TableOwner": "dms_schema",
      "TablePath": "dms_schema/dms_table/"
    }
  ]
}

Wichtig: Füge den Bucket-Ordnerpfad dms-folder/sub-folder) nicht in den TablePath der Tabellenstruktur ein.

Wenn du deine Endpunktkonfiguration festlegst, ist der Bucket-Ordner optional. Wenn du einen Bucket-Ordner angibst, müssen sich der CDC-Pfad und TablePath im selben Ordner in Amazon S3 befinden. Wenn du den Bucket-Ordner nicht angibst, befinden sich der TablePath und der CDC-Pfad direkt unter dem S3-Bucket.

Der Bucket-Ordner für den Amazon S3-Quellendpunkt kann ein beliebiges Ordnerverzeichnis zwischen dem Bucket-Namen und dem Schemanamen der Tabellenstruktur sein. In der vorherigen Beispieltabellenstruktur ist das Ordnerverzeichnis dms-schema. Wenn du keine Hierarchie von Ordnern unter dem Bereich hast, dann lass das Feld leer.

Hinweis: Bei Bucket-Ordnern und CDC-Pfaden kann es sich um einzelne Ordner handeln oder um Unterordner wie dms-folder oder dms-folder/sub-folder.

Wenn deine DMS-Aufgabeneinstellung einen S3-Quellendpunkt verwendet, musst du das Schema und die Tabelle in die Tabellenzuordnung aufnehmen. Das Schema und die Tabelle sind erforderlich, um Daten erfolgreich auf das Ziel zu migrieren. Weitere Informationen findest du unter Definieren externer Tabellen für Amazon S3 als Quelle für AWS DMS.

Wenn du Drop tables on target als Tabellenvorbereitungsmodus für die Aufgabe verwendest, erstellt DMS die Zieltabelle dms_schema.dms_table.

Beispiel für einen Befehl zur Erstellung einer Zieltabelle:

CREATE TABLE 'dms_schema'.'dms_table' (...);

Hinweis: Bei Ordner- und Objektnamen in Amazon S3 wird zwischen Groß- und Kleinschreibung unterschieden. Verwende die richtige Groß- und Kleinschreibung, wenn du die Ordner- und Objektnamen im S3-Endpunkt angibst.

Der Aufgabenstatus lautet „Laden abgeschlossen, Replikation läuft“, aber im Abschnitt „Tabellenstatistiken“ befindet sich keine Tabelle

Wenn du den Modus Drop tables on target verwendest, erstellt AWS DMS möglicherweise keine Tabelle im Zielendpunkt. Ein falscher S3-Pfad oder ein nicht unterstützter Datentyp kann dieses Problem verursachen.

Vergewissere dich, dass der S3-Pfad für den Quellendpunkt korrekt ist. Überprüfe dann, ob dein S3-Endpunkt den Datentyp unterstützt.

Prüfe, ob der Filter, den die Tabellenzuordnung deiner DMS-Aufgabe definiert hat, die Ursache für die fehlenden Tabellen ist. Vergewissere dich, dass du die Tabelle, die in der Aufgabentabellen-Zuordnung erforderlich ist, in der Tabellenstruktur des S3-Quellendpunkts definiert hast.

Der Aufgabenstatus ist „Wird ausgeführt“ und die DMS-Aufgabe hat die Tabelle im Zielendpunkt erstellt, aber keine Daten geladen

Wenn AWS DMS die Daten nicht aus dem S3-Pfad abrufen kann, verwende das Replikationsprotokoll, um die Fehler zu finden. Um detaillierte Protokolle zu erhalten, ändere die SOURCE_CAPTURE-Protokollebene von Standard auf Detailliertes Debugging.

Beispiel für ein Protokoll:

[SOURCE_CAPTURE ]E: No response body. Response code: 403 [1001730] (transfer_client.cpp:589)
[SOURCE_CAPTURE ]E: failed to download file </dms-folder/sub-folder/dms_schema/dms_table/data.csv> from bucket <dms-test> as </rdsdbdata/data/tasks/NKMBA237MEB4UFSRDF5ZAF3EZQ/bucketFolder/dms-folder/sub-folder/dms_schema/dms_table/data.csv>,
                status = 4 (FAILED) [1001730] (transfer_client.cpp:592)

Du erhältst im Replikationsprotokoll den Fehler „No response body“

Der Fehler „No response body“ tritt auf, wenn die AWS Identity and Access Management (IAM)-Rolle für den S3-Quellendpunkt nicht über die richtigen Berechtigungen verfügt. Um dieses Problem zu beheben, vergewissere dich, dass die Datendatei im S3-Pfad existiert, der in der Fehlermeldung angegeben ist. Bestätige dann, dass der IAM-Benutzer über Berechtigungen für s3:GetObject verfügt.

Hinweis: Wenn du die Versionsverwaltung für den Quell-Bucket aktiviert hast, musst du auch die Berechtigung s3:GetObjectVersion erteilen.

Ähnliche Informationen

Amazon S3 als Quelle für AWS DMS verwenden

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Monat