View a markdown version of this page

AWS DMS-Datenvalidierung - AWS Datenbankmigrationsdienst

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS DMS-Datenvalidierung

AWS DMS unterstützt die Datenvalidierung, um sicherzustellen, dass Ihre Daten korrekt von der Quelle zum Ziel migriert wurden. Wenn diese Option aktiviert ist, beginnt die Validierung unmittelbar nach einer Volllastaufgabe für eine Tabelle. Bei der Validierung werden die inkrementellen Änderungen für eine CDC-enabled Aufgabe verglichen, sobald sie auftreten.

AWS DMS Vergleicht bei der Datenüberprüfung jede Zeile in der Quelle mit der entsprechenden Zeile am Ziel, stellt sicher, dass die Zeilen dieselben Daten enthalten, und meldet alle Nichtübereinstimmungen. Um dies zu erreichen, AWS DMS werden entsprechende Abfragen zum Abrufen der Daten ausgeführt. Beachten Sie, dass diese Abfragen zusätzliche Ressourcen an der Quelle und am Ziel sowie zusätzliche Netzwerkressourcen verbrauchen.

Bei einer reinen CDC-Aufgabe mit aktivierter Validierung werden alle bereits vorhandenen Daten in einer Tabelle überprüft, bevor mit der Validierung neuer Daten begonnen wird.

Die Datenvalidierung funktioniert mit den folgenden Quelldatenbanken, sofern sie als Quellendpunkte AWS DMS unterstützt werden:

  • Oracle

  • PostgreSQL-compatible Datenbank (PostgreSQL, Aurora PostgreSQL oder Aurora Serverless für PostgreSQL)

  • MySQL-compatible Datenbank (MySQL, MariaDB, Aurora MySQL oder Aurora Serverless für MySQL)

  • Microsoft SQL Server

  • IBM Db2 (LUW)

Die Datenvalidierung funktioniert mit den folgenden Zieldatenbanken, sofern sie als AWS DMS Zielendpunkte unterstützt werden:

  • Oracle

  • PostgreSQL-compatible Datenbank (PostgreSQL, Aurora PostgreSQL oder Aurora Serverless für PostgreSQL)

  • MySQL-compatible Datenbank (MySQL, MariaDB, Aurora MySQL oder Aurora Serverless für MySQL)

  • Microsoft SQL Server

  • IBM Db2 (LUW)

  • Amazon Redshift

  • Amazon S3. Informationen zur Validierung von Amazon-S3-Zieldaten finden Sie unter Zieldatenvalidierung in Amazon S3.

Weitere Informationen zu den unterstützten Endpunkten finden Sie unter Arbeiten mit AWS DMS-Endpunkte.

Die Datenvalidierung erfordert zusätzliche Zeit, die über die Dauer hinausgeht, die für die Migration selbst erforderlich ist. Die zusätzlich benötigte Zeit hängt davon ab, wie viele Daten migriert wurden.

Weitere Informationen zu diesen Einstellungen finden Sie unter Aufgabeneinstellungen zur Datenvalidierung.

Ein Beispiel für ValidationSettings-Aufgabeneinstellungen in einer JSON-Datei finden Sie unter Beispiel für Aufgabeneinstellungen.

Replikationsaufgaben-Statistiken

Wenn die Datenvalidierung aktiviert ist, AWS DMS werden die folgenden Statistiken auf Tabellenebene bereitgestellt:

  • ValidationState— Der Validierungsstatus der Tabelle. Folgende Parameterwerte sind möglich:

    • Not enabled – Für die Tabelle in der Migrationsaufgabe ist keine Validierung aktiviert.

    • Pending records – Einige Datensätze in der Tabelle müssen noch validiert werden.

    • Nicht übereinstimmende Datensätze – Bei einigen Datensätzen in der Tabelle gibt es eine Abweichung zwischen Quelle und Ziel. Ein Konflikt kann aus unterschiedlichen Gründen auftreten. Weitere Informationen finden Sie in der Tabelle awsdms_control.awsdms_validation_failures_v1 auf dem Ziel-Endpunkt.

    • Suspended records (Ausgesetzte Datensätze) – Einige Datensätze in der Tabelle können nicht validiert werden.

    • No primary key (Kein Primärschlüssel) – Die Tabelle kann aufgrund eines fehlenden Primärschlüssels nicht validiert werden.

    • Table error (Tabellenfehler) – Die Tabelle wurde aufgrund ihres Fehlerstatus nicht validiert, zudem wurden einige Daten nicht migriert.

    • Validiert – Alle Zeilen der Tabelle wurden validiert. Wenn die Tabelle aktualisiert wurde, ändert sich der Status möglicherweise in "Validated".

    • Error (Fehler) – Die Tabelle kann aufgrund eines unerwarteten Fehlers nicht validiert werden.

    • Ausstehende Validierung – Die Validierung der Tabelle steht noch aus.

    • Tabelle wird vorbereitet – Die in der Migrationsaufgabe aktivierte Tabelle wird für die Validierung vorbereitet.

    • Ausstehende erneute Validierung – Die Validierung aller Zeilen in der Tabelle steht noch aus, nachdem die Tabelle aktualisiert wurde.

  • ValidationPending— Die Anzahl der Datensätze, die zum Ziel migriert, aber noch nicht validiert wurden.

  • ValidationSuspended— Die Anzahl der Datensätze, die nicht verglichen AWS DMS werden können. Wenn beispielsweise ein Datensatz an der Quelle ständig aktualisiert wird, AWS DMS können Quelle und Ziel nicht verglichen werden.

  • ValidationFailed— Die Anzahl der Datensätze, die die Datenüberprüfungsphase nicht bestanden haben.

