Verwenden einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service - AWS Database Migration Service

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.

Verwenden einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service

Sie können mithilfe von AWS DMS Daten aus jeder von AWS DMS unterstützten Quelldaten-Engine zu jeder MySQL-kompatiblen Datenbank migrieren. Wenn Sie zu einer MySQL-kompatiblen On-Premises-Datenbank migrieren, erfordert AWS DMS, dass sich Ihre Quell-Engine innerhalb des AWS-Ökosystems befindet. Die Engine kann sich in einem von AWS verwalteten Service wie beispielsweise Amazon RDS, Amazon Aurora oder Amazon S3 befinden. Alternativ kann sich die Engine in einer selbstverwalteten Datenbank auf Amazon EC2 befinden.

Sie können mit SSL Verbindungen zwischen Ihrem MySQL-kompatiblen Endpunkt und der Replikations-Instance verschlüsseln. Weitere Informationen zur Verwendung von SSL mit einem MySQL-kompatiblen Endpunkt finden Sie unter Verwenden von SSL mit AWS Database Migration Service.

Informationen zu den Versionen von MySQL, die AWS DMS als Ziel unterstützt, finden Sie unter Ziele für AWS DMS.

Sie können die folgenden MySQL-kompatiblen Datenbanken als Ziele für AWS DMS verwenden:

  • MySQL Community Edition

  • MySQL Standard Edition

  • MySQL Enterprise Edition

  • MySQL Cluster Carrier Grade Edition

  • MariaDB Community Edition

  • MariaDB Enterprise Edition

  • MariaDB Column Store

  • Amazon Aurora MySQL

Anmerkung

Unabhängig von der Quell-Speicher-Engine (MyISAM, MEMORY usw.) erstellt AWS DMS eine MySQL-kompatible Zieltabelle standardmäßig als InnoDB-Tabelle.

Wenn Sie eine Tabelle benötigen, die eine andere Speicher-Engine als InnoDB verwendet, können Sie die Tabelle in der MySQL-kompatiblen Zieldatenbank manuell erstellen und die Tabelle mithilfe des Modus Nichts unternehmen migrieren. Weitere Informationen finden Sie unter Aufgabeneinstellungen für vollständiges Laden.

Weitere Details zum Arbeiten mit einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS finden Sie in den folgenden Abschnitten.

Verwenden einer beliebigen MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service

Bevor Sie mit einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS arbeiten, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:

  • Stellen Sie ein Benutzerkonto für AWS DMS bereit, das über Lese-/Schreibberechtigungen für die MySQL-kompatible Datenbank verfügt. Führen Sie die folgenden Befehle aus, um die erforderlichen Berechtigungen zu erstellen.

    CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON <schema>.* TO '<user acct>'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  • Während der Volllast-Migrationsphase müssen Sie Fremdschlüssel in Ihren Zieltabellen deaktivieren. Um während einer Volllastphase Fremdschlüsselprüfungen in einer MySQL-kompatiblen Datenbank zu deaktivieren, können Sie den folgenden Befehl zum Bereich Extra Verbindungsattribute der AWS DMS-Konsole für Ihren Zielendpunkt hinzufügen.

    Initstmt=SET FOREIGN_KEY_CHECKS=0;
  • Legen Sie den Datenbankparameter local_infile = 1 fest, um AWS DMS das Laden von Daten in die Zieldatenbank zu ermöglichen.

Einschränkungen bei der Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS Database Migration Service

