Utilisation d'une base de données compatible MySQL comme cible pour AWS Database Migration Service - AWS Service de Migration de Base de Données

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'une base de données compatible MySQL comme cible pour AWS Database Migration Service

Vous pouvez migrer des données vers n'importe quelle base de données compatible MySQL à l'aide AWS DMS de n'importe quel moteur de données source compatible. AWS DMS Si vous migrez vers une base de données compatible MySQL sur site, votre moteur source AWS DMS doit résider dans l'écosystème. AWS Le moteur peut se trouver sur un service AWS géré tel qu'Amazon RDS, Amazon Aurora ou Amazon S3. Sinon, le moteur peut se trouver sur une base de données autogérée sur Amazon EC2.

Vous pouvez utiliser SSL pour chiffrer les connexions entre votre point de terminaison compatible MySQL et l'instance de réplication. Pour plus d'informations sur l'utilisation de SSL avec un point de terminaison compatible MySQL, consultez Utilisation du protocole SSL avec AWS Database Migration Service.

Pour plus d'informations sur les versions de MySQL AWS DMS prises en charge en tant que cible, consultezObjectifs pour AWS DMS.

Vous pouvez utiliser les bases de données compatibles MySQL suivantes comme cibles pour : 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

Note

Quel que soit le moteur de stockage source (MyISAM, MEMORY, etc.), AWS DMS crée une table cible compatible MySQL en tant que table InnoDB par défaut.

Si vous avez besoin d'une table qui utilise un moteur de stockage autre qu'InnoDB, vous pouvez manuellement créer la table sur la cible compatible avec MySQL et migrer la table à l'aide de l'option Ne rien faire. Pour plus d’informations, consultez Paramètres de tâche de chargement complet.

Pour plus de détails sur l'utilisation d'une base de données compatible MySQL comme cible pour AWS DMS, consultez les sections suivantes.

Utiliser n'importe quelle base de données compatible MySQL comme cible pour AWS Database Migration Service

Avant de commencer à utiliser une base de données compatible avec MySQL comme cible pour AWS DMS, assurez-vous que les conditions préalables suivantes sont remplies :

  • Fournissez un compte utilisateur AWS DMS disposant de privilèges de lecture/écriture sur la base de données compatible MySQL. Pour créer les privilèges nécessaires, exécutez les commandes suivantes.

    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>'@'%';
  • Pendant la phase de migration de chargement complet, vous devez désactiver les clés étrangères sur vos tables cibles. Pour désactiver les vérifications par clé étrangère sur une base de données compatible MySQL pendant un chargement complet, vous pouvez ajouter la commande suivante à la section Attributs de connexion supplémentaires de la AWS DMS console pour votre point de terminaison cible.

    Initstmt=SET FOREIGN_KEY_CHECKS=0;
  • Définissez le paramètre de base de données local_infile = 1 pour permettre à AWS DMS de charger les données dans la base de données cible.

Limitations relatives à l'utilisation d'une base de données compatible MySQL comme cible pour AWS Database Migration Service

Lorsque vous utilisez une base de données MySQL comme cible, les AWS DMS fonctionnalités suivantes ne sont pas prises en charge :

  • Les instructions en langage de définition de données (DDL) TRUNCATE PARTITION, DROP TABLE et RENAME TABLE.

  • Utilisation d'une instruction ALTER TABLE table_name ADD COLUMN column_name pour ajouter des colonnes au début ou au milieu d'une table.

  • Lorsque vous chargez des données sur une cible compatible MySQL dans le cadre d'une tâche à chargement complet, AWS DMS ne signale pas les erreurs causées par des contraintes dans les journaux des tâches, ce qui peut entraîner des erreurs clés dupliquées ou des incohérences avec le nombre d'enregistrements. Cela est dû à la façon dont MySQL gère les données locales avec la commande LOAD DATA. Veillez à effectuer les opérations suivantes pendant la phase de chargement complet :

    • Désactivez les contraintes.

    • Utilisez AWS DMS la validation pour vous assurer que les données sont cohérentes.

  • Lorsque vous mettez à jour la valeur d'une colonne à sa valeur existante, les bases de données compatibles MySQL renvoient un avertissement 0 rows affected. Bien que ce comportement ne soit pas techniquement une erreur, il est différent de la façon dont la situation est gérée par d'autres moteurs de base de données. Par exemple, Oracle effectue une mise à jour d'une seule ligne. Pour les bases de données compatibles avec MySQL, AWS DMS génère une entrée dans la table de contrôle awsdms_apply_exceptions et enregistre l'avertissement suivant.

    Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details.
  • Aurora sans serveur est disponible en tant que cible pour Amazon Aurora version 2, compatible avec MySQL version 5.7. (Sélectionnez Aurora MySQL version 2.07.1 pour pouvoir utiliser Aurora sans serveur avec la compatibilité MySQL 5.7.) Pour plus d'informations sur Aurora Serverless, consultez la section Utilisation d'Aurora Serverless v2 dans le guide de l'utilisateur Amazon Aurora.

  • AWS DMS ne prend pas en charge l'utilisation d'un point de terminaison de lecteur pour Aurora ou Amazon RDS, sauf si les instances sont en mode inscriptible, c'est-à-dire que les innodb_read_only paramètres read_only et sont définis sur ou. 0 OFF Pour plus d’informations sur l’utilisation d’Amazon RDS et Aurora en tant que cibles, consultez les rubriques suivantes :

Paramètres du point de terminaison lors de l'utilisation d'une base de données compatible MySQL comme cible pour AWS DMS