Ein Beispiel für ValidationSettings-Aufgabeneinstellungen in einer JSON-Datei finden Sie unter Beispiel für Aufgabeneinstellungen.

Sie können die Informationen zur Datenüberprüfung mithilfe der Konsole AWS CLI, der oder der AWS DMS API anzeigen.

  • Sie können in der Konsole eine Aufgabe zur Validierung auswählen, wenn Sie die Aufgabe erstellen oder ändern. Zum Anzeigen des Validierungsberichts in der Konsole wählen Sie die Aufgabe auf der Seite Tasks aus und klicken dann im Detailbereich auf Table statistics.

  • Setzen Sie bei Verwendung der CLI den Parameter EnableValidation auf true, wenn Sie eine Aufgabe erstellen oder ändern, um mit der Datenvalidierung zu beginnen. Im folgenden Beispiel wird eine Aufgabe erstellt und die Datenvalidierung aktiviert.

    create-replication-task --replication-task-settings '{"ValidationSettings":{"EnableValidation":true}}' --replication-instance-arn arn:aws:dms:us-east-1:111122223333: rep:36KWVMB7Q --source-endpoint-arn arn:aws:dms:us-east-1:111122223333: endpoint:CSZAEFQURFYMM --target-endpoint-arn arn:aws:dms:us-east-1:111122223333: endpoint:CGPP7MF6WT4JQ --migration-type full-load-and-cdc --table-mappings '{"rules": [{"rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": {"schema-name": "data_types", "table-name": "%"}, "rule-action": "include"}]}'

    Verwenden Sie den Befehl describe-table-statistics, um den Datenvalidierungsbericht im JSON-Format zu erhalten. Mit dem folgenden Befehl wird der Datenvalidierungsbericht angezeigt.

    aws dms describe-table-statistics --replication-task-arn arn:aws:dms:us-east-1:111122223333:task:36KWVMB7Q

    Der Bericht sieht in etwa wie folgt aus.

    { "ReplicationTaskArn": "arn:aws:dms:us-west-2:111122223333:task:VFPFTYKK2RYSI", "TableStatistics": [ { "ValidationPendingRecords": 2, "Inserts": 25, "ValidationState": "Pending records", "ValidationSuspendedRecords": 0, "LastUpdateTime": 1510181065.349, "FullLoadErrorRows": 0, "FullLoadCondtnlChkFailedRows": 0, "Ddls": 0, "TableName": "t_binary", "ValidationFailedRecords": 0, "Updates": 0, "FullLoadRows": 10, "TableState": "Table completed", "SchemaName": "d_types_s_sqlserver", "Deletes": 0 } }
  • Erstellen Sie mithilfe der AWS DMS API eine Aufgabe mithilfe der CreateReplicationTask Aktion und setzen Sie den EnableValidation Parameter auf true, um die von der Aufgabe migrierten Daten zu validieren. Verwenden Sie die DescribeTableStatistics Aktion, um den Datenvalidierungsbericht im JSON-Format zu erhalten.

Statistiken zu Replikationsaufgaben bei Amazon CloudWatch

Wenn Amazon aktiviert CloudWatch ist, werden die folgenden Statistiken AWS DMS für Replikationsaufgaben bereitgestellt:

  • ValidationSucceededRecordCount— Anzahl der AWS DMS validierten Zeilen pro Minute.

  • ValidationAttemptedRecordCount— Anzahl der Zeilen, für die eine Überprüfung versucht wurde, pro Minute.

  • ValidationFailedOverallCount— Anzahl der Zeilen, bei denen die Validierung fehlgeschlagen ist.

  • ValidationSuspendedOverallCount— Anzahl der Zeilen, bei denen die Validierung unterbrochen wurde.

  • ValidationPendingOverallCount— Anzahl der Zeilen, bei denen die Validierung noch aussteht.

  • ValidationBulkQuerySourceLatency— AWS DMS kann eine Massenvalidierung von Daten durchführen, insbesondere in bestimmten Szenarien während einer Volllast oder einer laufenden Replikation, wenn viele Änderungen vorliegen. Diese Metrik gibt die Latenz an, die zum Lesen eines Massendatensatzes aus dem Quellendpunkt erforderlich ist.

  • ValidationBulkQueryTargetLatency— AWS DMS kann Daten in großen Mengen validieren, insbesondere in bestimmten Szenarien während einer Volllast oder einer laufenden Replikation, wenn viele Änderungen vorgenommen werden. Diese Metrik gibt die Latenz an, die zum Lesen eines Massendatensatzes am Zielendpunkt erforderlich ist.

  • ValidationItemQuerySourceLatency— Während der laufenden Replikation kann die Datenvalidierung laufende Änderungen identifizieren und diese Änderungen validieren. Diese Metrik gibt die Latenz an, die zum Lesen solcher Änderungen aus der Quelle erforderlich ist. Die Validierung kann mehr Abfragen als basierend auf der Anzahl von Änderungen erforderlich ausführen, wenn während der Validierung Fehler aufgetreten sind.

  • ValidationItemQueryTargetLatency— Während der laufenden Replikation kann die Datenvalidierung laufende Änderungen identifizieren und die Änderungen Zeile für Zeile validieren. Diese Metrik gibt die Latenz zum Lesen solcher Änderungen am Ziel an. Die Validierung kann mehr Abfragen als basierend auf der Anzahl von Änderungen erforderlich ausführen, wenn während der Validierung Fehler aufgetreten sind.

Um Datenvalidierungsinformationen aus CloudWatch aktivierten Statistiken zu sammeln, wählen Sie CloudWatch Protokolle aktivieren aus, wenn Sie eine Aufgabe mithilfe der Konsole erstellen oder ändern. Gehen Sie dann folgendermaßen vor, um die Informationen zur Datenvalidierung anzuzeigen und sicherzustellen, dass Ihre Daten korrekt von der Quelle zum Ziel migriert wurden.

  1. Wählen Sie die Aufgabe auf der Seite Datenbankmigrationsaufgaben aus.

  2. Wählen Sie die Registerkarte „CloudWatch Metriken“.

  3. Wählen Sie im Drop-down-Menü Validierung aus.

Erneutes Validieren von Tabellen während einer Aufgabe

Während eine Aufgabe ausgeführt wird, können Sie eine AWS DMS Datenvalidierung anfordern.

AWS-Managementkonsole

  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS DMS Konsole unter https://console.aws.amazon.com/dms/v2/.

    Wenn Sie als AWS Identity and Access Management (IAM-) Benutzer angemeldet sind, stellen Sie sicher, dass Sie über die entsprechenden Zugriffsberechtigungen verfügen AWS DMS. Die erforderlichen Berechtigungen finden Sie unterFür die Verwendung sind IAM-Berechtigungen erforderlich AWS DMS.

  2. Wählen Sie im Navigationsbereich Tasks (Aufgaben) aus.

  3. Wählen Sie die laufende Aufgabe mit der Tabelle aus, die sie erneut validieren möchten.

  4. Wählen Sie die Registerkarte Table Statistics (Tabellenstatistiken).

  5. Wählen Sie die Tabelle aus, die Sie erneut validieren möchten (Sie können bis zu 10 Tabellen gleichzeitig auswählen). Für Aufgaben, die derzeit nicht mehr ausgeführt werden, kann die Tabelle bzw. können die Tabellen nicht erneut validiert werden.

  6. Wählen Sie Revalidate (Erneut validieren).

Ändern von Validierungsregeln mithilfe des JSON-Editors

Gehen Sie wie folgt vor, um einer Aufgabe mithilfe des JSON-Editors von der AWS DMS Konsole aus eine Validierungsregel hinzuzufügen:

  1. Wählen Sie Datenbankmigrationsaufgaben aus.

  2. Wählen Sie Ihre Aufgabe in der Liste der Migrationsaufgaben aus.

  3. Wenn Ihre Aufgabe gerade ausgeführt wird, wählen Sie im Drop-down-Menü Aktionen die Option Stoppen aus.

  4. Nachdem die Aufgabe beendet wurde, wählen Sie im Drop-down-Menü Aktionen die Option Ändern aus, um die Aufgabe zu ändern.

  5. Wählen Sie im Abschnitt Tabellenzuordnungen die Option JSON-Editor aus und fügen Sie den Tabellenzuordnungen Ihre Validierungsregel hinzu.

Sie können beispielsweise die folgende Validierungsregel hinzufügen, um eine Ersetzungsfunktion für die Quelle auszuführen. Wenn die Validierungsregel in diesem Fall auf ein Null-Byte trifft, wird dieses als Leerzeichen validiert.

{ "rule-type": "validation", "rule-id": "1", "rule-name": "1", "rule-target": "column", "object-locator": { "schema-name": "Test-Schema", "table-name": "Test-Table", "column-name": "Test-Column" }, "rule-action": "override-validation-function", "source-function": "REPLACE(${column-name}, chr(0), chr(32))", "target-function": "${column-name}" }
Anmerkung

override-validation-functionwird nicht wirksam, wenn die Spalte Teil des Primärschlüssels ist.

Reine Validierungsaufgaben

Sie können reine Validierungsaufgaben erstellen, um Daten in der Vorschau anzuzeigen und zu validieren, ohne eine Migration oder Datenreplikation auszuführen. Setzen Sie die Einstellungen EnableValidation und ValidationOnly auf true, um eine reine Validierungsaufgabe zu erstellen. Bei Aktivierung von ValidationOnly gelten zusätzliche Anforderungen. Weitere Informationen finden Sie unter Aufgabeneinstellungen zur Datenvalidierung.

Bei einer reinen Volllast-Migration wird eine reine Validierungsaufgabe viel schneller abgeschlossen als ihr CDC-Äquivalent, wenn viele Fehler gemeldet werden. Änderungen am Quell- oder Zielendpunkt werden im Volllastmodus jedoch als Fehler gemeldet, was einen möglichen Nachteil darstellt.

Bei einer reinen CDC-Validierungsaufgabe werden die Validierung auf der Grundlage der durchschnittlichen Latenz verzögert und Fehlschläge mehrmals wiederholt, bevor sie gemeldet werden. Wenn die meisten Datenvergleiche zu Fehlern führen, ist eine reine Validierungsaufgabe für den CDC-Modus sehr langsam, was einen möglichen Nachteil darstellt.

Eine reine Validierungsaufgabe muss in derselben Richtung wie die Replikationsaufgabe eingerichtet werden, insbesondere für CDC. Dies liegt daran, dass bei einer reinen CDC-Validierungsaufgabe anhand des Änderungsprotokolls der Quelle ermittelt wird, welche Zeilen geändert wurden und neu validiert werden müssen. Wenn das Ziel als Quelle angegeben ist, sind nur Änderungen bekannt, die von DMS an das Ziel gesendet wurden, und es kann nicht garantiert werden, dass Replikationsfehler erkannt werden.

Reine Volllastvalidierung

Ab AWS DMS Version 3.4.6 und höher vergleicht eine reine Volllast-Validierungsaufgabe schnell alle Zeilen aus der Quell- und Zieltabelle in einem einzigen Durchgang, meldet sofort alle Fehler und wird dann heruntergefahren. In diesem Modus wird die Validierung nie aufgrund von Fehlern unterbrochen; sie ist auf Geschwindigkeit optimiert. Änderungen am Quell- oder Zielendpunkt werden jedoch als Fehler gemeldet.

Anmerkung

Ab AWS DMS Version 3.4.6 und höher gilt dieses Validierungsverhalten auch für Volllast-Migrationsaufgaben mit aktivierter Validierung.

Reine CDC-Validierung

Bei einer reinen CDC-Validierungsaufgabe werden alle vorhandenen Zeilen zwischen den Quell- und Zieltabellen bei einem Neustart validiert. Darüber hinaus wird eine reine CDC-Validierungsaufgabe kontinuierlich ausgeführt, laufende Replikationsänderungen werden erneut validiert, die Anzahl der bei jedem Durchlauf gemeldeten Fehler werden begrenzt und es wird versucht, nicht übereinstimmende Zeilen erneut auszuführen, bevor sie fehlschlagen. Diese Aufgaben sind so optimiert, dass Fehlalarme vermieden werden.

Die Validierung einer Tabelle (oder der gesamten Aufgabe) wird unterbrochen, wenn die Schwellenwerte FailureMaxCount oder TableFailureMaxCount überschritten werden. Dies gilt auch für eine CDC- oder Volllast-und-CDC-Migrationsaufgabe mit aktivierter Validierung. Bei einer CDC-Aufgabe mit aktivierter Validierung wird die erneute Validierung für jede geänderte Zeile auf der Grundlage der durchschnittlichen Quell- und Ziellatenz verzögert.

Bei einer reinen CDC-Validierungsaufgabe werden jedoch keine Daten migriert und es ist keine Latenz vorhanden. Standardmäßig ist ValidationQueryCdcDelaySeconds auf 180 festgelegt. Sie können ihn erhöhen, um Umgebungen mit hoher Latenz zu berücksichtigen und Fehlalarme zu vermeiden.

Anwendungsfälle für die reine Validierung

Zu den Anwendungsfällen für die Aufteilung des Datenvalidierungsteils einer Migrations- oder Replikationsaufgabe in eine separate reine Validierungsaufgabe gehören unter anderem die folgenden:

  • Genaue Kontrolle über den Zeitpunkt der Validierung – Validierungsabfragen belasten sowohl die Quell- als auch die Zielendpunkte zusätzlich. Daher kann es von Vorteil sein, zuerst Daten in einer Aufgabe zu migrieren oder zu replizieren und dann die Ergebnisse in einer anderen Aufgabe zu validieren.

  • Geringere Belastung der Replikations-Instance – Es kann von Vorteil sein, die Datenvalidierung aufzuteilen, sodass sie auf einer eigenen Instance ausgeführt wird.

  • Schnelle Ermittlung, wie viele Zeilen zu einem bestimmten Zeitpunkt nicht übereinstimmen – Sie können beispielsweise kurz vor oder während eines Produktions-Cut-overs zu einem Zielendpunkt in einem Wartungsfenster eine reine Volllast-Validierungsaufgabe erstellen, um eine Antwort auf Ihre Frage zu erhalten.

  • Erwartetes Auftreten von Validierungsfehlern für eine Migrationsaufgabe mit einer CDC-Komponente – Wenn beispielsweise Oracle varchar2 zu PostgreSQL jsonb migriert wird, wiederholt die CDC-Validierung diese fehlgeschlagenen Zeilen und begrenzt die Anzahl der Fehler, die jedes Mal gemeldet werden. Sie können jedoch eine reine Volllast-Validierungsaufgabe erstellen und eine schnellere Antwort erhalten.

  • Sie haben eine Datenreparatur entwickelt script/utility , die die Tabelle mit Validierungsfehlern liest — (Siehe auch,Fehlerbehebung). Eine reine Volllast-Validierungsaufgabe meldet schnell Fehler, damit das Skript zur Datenreparatur darauf reagieren kann.

Ein Beispiel für ValidationSettings-Aufgabeneinstellungen in einer JSON-Datei finden Sie unter Beispiel für Aufgabeneinstellungen.

Fehlerbehebung

AWS DMS Erstellt während der Validierung eine neue Tabelle am Zielendpunkt:awsdms_control.awsdms_validation_failures_v1. Wenn ein Datensatz in den ValidationFailed Status ValidationSuspended oder wechselt, werden Diagnoseinformationen in den Status AWS DMS geschriebenawsdms_control.awsdms_validation_failures_v1. Sie können diese Tabelle zur Behebung von Validierungsfehlern abfragen.

Informationen zum Ändern des Standardschemas, in dem die Tabelle auf dem Ziel erstellt wird, finden Sie unter Control table task settings.

Im Folgenden finden Sie eine Beschreibung der Tabelle awsdms_control.awsdms_validation_failures_v1:

Name der Spalte Datentyp Description

TASK_NAME

VARCHAR(128) NOT NULL

AWS DMS Aufgaben-ID.

TABLE_OWNER VARCHAR(128) NOT NULL

Der Name des Schemabesitzers.

TABLE_NAME

VARCHAR(128) NOT NULL

Tabellenname.

FAILURE_TIME DATETIME(3) NOT NULL

Zeitpunkt, zu dem der Fehler aufgetreten ist.

KEY_TYPE VARCHAR(128) NOT NULL

Reserviert für zukünftige Verwendung (Wert ist immer „Zeile“)

KEY TEXT NOT NULL

Dies ist der Primärschlüssel für den Zeilendatensatztyp.

FAILURE_TYPE VARCHAR(128) NOT NULL

Schweregrad des Validierungsfehlers. Kann entwederRECORD_DIFF, MISSING_SOURCEMISSING_TARGET, oder seinTABLE_WARNING.

DETAILS VARCHAR(8000) NOT NULL

JSON-formatierte Zeichenfolge aller source/target Spaltenwerte, die nicht mit dem angegebenen Schlüssel übereinstimmen.

Im Folgenden finden Sie eine Beispielabfrage für ein MySQL-Ziel, die Ihnen alle Fehler für eine Aufgabe anzeigt, indem sie die awsdms_control.awsdms_validation_failures_v1 Tabelle abfragt. Beachten Sie, dass der Schemaname und die Abfragesyntax je nach Version der Ziel-Engine variieren. Der Aufgabenname sollte die externe Ressourcen-ID der Aufgabe sein. Die externe Ressourcen-ID der Aufgabe ist der letzte Wert des Aufgaben-ARNs. Bei einer Aufgabe mit einem ARN-Wert von arn:aws:dms:us-west-2:5599:task: VFPFKH4FJR3FTYKK2RYSI wäre die externe Ressourcen-ID beispielsweise VFPFKH4FJR3FTYKK2RYSI.

select * from awsdms_validation_failures_v1 where TASK_NAME = 'VFPFKH4FJR3FTYKK2RYSI' TASK_NAME VFPFKH4FJR3FTYKK2RYSI TABLE_OWNER DB2PERF TABLE_NAME PERFTEST FAILURE_TIME 2020-06-11 21:58:44 KEY_TYPE Row KEY {"key": ["3451491"]} FAILURE_TYPE RECORD_DIFF DETAILS [[{'MYREAL': '+1.10106036e-01'}, {'MYREAL': '+1.10106044e-01'}],]

Sie können sich das Feld DETAILS ansehen, um zu ermitteln, welche Spalten nicht übereinstimmen. Da Sie den Primärschlüssel des fehlgeschlagenen Datensatzes haben, können Sie die Quell- und Zielendpunkte abfragen, um zu erfahren, welcher Teil des Datensatzes nicht übereinstimmt.

awsdms_validation_failures_v2-Steuertabelle

Während der Validierung erstellt DMS in AWS DMS Version 3.6.1 und höher eine neue Tabelle am PostgreSQL-Zielendpunkt:. awsdms_validation_failures_v2 Diese Tabelle besteht aus Fehlern bei allen DMS-Aufgaben, für die die Datenüberprüfung aktiviert ist. Wenn die awsdms_validation_failures_v2 Tabelle erstellt wird, sollten Sie die Tabelle nicht löschen oder kürzen, da dies bei allen Aufgaben, bei denen Validierung und Resynchronisierung aktiviert sind, zu Fehlern führen kann. awsdms_validation_failures_v2Die Tabelle verfügt über eine Funktion zum automatischen Inkrementieren des Primärschlüssels. Diese Tabelle besteht aus neuen Spalten, um die Funktion zum erneuten Synchronisieren von Daten zu unterstützen. Diese sind:

RESYNC_RESULT

Werte: SUCCESS oderFAILURE.

RESYNC_TIME

Zeitstempel mit einer Genauigkeit von Millisekunden. Der Standardwert ist, NULL wenn bei diesem Fehler nicht versucht wird, die Daten erneut zu synchronisieren.

RESYNC_ACTION

Werte: UPSERT oderDELETE.

RESYNC_ID

Primärschlüsselspalte mit aktivierter automatischer Erhöhung.

In der awsdms_validation_failures_v2 Tabelle wird den FAILURE_TIME Spalten,, und ein Index hinzugefügt TASK_NAME TABLE_OWNER TABLE_NAMEFAILURE_TYPE, um Fehler für eine bestimmte Tabelle in Ihrer Zieldatenbank effizient zu lesen. Im Folgenden finden Sie ein Beispiel für eine Create-Anweisung zum Erstellen einer awsdms_validation_failures_v2 Tabelle:

CREATE TABLE public.awsdms_validation_failures_v2 ( "RESYNC_ID" int8 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1 NO CYCLE) NOT NULL, "TASK_NAME" varchar(128) NOT NULL, "TABLE_OWNER" varchar(128) NOT NULL, "TABLE_NAME" varchar(128) NOT NULL, "FAILURE_TIME" timestamp NOT NULL, "KEY_TYPE" varchar(128) NOT NULL, "KEY" varchar(7800) NOT NULL, "FAILURE_TYPE" varchar(128) NOT NULL, "DETAILS" varchar(7000) NOT NULL, "RESYNC_RESULT" varchar(128) NULL, "RESYNC_TIME" timestamp NULL, "RESYNC_ACTION" varchar(128) NULL, CONSTRAINT awsdms_validation_failures_v2_pkey PRIMARY KEY ("RESYNC_ID") );

