Direkt zum Inhalt

Wie behebe ich Datenkonflikte zwischen den Quell- und Zieldatenbanken in AWS DMS?

Lesedauer: 4 Minute
0

Ich habe eine Aufgabe des AWS Database Migration Service (AWS DMS), die sich in der Migrationsphase „Vollständiges Laden abgeschlossen“ oder „Replikation läuft“ befindet. Die Daten in der Zieldatenbank stimmen jedoch nicht mit den Daten in der Quelle überein.

Kurzbeschreibung

Wenn du AWS DMS verwendest, um Daten in einer heterogenen Umgebung zu migrieren, kann es aus den folgenden Gründen zu Datenkonflikten kommen:

  • Falsche Einstellungen großer binärer Objekte (Large Binary Object, LOB)
  • Der Quell- oder Zieldatentyp wird nicht unterstützt
  • Fehler oder Ausnahmen, die während der Change Data Capture (CDC)-Replikation auftreten, führen dazu, dass die Datenbearbeitungssprach(Data Manipulation Language, DML)-Transaktion in der Zieldatenbank fehlschlägt

Wenn du nicht die richtigen LOB-Einstellungen verwendest, werden die Daten auf der Grundlage der LobMaxSize-Aufgabeneinstellung gekürzt. Die Ziel-LOB-Spalte enthält also nicht exakt 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 bestimmte Quell- und Zieldatentypen von AWS DMS nicht vollständig unterstützt werden, kann es vorkommen, dass die Daten zwischen Quell- und Zieldaten nicht übereinstimmen.

Lösung

Erste Prüfungen durchführen

Wenn du nur Aufgaben mit vollständigem Laden verwendest, stelle sicher, dass die Migration abgeschlossen ist und sich die Aufgabe in einem angehaltenen Zustand befindet.

Wenn du eine Aufgabe mit vollständigem Laden und eine CDC-Aufgabe oder eine reine CDC-Aufgabe verwendest, überprüfe die Amazon CloudWatch-Metriken CDCLatencySource und CDCLatencyTarget. Vergewissere dich, dass es keine Latenz gibt.

Stelle sicher, dass keine anderen Anwendungen mit der Quell- oder Zieldatenbank verbunden sind, da dies zu Datenmanipulationen führen kann. Wenn du beispielsweise eine Aufgabe mit vollständigem Laden ausführst und die Quelldaten von einer anderen Anwendung geändert werden, stimmen die Zieldaten nicht überein. Oder, wenn eine andere Anwendung Daten in die migrierte Zieltabelle in der Zieldatenbank schreibt, dann gibt es einen Datenkonflikt zwischen Ziel und Quelle.

Die Tabelle awsdms_validation_failures_v1 auf dem Ziel abrufen

Wenn dein Ziel Datenkonsistenz ist, aktiviere die Validierung, wenn du die AWS DMS-Aufgabe erstellst.

Hinweis: Wenn eine Tabelle LOB-Spalten enthält und du den eingeschränkten LOB-Modus für die Migration verwendest, musst du ValidationPartialLobSize auf denselben Wert wie LobMaxSize setzen.

Problembehandlung bei aktivierter Validierung

Wenn die Validierung aktiviert ist, überprüfe die Tabelle awsdms_Validation_failures_v1 in der Zieldatenbank. Wenn ein Datensatz während der Migration in den Zustand ValidationSuspended oder ValidationFailed übergeht, schreibt AWS DMS Diagnoseinformationen in awsdms_validation_failures_v1. Führe einen Befehl ähnlich dem folgenden aus, um Validierungsfehler zu beheben:

select * from awsdms_validation_failures_v1 where TASK_NAME = 'ABC123FGJASHKNA345';

Informationen zum Fehler findest du in der Spalte Details in der Ausgabe. Verwende die Spalte Schlüssel, um die Datensatzdaten zwischen der Quelle und dem Ziel zu vergleichen. Weitere Informationen zur Behebung von Problemen mit der Datenvalidierung findest du unter Fehlerbehebung.

Problembehandlung bei deaktivierter Validierung

Wenn du die Validierung für die AWS DMS-Aufgabe nicht aktiviert hast, erstelle eine reine Validierungsaufgabe.

Verwende für eine einmalige Migration die Funktion für die reine Validierung mit vollständigem Laden, um schnell alle Zeilen zwischen Quelle und Ziel zu vergleichen.

Verwende für eine fortlaufende Replikation die reine CDC-Validierungsaufgabe. Eine reine CDC-Validierungsaufgabe validiert die vorhandenen Zeilen zwischen der Quell- und der Zieltabelle. Die Aufgabe wird mit laufenden Änderungen fortgesetzt, sobald sie auftreten, und meldet Fehler bei der Datenvalidierung.

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

Nachdem du die nicht übereinstimmenden Daten ermittelt hast, überprüfe Quelle und Ziel auf Einschränkungen, die mit ihren Datentypen verbunden sind. Wenn du beispielsweise PostgreSQL als Quelle verwendest, kannst du ENUM-Datentypen nicht migrieren.

Überprüfen des Aufgabenprotokolls auf Fehler

Überprüfe das Aufgabenprotokoll auf Fehler zum Zeitpunkt der fehlgeschlagenen Validierung. Oder überprüfe die Steuertabellen, um Ausnahmen anzuzeigen, die während der Datenreplikationsphase protokolliert werden.

Nicht übereinstimmende Daten lösen, die durch Kürzung verursacht wurden

Wenn du den eingeschränkten LOB-Modus verwendest, weist AWS DMS Speicher in der Replikations-Instance vorab zu. Anschließend verwendet AWS DMS die LobMaxSize-Aufgabeneinstellung, um die LOB-Daten in großen Mengen zu laden. AWS DMS kürzt LOBs, die die maximale LOB-Größe überschreiten, und gibt dann eine Warnmeldung in der Protokolldatei aus.

Überprüfe die Protokolldateien auf Warnmeldungen, die darauf hinweisen, dass Daten gekürzt wurden, und überprüfe dann die maximale Größe der entsprechenden LOB-Spalte. Definiere eine LobMaxSize, die größer als die LOB-Spaltengröße ist, damit Daten nicht gekürzt werden. Verwende ein Diagnoseunterstützungs-Skript, um die Tabellen mit LOB-Daten zu finden, und frage dann die Größe der LOB-Spalte ab.

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

Ähnliche Informationen

Reine Validierungsaufgaben

LOB-Unterstützung für Quelldatenbanken in einer AWS DMS-Aufgabe einrichten

AWS OFFICIALAktualisiert vor 9 Monaten