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 Daten mit AWS DMS jeder der unterstützten Quell-Daten-Engines in jede MySQL-kompatible Datenbank migrieren. AWS DMS Wenn Sie zu einer lokalen MySQL-kompatiblen Datenbank migrieren, AWS DMS muss sich Ihre Quell-Engine innerhalb des Ökosystems befinden. AWS Die Engine kann sich in einem AWS verwalteten Service wie 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.

Hinweise zu Versionen von MySQL, die als Ziel AWS DMS unterstützen, finden Sie unterZiele für AWS DMS.

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

  • 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.

Verwendung 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:

  • Geben Sie ein Benutzerkonto an AWS DMS , 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 Fremdschlüsselprüfungen in einer MySQL-kompatiblen Datenbank während eines vollen Ladevorgangs zu deaktivieren, können Sie den folgenden Befehl zum Abschnitt Zusätzliche 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

Wenn Sie eine MySQL-Datenbank als Ziel verwenden, unterstützt Folgendes AWS DMS 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

  • Beim Laden von Daten in ein MySQL-kompatibles Ziel in einer Vollladeaufgabe werden AWS DMS keine Fehler gemeldet, die durch Einschränkungen in den Task-Logs verursacht werden, was zu doppelten Schlüsselfehlern oder Nichtübereinstimmungen mit der Anzahl der Datensätze führen kann. 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

    • Stellen Sie mithilfe der AWS DMS Validierung sicher, 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. AWS DMS Generiert für MySQL-kompatible Datenbanken einen Eintrag in der Steuertabelle awsdms_apply_exceptions und protokolliert die 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 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 Using Aurora Serverless v2 im Amazon Aurora Aurora-Benutzerhandbuch.

  • AWS DMS unterstützt die Verwendung eines Reader-Endpunkts für Aurora oder Amazon RDS nicht, es sei denn, die Instances befinden sich im Schreibmodus, d. h. die innodb_read_only Parameter read_only und 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 an, wenn Sie den Zielendpunkt mithilfe der AWS DMS Konsole oder mithilfe des create-endpoint Befehls in AWS CLI, mit der --my-sql-settings '{"EndpointSetting": "value", ...}' JSON-Syntax erstellen.

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 angebenSPECIFIC_DATABASE, müssen Sie den Datenbanknamen angeben, entweder wenn Sie den AWS CLI oder den verwenden AWS Management Console.

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

Die folgende Tabelle zeigt die Zieldatentypen der MySQL-Datenbank, die bei der Verwendung unterstützt werden, AWS DMS und die Standardzuweisung von AWS DMS Datentypen.

Weitere Hinweise zu AWS DMS Datentypen finden Sie unterDatentypen 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 (ZEITSTEMPEL)

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).