Redshift-Validierungsleistung

Amazon Redshift unterscheidet sich in mehrfacher Hinsicht von relationalen Datenbanken, darunter bei spaltenbasierter Speicherung, MPP, Datenkomprimierung und anderen Faktoren. Diese Unterschiede geben Redshift ein anderes Leistungsprofil als relationalen Datenbanken.

Während der Volllast-Replikationsphase verwendet die Validierung Bereichsabfragen, wobei die Datengröße durch die Einstellung PartitionSize bestimmt wird. Diese bereichsbasierten Abfragen wählen alle Datensätze aus der Quelltabelle aus.

Bei einer fortlaufenden Replikation wechseln Abfragen zwischen bereichsbasierten und individuellen Datensatzabrufen. Der Abfragetyp wird dynamisch anhand mehrerer Faktoren bestimmt, wie z. B. den folgenden:

  • Volumen der Abfrage

  • Typen von DML-Abfragen in der Quelltabelle

  • Latenz der Aufgabe

  • Gesamtzahl der Datensätze

  • Validierungseinstellungen wie PartitionSize

Möglicherweise wird Ihr Amazon-Redshift-Cluster aufgrund von Validierungsabfragen zusätzlich belastet. Da die oben genannten Faktoren je nach Anwendungsfall variieren, müssen Sie die Leistung Ihrer Validierungsabfrage überprüfen und Ihren Cluster und Ihre Tabelle entsprechend anpassen. Einige Optionen zur Minderung von Leistungsproblemen sind die folgenden:

  • Reduzieren Sie die Einstellungen PartitionSize und ThreadCount, um den Workload bei der Volllastvalidierung zu reduzieren. Beachten Sie, dass dies die Datenvalidierung verlangsamt.

  • Redshift erzwingt zwar keine Primärschlüssel, AWS DMS verlässt sich aber auf Primärschlüssel, um Datensätze auf dem Ziel für die Datenvalidierung eindeutig zu identifizieren. Wenn möglich, legen Sie den Primärschlüssel so fest, dass er dem Sortierschlüssel entspricht, so dass Abfragen zur Validierung bei vollständiger Auslastung schneller ausgeführt werden.

