L'outil mysqldump exporte le schéma et les données d'une base de données sous la forme d'un fichier SQL contenant des instructions CREATE TABLE et INSERT, puis rejoue ce fichier sur l'instance cible. Privilégiez cette méthode lorsque le volume de données est faible ou que votre activité peut tolérer une interruption prolongée durant la migration.
Pour migrer vos données sans interrompre le service, utilisez plutôt le Data Transmission Service (DTS) . DTS prend en charge la réplication continue et permet un basculement avec un temps d'arrêt minimal.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Configuré une liste d'autorisation d'adresses IP pour l'instance RDS
Obtenu l'endpoint public de l'instance RDS
Créé les bases de données et les comptes de destination sur l'instance RDS
Pour obtenir les instructions de configuration, consultez la rubrique Workflow général pour utiliser ApsaraDB RDS for MySQL.
Cas d'utilisation
mysqldump constitue le choix approprié dans les situations suivantes :
Le volume de données est faible — l'exportation et l'importation s'achèvent dans votre fenêtre de maintenance
Une interruption de service est acceptable — les écritures dans la base de données source doivent être arrêtées pendant l'exportation afin de garantir la cohérence des données
Aucune réplication continue n'est requise — une copie logique ponctuelle suffit
Utilisez plutôt le service DTS si vous avez besoin d'un basculement sans interruption ou d'une réplication continue.
Remarques d'utilisation
Après la migration, tous les noms de tables provenant de l'instance MySQL autogérée sont stockés en minuscules sur l'instance RDS. Pour préserver la sensibilité à la casse des noms de tables, appliquez l'une des méthodes suivantes :
Nouvelles instances : Lors de la création d'une instance RDS for MySQL, définissez le paramètre Table Name Case Sensitivity sur Case-sensitive.
Instances existantes : Définissez le paramètre
lower_case_table_namessur0dans la console ApsaraDB RDS. Pour plus de détails, consultez la rubrique Modifier les paramètres d'une instance ApsaraDB RDS for MySQL
Une fois que vous avez défini le paramètre lower_case_table_names sur 0, ne le modifiez pas pour le ramener à 1. Cette opération risque de déclencher l'erreur ERROR 1146 (42S02): Table doesn't exist et d'affecter gravement vos charges de travail. Si votre instance RDS exécute MySQL 8.0, il est impossible de reconfigurer le paramètre lower_case_table_names après la création de l'instance.
Migration des données avec mysqldump
Les étapes suivantes utilisent un environnement Linux. Les mêmes commandes fonctionnent dans le terminal macOS ou l'invite de commandes Windows.
Étape 1 : Exporter les données depuis l'instance MySQL autogérée
Arrêtez toutes les écritures dans la base de données source avant d'exécuter l'exportation. La mise à jour des données pendant l'exportation peut corrompre le fichier de vidage.
Le compte utilisé pour l'exportation doit disposer des autorisations requises. Pour plus d'informations, consultez la documentation officielle de MySQL.
Exporter le schéma et les données (à l'exclusion des procédures stockées, des déclencheurs et des fonctions) :
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <db_name> --skip-triggers --skip-lock-tables > /tmp/<db_name>.sql
Exemple :
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers --skip-lock-tables > /tmp/testdb.sql
Pour exporter des données depuis une instance RDS for MySQL à la place, remplacez l'hôte, le nom d'utilisateur et le nom de la base de données par les valeurs RDS correspondantes.
L'indicateur --default-character-set=utf8 définit le jeu de caractères du fichier de vidage. Si la base de données source utilise un jeu de caractères différent, adaptez cet indicateur en conséquence. Une incompatibilité entre le jeu de caractères du fichier de vidage et celui de l'instance cible entraîne l'affichage de texte illisible après l'importation.
Exporter les procédures stockées, les déclencheurs et les fonctions :
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <db_name> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/*/' > /tmp/<db_name>Trigger.sql
Exemple :
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdbTrigger.sql
Ignorez cette commande si la base de données source ne contient aucune procédure stockée, aucun déclencheur ni aucune fonction.
Étape 2 : Télécharger les fichiers exportés vers une instance ECS
Téléchargez les fichiers .sql générés à l'étape 1 vers le répertoire /tmp d'une instance Elastic Compute Service (ECS) capable d'atteindre l'instance RDS.

Ignorez cette étape si l'instance MySQL autogérée s'exécute déjà sur une instance ECS.
Étape 3 : Importer les fichiers dans l'instance RDS
Exécutez les commandes suivantes sur l'instance ECS. Remplacez les espaces réservés par vos informations de connexion RDS.
mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>.sql
mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>Trigger.sql
Exemple :
mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdb.sql
mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdbTrigger.sql
| Espace réservé | Description | Exemple |
|---|---|---|
<RDS endpoint> |
Endpoint public de l'instance RDS | rm-bpxxxxx.mysql.rds.aliyuncs.com |
<port> |
Port de l'instance RDS | 3306 |
<account> |
Compte RDS (compte privilégié ou compte standard disposant des autorisations de lecture et d'écriture) | testuser |
<database> |
Nom de la base de données de destination (doit déjà exister sur l'instance RDS) | testdb |
Pour créer la base de données de destination si elle n'existe pas encore, consultez la rubrique Gérer les bases de données.
Étape 4 : Vérifier la migration
Utilisez DMS pour vous connecter à l'instance RDS et vérifiez que les tables, le nombre de lignes et les données sont corrects.
Étapes suivantes
Présentation des méthodes de migration des données — comparez mysqldump avec DTS et d'autres approches de migration
Modifier les paramètres d'une instance ApsaraDB RDS for MySQL — ajustez le paramètre
lower_case_table_nameset d'autres paramètres d'instance