Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie behebe ich Datenkonflikte zwischen den Quell- und Zieldatenbanken in AWS DMS?
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
LOB-Unterstützung für Quelldatenbanken in einer AWS DMS-Aufgabe einrichten
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor 7 Monaten