Verbesserte Datenvalidierung für AWS Database Migration Service

AWS Database Migration Service hat die Leistung bei der Datenvalidierung bei Datenbankmigrationen verbessert, sodass Kunden große Datensätze mit deutlich schnelleren Verarbeitungszeiten validieren können. Diese verbesserte Datenvalidierung ist jetzt in Version 3.5.4 der Replikationsengine sowohl für Volllast- als auch für Volllast-Migrationsaufgaben mit CDC-Migration verfügbar. Derzeit unterstützt diese Erweiterung Migrationspfade von Oracle zu PostgreSQL, SQL Server zu PostgreSQL, Oracle zu Oracle und SQL Server zu SQL Server. Zusätzliche Migrationspfade sind für zukünftige Versionen geplant.

Voraussetzungen

  • Oracle: Erteilen Sie dem Benutzerkonto, das auf SYS.DBMS_CRYPTO den Oracle-Endpunkt zugreift, die EXECUTE Berechtigung:

    GRANT EXECUTE ON SYS.DBMS_CRYPTO TO dms_endpoint_user;
  • Installieren Sie die pgcrypto Erweiterung in der PostgreSQL-Datenbank:

    Für selbstverwaltete PostgreSQL-Instanzen müssen Sie die contrib Modulbibliotheken installieren und die Erweiterung erstellen:

    • Installieren Sie die Modulbibliothekencontrib. Zum Beispiel auf einer Amazon EC2-Instance mit Amazon Linux und PostgreSQL 15:

      sudo dnf install postgresql15-contrib
    • Erstellen Sie die Erweiterung: pgcrypto

      CREATE EXTENSION IF NOT EXISTS pgcrypto;
  • Konfigurieren Sie für Amazon RDS für PostgreSQL-Instances den SSL-Modus für den AWS DMS Endpunkt:

    • Standardmäßig erzwingt Amazon RDS eine SSL-Verbindung. Wenn Sie einen AWS DMS Endpunkt für eine Amazon RDS for PostgreSQL-Instance erstellen, verwenden Sie die Option „SSL-Modus“ = „erforderlich“.

    • Wenn Sie die Option „SSL-Modus“ = „none“ verwenden möchten, setzen Sie den rds.force_ssl Parameter in der RDS-Parametergruppe auf 0.

  • Erstellen Sie für PostgreSQL 12 und 13 das BIT_XOR Aggregat:

    CREATE OR REPLACE AGGREGATE BIT_XOR(IN v bit) (SFUNC = bitxor, STYPE = bit);