Bei der Verwendung einer MySQL-Datenbank als Ziel unterstützt AWS DMS Folgendes nicht:

  • Die DDL-Anweisungen (Data Definition Language) TRUNCATE PARTITION, DROP TABLE und RENAME TABLE.

  • Verwenden einer ALTER TABLE table_name ADD COLUMN column_name-Anweisung zum Hinzufügen von Spalten an den Anfang oder in die Mitte einer Tabelle

  • Wenn im Rahmen einer Volllastaufgabe Daten in ein MySQL-kompatibles Ziel geladen werden, meldet AWS DMS keine Fehler, die durch Einschränkungen in den Aufgabenprotokollen verursacht werden. Dadurch kann es zu Fehlern aufgrund von doppelten Schlüsseln oder zu Unstimmigkeiten bei der Anzahl der Datensätze kommen. Dies ist auf die Art und Weise zurückzuführen, wie MySQL lokale Daten mit dem Befehl LOAD DATA behandelt. Während der Volllastphase müssen Sie folgende Schritte ausführen:

    • Einschränkungen deaktivieren

    • Mithilfe der AWS DMS-Validierung sicherstellen, dass die Daten konsistent sind

  • Wenn Sie den Wert einer Spalte auf den vorhandenen Wert aktualisieren, geben MySQL-kompatible Datenbanken die Warnung 0 rows affected zurück. Obwohl dieses Verhalten technisch gesehen kein Fehler ist, unterscheidet es sich von der Art und Weise, wie andere Datenbank-Engines mit solchen Fällen umgehen. Oracle führt beispielsweise eine Aktualisierung einer Zeile durch. Für MySQL-kompatible Datenbanken generiert AWS DMS einen Eintrag in der Steuerungstabelle awsdms_apply_exceptions und protokolliert folgende Warnung.

    Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details.
  • Aurora Serverless ist als Ziel für Amazon Aurora Version 1, kompatibel mit MySQL Version 5.6, verfügbar. Aurora Serverless ist als Ziel für Amazon Aurora Version 2, kompatibel mit MySQL Version 5.7, verfügbar. (Wählen Sie Aurora-MySQL-Version 2.07.1 aus, um Aurora Serverless mit MySQL-5.7-Kompatibilität verwenden zu können.) Weitere Informationen zu Aurora Serverless finden Sie unter Verwenden von Amazon Aurora Serverless im Amazon-Aurora-Benutzerhandbuch.

  • AWS DMS unterstützt die Verwendung eines Leser-Endpunkts für Aurora oder Amazon RDS nicht, es sei denn, die Instances befinden sich im Schreibmodus, d. h. die Parameter read_only und innodb_read_only sind auf 0 oder OFF gesetzt. Weitere Informationen zur Verwendung von Amazon RDS und Aurora als Ziele finden Sie in folgenden Themen:

Endpunkteinstellungen bei Verwendung einer MySQL-kompatiblen Datenbank als Ziel für AWS DMS

Sie können Endpunkteinstellungen zum Konfigurieren Ihrer MySQL-kompatiblen Zieldatenbank verwenden, ähnlich wie Sie zusätzliche Verbindungsattribute verwenden. Sie geben die Einstellungen beim Erstellen des Zielendpunkts über die AWS DMS-Konsole oder über den Befehl create-endpoint in der AWS CLI mit der JSON-Syntax --my-sql-settings '{"EndpointSetting": "value", ...}' an.

Die folgende Tabelle zeigt die Endpunkteinstellungen, die Sie mit MySQL als Ziel verwenden können.

Name Beschreibung

TargetDbType

Gibt an, wo die Quelltabellen in der Zieldatenbank migriert werden, entweder in einer einzelnen Datenbank oder mehreren Datenbanken. Wenn Sie SPECIFIC_DATABASE angeben, müssen Sie bei Verwendung der AWS CLI oder der AWS Management Console den Datenbanknamen angeben.

Standardwert: MULTIPLE_DATABASES

Zulässige Werte: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

Beispiel: --my-sql-settings '{"TargetDbType": "MULTIPLE_DATABASES"}'

ParallelLoadThreads

Verbessert die Leistung beim Laden von Daten in die MySQL-kompatible Zieldatenbank. Gibt an, wie viele Threads zum Laden der Daten in die MySQL-kompatible Zieldatenbank verwendet werden sollen. Das Festlegen einer großen Anzahl von Threads kann die Datenbankleistung beeinträchtigen, da für jeden Thread eine separate Verbindung erforderlich ist.

Standardwert: 1

Zulässige Werte: 1 bis 5

Beispiel: --my-sql-settings '{"ParallelLoadThreads": 1}'

AfterConnectScript

Gibt ein Skript an, das sofort ausgeführt wird, nachdem AWS DMS eine Verbindung mit dem Endpunkt hergestellt hat.

Sie können beispielsweise angeben, dass das MySQL-kompatible Ziel empfangene Anweisungen in den Latin1-Zeichensatz übersetzen soll. Dies ist der Zeichensatz, in den die Datenbank standardmäßig kompiliert wird. Dieser Parameter verbessert in der Regel die Leistung beim Umwandeln von UTF8-Clients.

Beispiel: --my-sql-settings '{"AfterConnectScript": "SET character_set_connection='latin1'"}'

