Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Migrate MySQL data using mysqldump

Dernière mise à jour :Aug 19, 2026

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 :

Avertissement

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

Important

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.

result

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