Verbesserte Einschränkungen bei der Datenvalidierung

Diese erweiterte Datenüberprüfungsfunktion hat die folgenden Einschränkungen:

  • Anforderungen an Datenbankendpunkte: Diese Verbesserung ist nur für Datenbankendpunkte aktiviert, die die folgenden Kriterien erfüllen:

    • Wird AWS Secrets Manager zum Speichern von Anmeldeinformationen verwendet.

    • Für Microsoft SQL Server wird die Kerberos-Authentifizierung ebenfalls unterstützt.

  • Unterstützung der Datenbankversion:

    • PostgreSQL 12 und höher

    • Oracle 12.1 und höher

    • Für Microsoft SQL Server-Versionen unter 2019 wird die Validierung der Datentypen NCHAR und NVARCHAR nicht unterstützt.

Einschränkungen

  • Die Validierung erfordert, dass die Tabelle über einen Primärschlüssel oder eindeutigen Index verfügt.

    • Primärschlüsselspalten dürfen nicht vom TypCLOB,BLOB, BINARY oder sein. BYTE

    • Bei Primärschlüsselspalten vom Typ VARCHAR oder CHAR muss die Länge kleiner sein als 1024. Sie müssen die Länge im Datentyp angeben. Sie können keine unbegrenzten Datentypen als Primärschlüssel für die Datenüberprüfung verwenden.

    • Ein mit der Klausel NOVALIDATE erstellter Oracle-Schlüssel wird nicht als Primärschlüssel oder eindeutiger Index betrachtet.

    • Bei einer Oracle-Tabelle ohne Primärschlüssel und nur mit einem eindeutigen Schlüssel müssen die Spalten mit der eindeutigen Einschränkung ebenfalls über eine NOT NULL-Einschränkung verfügen.

  • Die Validierung von PK/UK NULL-Werten wird nicht unterstützt.

  • Wenn die Kollation der Primärschlüsselspalte in der Ziel-PostgreSQL-Instance nicht auf "C" gesetzt ist, weicht die Sortierreihenfolge des Primärschlüssels von der Sortierreihenfolge in Oracle ab. Wenn sich die Sortierreihenfolgen in PostgreSQL und Oracle unterscheiden, kann die Datenvalidierung die Datensätze nicht validieren.

  • Die Validierung generiert zusätzliche Abfragen für die Quell- und Zieldatenbanken. Sie müssen dafür sorgen, dass beide Datenbanken über ausreichend Ressourcen für diese zusätzliche Auslastung verfügen. Dies gilt insbesondere für Redshift-Ziele. Weitere Informationen finden Sie unter Redshift-Validierungsleistung.

  • Die Datenvalidierung wird nicht unterstützt, wenn mehrere Datenbanken zu einer zusammengeführt werden.

  • Für einen Quell- oder Ziel-Oracle-Endpunkt AWS DMS verwendetDBMS_CRYPTO. Wenn Sie die Datenvalidierung auf einem Oracle-Endpoint verwenden, müssen Sie dem Benutzerkonto, das für den dbms_crypto Zugriff auf den Oracle-Endpoint verwendet wird, die Ausführungsberechtigung gewähren. Sie können dies tun, indem Sie die folgende Anweisung ausführen

    grant execute on sys.dbms_crypto to dms_endpoint_user;
  • Wenn die Zieldatenbank außerhalb oder AWS DMS während der Überprüfung geändert wird, werden Abweichungen möglicherweise nicht korrekt gemeldet. Dieses Ergebnis kann auftreten, wenn eine Ihrer Anwendungen Daten in die Zieltabelle schreibt, während sie für dieselbe Tabelle AWS DMS eine Validierung durchführt.

  • Wenn eine oder mehrere Zeilen während der Validierung kontinuierlich geändert werden, AWS DMS können diese Zeilen nicht validiert werden.

  • Wenn mehr als 10.000 fehlgeschlagene oder gesperrte Datensätze AWS DMS erkannt werden, wird die Überprüfung gestoppt. Bevor Sie fortfahren, müssen Sie sämtliche zugrundeliegenden Datenprobleme lösen.

  • AWS DMS unterstützt keine Datenvalidierung von Ansichten.

  • AWS DMS unterstützt keine Datenüberprüfung, wenn die Einstellungen für Aufgaben zur Zeichenersetzung verwendet werden.

  • AWS DMS unterstützt die Validierung des Oracle LONG-Typs nicht.

  • AWS DMS unterstützt die Validierung des Oracle Spatial-Typs während einer heterogenen Migration nicht.

  • Bei der Datenvalidierung werden die Spalten in Tabellen ignoriert, für die in der Tabellenzuordnung Datenmaskierungstransformationen vorhanden sind.

  • Bei der Datenüberprüfung wird eine gesamte Tabelle übersprungen, wenn für ihre Spalte eine Transformationsregel zur Datenmaskierung existiert. PK/UK Der Validierungsstatus wird für solche Tabellen als Kein Primärschlüssel angezeigt.

  • Die Datenvalidierung funktioniert nicht mit Amazon Aurora PostgreSQL Limitless. Beim Versuch, Tabellen in einer Limitless-Datenbank zu validieren, wird im Validierungsstatus „Kein Primärschlüssel“ für diese Tabellen angezeigt.

Informationen zu Einschränkungen bei Verwendung der S3-Zielvalidierung finden Sie unter Einschränkungen bei Verwendung der S3-Zielvalidierung.