MaxFileSize

Gibt die maximale Größe (in KB) einer CSV-Datei an, die zum Übertragen von Daten in eine MySQL-kompatible Datenbank verwendet wird.

Standardwert: 32768 KB (32 MB)

Gültige Werte: 1 bis 1 048 576

--my-sql-settings '{"MaxFileSize": 512}'

CleanSrcMetadataOnMismatch

Bereinigt und erstellt Tabellenmetadaten-Informationen auf der Replikations-Instance, wenn eine fehlende Übereinstimmung auftritt. Zum Beispiel in einer Situation, in der das Ausführen einer alter DDL auf der Tabelle zu unterschiedlichen Informationen über die in der Replikations-Instance zwischengespeicherte Tabelle führen könnte. Boolesch.

Standardwert: false

Beispiel: --my-sql-settings '{"CleanSrcMetadataOnMismatch": false}'

Sie können auch zusätzliche Verbindungsattribute verwenden, um Ihre MySQL-kompatible Zieldatenbank zu konfigurieren.

Die folgende Tabelle zeigt die zusätzlichen Verbindungsattribute, die Sie verwenden können, wenn MySQL das Ziel ist.

Name Beschreibung

Initstmt=SET FOREIGN_KEY_CHECKS=0;

Deaktiviert die Fremdschlüsselprüfungen.

Beispiel: --extra-connection-attributes "Initstmt=SET FOREIGN_KEY_CHECKS=0;"

Initstmt=SET time_zone

Gibt die Zeitzone für die MySQL-kompatible Zieldatenbank an.

Standardwert: UTC

Gültige Werte: Die in der MySQL-Zieldatenbank verfügbaren Zeitzonennamen.

Beispiel: --extra-connection-attributes "Initstmt=SET time_zone=US/Pacific;"

Alternativ können Sie den Parameter AfterConnectScript des Befehls --my-sql-settings verwenden, um Fremdschlüsselprüfungen zu deaktivieren und die Zeitzone für Ihre Datenbank anzugeben.

Zieldatentypen für MySQL

In der folgenden Tabelle sind die MySQL-Datenbank-Zieldatentypen aufgeführt, die bei Verwendung von AWS DMS unterstützt werden, sowie deren Standardzuweisung von AWS DMS-Datentypen.

Weitere Informationen zu AWS DMS-Datentypen finden Sie unter Datentypen für den AWS Database Migration Service.

AWS DMS-Datentypen

MySQL-Datentypen

BOOLEAN

BOOLEAN

BYTES

Ist die Länge 1 bis 65.535, verwenden Sie VARBINARY (Länge).

Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGLOB.

DATUM

DATUM

TIME

TIME

TIMESTAMP

Ist die Skalierung => 0 und =< 6, dann: DATETIME (Skalierung)

Ist die Skalierung => 7 und =< 9, dann: VARCHAR (37)

INT1

TINYINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

DECIMAL (p,s)

REAL4

FLOAT

REAL8

DOUBLE PRECISION

STRING

Ist die Länge 1 bis 21.845, verwenden Sie VARCHAR (Länge).

Ist die Länge 21.846 bis 2.147.483.647, verwenden Sie LONGTEXT.

UINT1

UNSIGNED TINYINT

UINT2

UNSIGNED SMALLINT

UINT4

UNSIGNED INTEGER

UINT8

UNSIGNED BIGINT

WSTRING

Ist die Länge 1 bis 32.767, verwenden Sie VARCHAR (Länge).

Ist die Länge 32.768 bis 2.147.483.647, verwenden Sie LONGTEXT.

BLOB

Ist die Länge 1 bis 65.535, verwenden Sie BLOB.

Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGBLOB.

Ist die Länge 0, verwenden Sie LONGBLOB (vollständige LOB-Unterstützung).

NCLOB

Ist die Länge 1 bis 65.535, verwenden Sie TEXT.

Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGTEXT mit ucs2 für CHARACTER SET.

Ist die Länge 0, verwenden Sie LONGTEXT (vollständige LOB-Unterstützung) mit ucs2 für CHARACTER SET.

CLOB

Ist die Länge 1 bis 65.535, verwenden Sie TEXT.

Ist die Länge 65.536 bis 2.147.483.647, verwenden Sie LONGTEXT.

Ist die Länge 0, verwenden Sie LONGTEXT (vollständige LOB-Unterstützung).