Wie kann ich Probleme bei der Dateninkongruenz zwischen den Quell- und Zieldatenbanken in AWS DMS beheben?

Letzte Aktualisierung: 12.09.2022

Ich habe eine AWS-Database-Migration-Service-Aufgabe (AWS DMS), die sich in der vollständigen Phase der vollständigen oder laufenden Replikation der Migration befindet. Die in der Zieldatenbank nachgelagerten Daten stimmen jedoch nicht mit den Daten in der Quelle überein. Wie kann ich Probleme bei der Dateninkongruenz zwischen Quell- und Zieldatenbanken beheben?

Kurzbeschreibung

Es gibt eine Reihe von Gründen, aus denen Sie bei der Migration Ihrer Daten in einer heterogenen Umgebung mit AWS DMS eine Dateninkongruenz feststellen können. Beispiel:

  • Wenn Sie nicht die richtigen LOB-Einstellungen verwenden, werden die Daten gemäß der maxLobSize-Aufgabeneinstellung abgeschnitten. Die Ziel-LOB-Spalte enthält also nicht genau dieselben Daten wie die Quelle.
  • Während der heterogenen Migration konvertiert AWS DMS den Quelldatentyp in einen internen Datentyp. Anschließend konvertiert AWS DMS die internen Daten in den Zieldatentyp. Da jedoch einige Quell- und Zieldatentypen von AWS DMS nicht vollständig unterstützt werden, kommt es möglicherweise zu einer Dateninkongruenz zwischen Quelle und Ziel.
  • Wenn während der Change-Data-Capture-Replikation (CDC) Fehler oder Ausnahmen auftreten, kann die DML-Transaktion in der Zieldatenbank fehlschlagen.

Auflösung

Vor der Fehlerbehebung erste Prüfungen durchführen

Führen Sie die folgenden ersten Prüfungen durch, bevor Sie das Problem anhand der Schritte in diesem Artikel beheben:

  • Wenn Sie eine Nur-Volllast-Aufgabe verwenden, stellen Sie sicher, dass die Migration abgeschlossen ist und dass die Aufgabe in einen gestoppten Zustand versetzt wurde.
  • Wenn Sie eine Volllast- oder reine CDC-Aufgabe verwenden, überprüfen Sie die Amazon-CloudWatch-Metriken CDClatencySource und CDClatencyTarget. Stellen Sie sicher, dass Sie keine Latenz beobachten.
  • Stellen Sie sicher, dass keine anderen Anwendungen mit der Quell- oder Zieldatenbank verbunden sind. Dies kann zu Datenmanipulationen führen. Wenn Sie beispielsweise eine Nur-Volllast-Aufgabe ausführen und die Daten an der Quelle von einer anderen Anwendung geändert werden, wird am Ziel möglicherweise eine Dateninkongruenz festgestellt. Wenn die Zieldatenbank über DML-Trigger verfügt oder eine andere Anwendung Daten in die migrierte Zieltabelle schreibt, wird auch eine Dateninkongruenz zwischen Ziel und Quelle festgestellt.

Fragen Sie die Tabelle awsdms_validation_failures_v1 auf dem Ziel ab

Wenn Datenkonsistenz Ihr Hauptziel ist, stellen Sie sicher, dass Sie die Validierung aktivieren, wenn Sie die AWS DMS-Aufgabe erstellen.

Fehler beheben, wenn die Validierung aktiviert ist

Wenn die Validierung aktiviert ist, können Sie die Tabelle AWSDMS_Validation_Failures_v1 in Ihrer Zieldatenbank überprüfen. Wenn ein Datensatz während der Migration in den Status ValidationsSuspended oder ValidationFailed wechselt, schreibt AWS DMS Diagnoseinformationen in AWSDMS_Validation_Failures_v1. Fragen Sie diese Tabelle ab, um Überprüfungsfehler zu beheben, indem Sie einen Befehl ähnlich dem folgenden ausführen:

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

Überprüfen Sie die Detailspalte in der Ausgabe, um Informationen über den Fehler zu erhalten. Verwenden Sie die Spalte Schlüssel, um die Datensatzdaten zwischen Ihrer Quelle und Ihrem Ziel zu vergleichen. Weitere Informationen finden Sie im Abschnitt zur Fehlerbehebung in der Dokumentation zur AWS-DMS-Datenvalidierung.

Problembehandlung bei deaktivierter Validierung

Wenn Sie die Validierung für Ihre AWS-DMS-Aufgabe nicht aktiviert haben, erstellen Sie eine Aufgabe nur zur Validierung:

  • Verwenden Sie bei einer einmaligen Migration die Funktion „Nur Volllastvalidierung“, um schnell alle Zeilen zwischen der Quelle und dem Ziel zu vergleichen.
  • Verwenden Sie für die laufende Replikation die CDC-Aufgabe, die nur zur Validierung dient. Eine CDC-Aufgabe, die nur zur Validierung dient, validiert die vorhandenen Zeilen zwischen der Quell- und der Zieltabelle. Die Aufgabe wird mit laufenden Änderungen fortgesetzt, sobald sie angezeigt werden, und meldet alle Fehler bei der Datenüberprüfung.

Überprüfen Sie die Quell- und Zieldaten auf Einschränkungen

Nachdem Sie die nicht übereinstimmenden Daten identifiziert haben, überprüfen Sie die Quelle und das Ziel auf Einschränkungen, die mit ihren Datentypen verknüpft sind. Wenn Sie beispielsweise PostgreSQL als Quelle verwenden, können Sie ENUM-Datentypen nicht migrieren.

Überprüfen Sie das Aufgabenprotokoll auf Fehler

Überprüfen Sie das Aufgabenprotokoll auf Fehler zum Zeitpunkt der fehlgeschlagenen Überprüfung. Oder überprüfen Sie die Steuertabellen, um festzustellen, ob während der Datenreplikationsphase Ausnahmen protokolliert wurden.

Durch Kürzung verursachter nicht übereinstimmender Daten beheben

Wenn Sie den Modus „Eingeschränkter LOB“ verwenden, weist AWS DMS Speicher in der Replikations-Instance vorab zu. Anschließend werden die LOB-Daten mithilfe der LobmaxSize-Aufgabeneinstellung in großen Mengen geladen. AWS DMS schneidet alle LOBs ab, die die maximale LOB-Größe überschreiten, und gibt dann eine Warnung an die Protokolldatei aus.

Überprüfen Sie die Protokolldateien auf Warnmeldungen, die darauf hinweisen, dass Daten abgeschnitten wurden, und überprüfen Sie dann die maximale Länge der entsprechenden LOB-Spalte. Definieren Sie eine LobMaxSize, die größer als die LOB-Spaltenlänge ist, damit die Daten nicht abgeschnitten werden. Verwenden Sie das Diagnose-Supportskript, um herauszufinden, welche Tabellen LOB-Daten enthalten, und fragen Sie dann entsprechend ab.

Wenn die maximale Größe der LOB-Spalte mehr als 100 MB beträgt, verwenden Sie den Modus vollständiges LOB oder Inline-LOB, um das Kürzen der LOB-Spaltendaten zu stoppen.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?