View a markdown version of this page

Utiliser une MySQL-compatible base de données comme cible pour AWS Database Migration Service - AWS Database Migration Service

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.

Utiliser une MySQL-compatible base de données comme cible pour AWS Database Migration Service

Vous pouvez migrer des données vers n'importe quelle MySQL-compatible base de données à l'aide AWS DMS de n'importe quel moteur de données source AWS DMS compatible. Si vous migrez vers une MySQL-compatible base de données sur site, votre moteur source AWS DMS doit résider au sein de l' AWS écosystème. 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 le protocole SSL pour chiffrer les connexions entre votre MySQL-compatible point de terminaison et l'instance de réplication. Pour plus d'informations sur l'utilisation du protocole SSL avec un MySQL-compatible point de terminaison, consultezUtilisation 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 MySQL-compatible bases de données 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 MySQL-compatible une table cible en tant que table InnoDB par défaut.

Si vous avez besoin d'une table dans un moteur de stockage autre qu'InnoDB, vous pouvez créer manuellement la table sur la MySQL-compatible cible et migrer la table à l'aide de l'option Ne rien faire. Pour de plus amples informations, veuillez consulter Full-load paramètres des tâches.

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

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

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

  • Fournissez un compte utilisateur doté de read/write privilèges AWS DMS d'accès à la MySQL-compatible base de données. 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, CREATE TEMPORARY TABLES 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 MySQL-compatible base de données 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.

  • Accordez les privilèges suivants si vous utilisez les évaluations MySQL-specific de prémigration.

    grant select on mysql.user to <dms_user>; grant select on mysql.db to <dms_user>; grant select on mysql.tables_priv to <dms_user>; grant select on mysql.role_edges to <dms_user> #only for MySQL version 8.0.11 and higher

Considérations relatives aux cibles Aurora MySQL 8.4

Aurora MySQL 8.4 introduit des modifications de sécurité susceptibles d'affecter la connectivité des terminaux AWS DMS cibles. Consultez les points suivants avant de mettre à niveau votre cible Aurora MySQL vers la version 8.4.

Application du protocole TLS

Aurora MySQL 8.4 est défini require_secure_transport sur ON par défaut, ce qui signifie que toutes les connexions doivent utiliser le protocole TLS. Si votre point de terminaison AWS DMS cible se connecte à Aurora MySQL 8.4 et que le mode SSL est défini sur none, les connexions seront rejetées. Si le mode SSL de votre point de terminaison est défini sur aucun, vous recevrez le message d'erreur suivant :MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON. Définissez le mode SSL du point de terminaison sur verify-ca ou verify-full. Les deux modes nécessitent un certificat CA. Vous pouvez également le require_secure_transport définir OFF dans le groupe de paramètres de votre cluster Aurora pour autoriser les connexions non chiffrées.

Note

Aurora MySQL 8.4 ne prend en charge que les suites de chiffrement GCM pour TLS 1.2. Tous les CBC-mode chiffrements ont été supprimés. AWS DMS utilise le protocole TLS 1.2 pour les points de terminaison MySQL et Aurora MySQL et négocie automatiquement un chiffrement GCM pris en charge. Si vous avez des configurations de chiffrement personnalisées, vérifiez qu'elles incluent l'un des chiffrements pris en charge suivants : ECDHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES128-GCM-SHA256 ou. ECDHE-ECDSA-AES256-GCM-SHA384

Note

AWS DMS ne prend pas en charge le protocole TLS 1.3 pour les points de terminaison MySQL. Cela n'affecte pas la connectivité à Aurora MySQL 8.4, car Aurora MySQL 8.4 continue de prendre en charge le protocole TLS 1.2.

Authentification (Aurora MySQL et RDS pour MySQL 8.4)

Aurora MySQL 8.4 remplace le default_authentication_plugin paramètre parauthentication_policy, dont la valeur par défaut est. *:caching_sha2_password Les utilisateurs de base de données existants conservent leur plug-in d'authentification actuel après la mise à niveau. Si vous créez de nouveaux utilisateurs de AWS DMS terminaux après la mise à niveau, ils les utiliseront caching_sha2_password par défaut, sauf si vous authentication_policy les définissez *:mysql_native_password dans votre groupe de paramètres de cluster.

Réinitialisation du mot de passe utilisateur principal

Après la mise à niveau vers Aurora MySQL 8.4, la réinitialisation du mot de passe de l'utilisateur principal via la AWS Management Console CLI ou via la rotation de Secrets Manager définit le plugin d'authentification de l'utilisateur principal sur la valeur par défaut définie par le authentication_policy paramètre. S'il authentication_policy est défini sur sa valeur par défaut (*:caching_sha2_password), le plugin d'authentification de l'utilisateur principal passe de mysql_native_password à caching_sha2_password lors de la prochaine réinitialisation du mot de passe.

Si votre point de terminaison AWS DMS cible utilise le compte utilisateur principal, vérifiez la connectivité après chaque réinitialisation du mot de passe. Pour éviter de modifier le plugin d'authentification, vous pouvez soit :

  • Définissez sur authentication_policy *:mysql_native_password dans le groupe de paramètres de votre cluster avant de réinitialiser le mot de passe, ou

  • Créez un utilisateur de AWS DMS terminal dédié avec un plugin d'authentification explicitement spécifié (recommandé). Par exemple : CREATE USER 'dms_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Pour plus d'informations sur les modifications apportées à la sécurité d'Aurora MySQL 8.4, consultez les sections Sécurité avec Amazon Aurora MySQL et Gestion des mots de passe avec Amazon Aurora et Secrets Manager dans le guide de l'utilisateur Amazon Aurora. Pour plus d'informations sur les problèmes connus liés au plug-in d'authentification, consultez la section Plug-in d'authentification dans le guide de l'utilisateur Amazon RDS.

Limitations relatives à l'utilisation d'une MySQL-compatible base de données 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 vers une MySQL-compatible cible 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 MySQL-compatible bases de données renvoient un 0 rows affected avertissement. 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 MySQL-compatible bases de données, 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 :

  • Lors de la réplication du type de données TIME, une fraction de la valeur temporelle n'est pas répliquée.

  • Lors de la réplication du type de données TIME avec un attribut de connexion supplémentaireloadUsingCSV=false, la valeur temporelle est limitée à une plage. [00:00:00, 23:59:59]

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

Vous pouvez utiliser les paramètres du point de terminaison pour configurer votre base de données MySQL-compatible cible de la même manière que 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.

Nom Description

ConnectionTimeout

Utilisez cet attribut de connexion supplémentaire (ECA) pour définir le délai de connexion du point de terminaison pour l'instance MySQL, en secondes. La valeur par défaut est de 10 secondes. Exemple ECA :ConnectionTimeout=30.

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 de données dans la base de données MySQL-compatible cible. Spécifie le nombre de threads à utiliser pour charger les données dans la base de données MySQL-compatible cible. 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 spécifier que la MySQL-compatible cible 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 MySQL-compatible base de données.

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

Valeurs valides : 1 à 1 048 576

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

Vous pouvez également utiliser des attributs de connexion supplémentaires pour configurer votre base de données MySQL-compatible cible.

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

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 de la base de MySQL-compatible données 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).