Vous pouvez utiliser des paramètres de point de terminaison pour configurer la base de données cible compatible MySQL comme si vous utilisiez des attributs de connexion supplémentaires. Vous spécifiez les paramètres lorsque vous créez le point de terminaison cible à l'aide de la AWS DMS console ou à l'aide de la create-endpoint commande dans le AWS CLI, avec la syntaxe --my-sql-settings '{"EndpointSetting": "value", ...}' JSON.

Les paramètres de point de terminaison que vous pouvez utiliser avec MySQL en tant que cible sont indiqués dans le tableau suivant.

Name (Nom) Description

TargetDbType

Spécifie l'endroit où migrer des tables sources sur la cible, vers une seule base de données ou plusieurs bases de données. Si vous le spécifiezSPECIFIC_DATABASE, vous devez spécifier le nom de la base de données, soit lorsque vous utilisez le, AWS CLI soit le AWS Management Console.

Valeur par défaut : MULTIPLE_DATABASES

Valeurs valides : {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

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

ParallelLoadThreads

Améliore les performances lors du chargement des données dans la base de données cible compatible MySQL. Spécifie le nombre de threads à utiliser pour charger les données dans la base de données cible compatible MySQL. La définition d'un grand nombre de threads peut avoir un impact négatif sur les performances de base de données, dans la mesure où une connexion distincte est requise pour chaque thread.

Valeur par défaut : 1

Valeurs valides : 1 à 5

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

AfterConnectScript

Spécifie un script à exécuter immédiatement après la connexion de AWS DMS au point de terminaison.

Par exemple, vous pouvez indiquer que la cible compatible MySQL doit traduire les instructions reçues dans le jeu de caractères latin1, qui est le jeu de caractères compilé par défaut de la base de données. Ce paramètre améliore généralement les performances lors d'une conversion à partir de clients UTF8.

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

MaxFileSize

Spécifie la taille maximale (en Ko) de tout fichier .csv utilisé pour transférer des données vers une base de données compatible avec MySQL.

Valeur par défaut : 32 768 Ko (32 Mo)

Valeurs valides : 1 à 1 048 576

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

CleanSrcMetadataOnMismatch

Nettoie et recrée les informations de métadonnées de table sur l'instance de réplication lorsqu'une non-correspondance survient. Par exemple, lorsque l'exécution d'une instruction alter DDL sur la table pourrait générer des informations différentes sur la table mise en cache dans l'instance de réplication. Booléen.

Valeur par défaut : false

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

Vous pouvez également utiliser les attributs de connexion supplémentaires pour configurer la base de données cible compatible MySQL.

Le tableau suivant indique les attributs de connexion supplémentaires que vous pouvez utiliser avec MySQL en tant que cible.

Name (Nom) Description

Initstmt=SET FOREIGN_KEY_CHECKS=0;

Désactive les contrôles de clés étrangères.

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

Initstmt=SET time_zone

Spécifie le fuseau horaire pour la base de données compatible MySQL cible.

Valeur par défaut : UTC

Valeurs valides : noms des fuseaux horaires disponibles dans la base de données MySQL cible.

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

Vous pouvez également utiliser le paramètre AfterConnectScript de la commande --my-sql-settings pour désactiver les contrôles de clés étrangères et spécifier le fuseau horaire de la base de données.

Types de données cibles pour MySQL

Le tableau suivant indique les types de données cibles de base de données MySQL pris en charge lors de l'utilisation AWS DMS et le mappage par défaut à partir AWS DMS des types de données.

Pour plus d'informations sur AWS DMS les types de données, consultezTypes de données pour AWS Database Migration Service.

AWS DMS types de données

Types de données MySQL

BOOLEAN

BOOLEAN

BYTES

Si la longueur est comprise entre 1 et 65 535, utilisez VARBINARY (length).

Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGLOB.

DATE

DATE

TIME

TIME

TIMESTAMP

« Si l'échelle est => 0 et =< 6, alors : DATETIME (Scale)

Si l'échelle est => 7 et =< 9, alors : VARCHAR (37) »

INT1

TINYINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

DECIMAL (p,s)

REAL4

FLOAT

REAL8

DOUBLE PRECISION

CHAÎNE

Si la longueur est comprise entre 1 et 21 845, utilisez VARCHAR (length).

Si la longueur est comprise entre 21 846 et 2 147 483 647, utilisez LONGTEXT.

UINT1

UNSIGNED TINYINT

UINT2

UNSIGNED SMALLINT

UINT4

UNSIGNED INTEGER

UINT8

UNSIGNED BIGINT

WSTRING

Si la longueur est comprise entre 1 et 32 767, utilisez VARCHAR (length).

Si la longueur est comprise entre 32 768 et 2 147 483 647, utilisez LONGTEXT.

BLOB

Si la longueur est comprise entre 1 et 65 535, utilisez BLOB.

Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGBLOB.

Si la longueur est 0, utilisez LONGBLOB (full LOB support).

NCLOB

Si la longueur est comprise entre 1 et 65 535, utilisez TEXT.

Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGTEXT avec ucs2 pour CHARACTER SET.

Si la longueur est 0, utilisez LONGTEXT (full LOB support) avec ucs2 pour CHARACTER SET.

CLOB

Si la longueur est comprise entre 1 et 65 535, utilisez TEXT.

Si la longueur est comprise entre 65 536 et 2 147 483 647, utilisez LONGTEXT.

Si la longueur est 0, utilisez LONGTEXT (full LOB support).