Partager via


Migrer une base de données MySQL vers Azure Database pour MySQL – Serveur flexible à l’aide de la sauvegarde et de la restauration

Cet article décrit deux méthodes courantes pour sauvegarder et restaurer des bases de données dans un serveur flexible Azure Database pour MySQL.

  • Sauvegarder et restaurer à partir de la ligne de commande (en utilisant mysqldump).
  • Sauvegarder et restaurer en utilisant PHPMyAdmin.

Vous pouvez également consulter le Guide de migration de bases de données pour obtenir des informations détaillées et des cas d’utilisation sur la migration de bases de données vers Azure Database pour MySQL – Serveur flexible. Ce guide fournit des instructions pour réussir la planification et l’exécution d’une migration MySQL vers Azure.

Avant de commencer

Pour suivre ce guide pratique, vous avez besoin des éléments suivants :

Conseil

Si vous souhaitez migrer de grandes bases de données avec des tailles supérieures à 1 To, vous voudrez peut-être envisager des outils de la communauté comme mydumper/myloader qui prend en charge l’exportation et l’importation parallèles. Découvrez comment migrer de grandes bases de données MySQL.

Cas d’utilisation courants de sauvegarde et de restauration

Les cas d’utilisation les plus courants sont les suivants :

  • Partir d’un autre fournisseur de services managés : la plupart des fournisseurs de services managés risquent de ne pas fournir l’accès au fichier de stockage physique pour des raisons de sécurité, de sorte que la sauvegarde et la restauration logiques constituent la seule option pour la migration.

  • Migration à partir d’un environnement local ou d’une machine virtuelle : Azure Database pour MySQL – Serveur logique ne prend pas en charge la restauration des sauvegardes physiques, ce qui fait de la sauvegarde et de la restauration logiques la SEULE approche possible.

  • Déplacement de votre stockage de sauvegarde d’un stockage localement redondant vers un stockage géo-redondant : Azure Database pour MySQL – Serveur flexible autorise la configuration d’un stockage localement redondant ou géo-redondant, car la sauvegarde est uniquement autorisée lors de la création du serveur. Une fois que le serveur est approvisionné, vous ne pouvez pas changer l’option de redondance du stockage des sauvegardes. Pour déplacer votre stockage de sauvegarde d’un stockage localement redondant vers un stockage géo-redondant, la sauvegarde et la restauration constituent la SEULE option possible.

  • Migration à partir de moteurs de stockage alternatifs vers InnoDB : Azure Database pour MySQL – Serveur flexible prend en charge le moteur de stockage InnoDB uniquement. Par conséquent, il ne prend pas en charge les autres moteurs de stockage. Si vos tables sont configurées avec d’autres moteurs de stockage, convertissez-les au format du moteur InnoDB avant la migration vers Azure Database pour MySQL – Serveur flexible.

    Par exemple, si votre site WordPress ou votre application web utilise des tables MyISAM, commencez par convertir ces tables en effectuant une migration vers le format InnoDB avant la restauration vers Azure Database pour MySQL – Serveur flexible. Utilisez la clause ENGINE=InnoDB pour définir le moteur utilisé lors de la création d’une table, puis transférez les données vers la table compatible avant la restauration.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

Important

  • Pour éviter tout problème de compatibilité, assurez-vous d’utiliser la même version de MySQL sur les systèmes source et de destination lors de la sauvegarde des bases de données. Par exemple, si votre serveur MySQL existant est dans la version 5.7, vous devez effectuer une migration vers une instance de serveur flexible Azure Database pour MySQL configurée pour exécuter la version 5.7. La commande mysql_upgrade ne fonctionne pas avec une instance de serveur flexible Azure Database pour MySQL et n’est pas prise en charge.
  • Si vous devez mettre à niveau des versions de MySQL, commencez par sauvegarder ou exporter votre base de données de version inférieure vers une version supérieure de MySQL dans votre propre environnement. Ensuite, exécutez mysql_upgrade avant de tenter une migration vers une instance de serveur flexible Azure Database pour MySQL.

Considérations relatives aux performances

Pour optimiser les performances, tenez compte des considérations suivantes lors de la sauvegarde de grandes bases de données :

  • Utilisez l’option exclude-triggers dans mysqldump lors de la sauvegarde de bases de données. Excluez les déclencheurs des fichiers de sauvegarde pour éviter tout déclenchement par les commandes correspondantes pendant la restauration des données.
  • Utilisez l’option single-transaction pour définir le mode d’isolation de transaction sur REPEATABLE READ et envoyer une instruction START TRANSACTION SQL au serveur avant la sauvegarde des données. La sauvegarde de nombreuses tables en une seule transaction engendre une consommation de stockage supplémentaire pendant la restauration. Les options single-transaction et lock-tables s’excluent mutuellement, car LOCK TABLES entraîne la validation implicite des transactions en attente. Pour sauvegarder des tables volumineuses, combinez l’option single-transaction avec l’option quick.
  • Utilisez la syntaxe multi-ligne extended-insert qui inclut plusieurs listes VALUE. Cela génère un fichier de sauvegarde plus petit et accélère les insertions lors du rechargement du fichier.
  • Utilisez l’option order-by-primary dans mysqldump lors de la sauvegarde des bases de données, afin que les données soient scriptées selon l’ordre des clés primaires.
  • Utilisez l’option disable-keys dans mysqldump lors de la sauvegarde des données pour désactiver les contraintes de clé étrangère avant le chargement. La désactivation des vérifications de clé étrangère offre des gains de performances. Activez les contraintes et vérifiez les données après le chargement pour garantir une intégrité référentielle.
  • Utilisez des tables partitionnées le cas échéant.
  • Chargez les données en parallèle. Évitez tout parallélisme excessif, qui vous ferait atteindre une limite de ressources, et surveillez les ressources à l’aide des métriques disponibles dans le portail Azure.
  • Utilisez l’option defer-table-indexes dans mysqldump lors de la sauvegarde des bases de données, afin que la création d’index se produise après le chargement des données des tables.
  • Copiez les fichiers de sauvegarde dans un magasin/blob Azure et effectuez la restauration à partir de là, ce qui devrait être beaucoup plus rapide que d’exécuter la restauration sur Internet.

Créer une base de données sur l’instance de serveur flexible Azure Database pour MySQL cible

Créez une base de données vide sur l’instance de serveur flexible Azure Database pour MySQL cible vers laquelle vous souhaitez effectuer la migration des données. Utilisez un outil tel que MySQL Workbench ou mysql.exe pour créer la base de données. La base de données peut avoir le même nom que celle qui contient les données sauvegardées, mais vous pouvez également créer une base de données avec un autre nom.

Pour vous connecter, repérez les informations de connexion dans la Vue d’ensemble de votre instance de serveur flexible Azure Database pour MySQL.

Capture d’écran de Trouver les informations de connexion dans le portail Azure.

Ajoutez les informations de connexion dans MySQL Workbench.

Capture d’écran de la chaîne de connexion MySQL Workbench.

Préparer l’instance de serveur flexible Azure Database pour MySQL cible afin d’accélérer les chargements de données

Pour préparer l’instance de serveur flexible Azure Database pour MySQL cible afin d’accélérer les chargements de données, les paramètres et la configuration de serveur suivants doivent être modifiés.

  • max_allowed_packet : définissez la valeur sur 1073741824 (c’est-à-dire, 1 Go) pour éviter tout problème de dépassement de capacité en raison de lignes longues.
  • slow_query_log : définissez cette valeur sur OFF pour désactiver le journal des requêtes lentes. Cela permet d’éliminer la surcharge causée par la journalisation de requêtes lentes pendant les chargements de données.
  • query_store_capture_mode : définissez la valeur sur NONE pour désactiver le Magasin des requêtes. Cela permet d’éliminer la surcharge causée par les activités d’échantillonnage du Magasin des requêtes.
  • innodb_buffer_pool_size : effectuez un scale-up du serveur vers la référence SKU 32 vCores à mémoire optimisée à partir du niveau tarifaire du portail pendant la migration afin d’augmenter la valeur innodb_buffer_pool_size. La valeur Innodb_buffer_pool_size peut être augmentée uniquement en effectuant un scale-up du calcul pour l’instance de serveur flexible Azure Database pour MySQL.
  • innodb_io_capacity & innodb_io_capacity_max : passez à 9000 à partir des paramètres de serveur dans le portail Azure pour améliorer l’utilisation des E/S et optimiser la vitesse de la migration.
  • innodb_write_io_threads & innodb_write_io_threads : affectez la valeur 4 aux paramètres de serveur dans le portail Azure pour accélérer la migration.
  • Effectuer un scale-up du niveau de stockage : le nombre d’IOPS pour l’instance de serveur flexible Azure Database pour MySQL augmente progressivement avec la montée en niveau de stockage. Pour accélérer les chargements, vous voudrez peut-être augmenter le niveau de stockage et accroître ainsi les IOPS approvisionnées. N’oubliez pas que le stockage peut seulement faire l’objet d’un scale-up.

Une fois la migration terminée, vous pouvez rétablir les valeurs précédentes des paramètres de serveur et du niveau de calcul.

Vider et restaurer à l’aide de l’utilitaire mysqldump

Créer un fichier de sauvegarde depuis la ligne de commande avec mysqldump

Pour sauvegarder une base de données MySQL existante sur le serveur local ou sur une machine virtuelle, exécutez la commande suivante :

mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

Voici les paramètres à fournir :

  • [uname] le nom d’utilisateur de votre base de données ;
  • [pass] le mot de passe de votre base de données (remarque : il n’y a pas d’espace entre -p et le mot de passe) ;
  • [dbname] le nom de votre base de données ;
  • [backupfile.sql] le nom du fichier de sauvegarde de votre base de données ;
  • [--opt] l’option mysqldump.

Par exemple, pour sauvegarder une base de données nommée « testdb » sur votre serveur MySQL avec le nom d’utilisateur « testuser » et sans mot de passe dans un fichier testdb_backup.sql, utilisez la commande suivante. La commande sauvegarde la base de données testdb dans un fichier appelé testdb_backup.sql, qui contient toutes les instructions SQL nécessaires pour recréer la base de données. Assurez-vous que le nom d’utilisateur « testuser » possède au moins le privilège SELECT pour les tables sauvegardées, SHOW VIEW pour les affichages sauvegardés, TRIGGER pour les déclencheurs sauvegardés et LOCK TABLES si l’option --single-transaction n’est pas utilisée.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

Exécutez maintenant mysqldump pour créer la sauvegarde de la base de données testdb

mysqldump -u root -p testdb > testdb_backup.sql

Pour sélectionner des tables spécifiques de votre base de données à sauvegarder, listez les noms des tables en les séparant par des espaces. Par exemple, pour sauvegarder seulement les tables table1 et table2 de « testdb », suivez cet exemple :

mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql

Pour sauvegarder plusieurs bases de données à la fois, utilisez le commutateur --database et répertoriez les noms de bases de données en les séparant par des espaces.

mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Restaurer votre base de données MySQL à l’aide d’une ligne de commande

Une fois que vous avez créé la base de données cible, vous pouvez utiliser la commande mysql pour restaurer les données dans la base de données créée à cet effet à partir du fichier de sauvegarde.

mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

Dans cet exemple, vous restaurez les données dans la base de données nouvellement créée sur l’instance de serveur flexible Azure Database pour MySQL cible.

Voici un exemple d’utilisation de mysql pour Serveur unique :

mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql

Voici un exemple d’utilisation de mysql pour Serveur flexible :

mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql

Sauvegarder et restaurer à l’aide de PHPMyAdmin

Suivez les étapes ci-dessous pour sauvegarder et restaurer une base de données avec PHPMyadmin.

Remarque

Pour un serveur unique, le nom d’utilisateur doit être au format « nomutilisateur@nomserveur » mais, pour un serveur flexible, vous utilisez simplement « nomutilisateur ». Si vous utilisez « nomutilisateur@nomserveur » pour un serveur flexible, la connexion échoue.

Exporter avec PHPMyadmin

Pour exporter, vous pouvez utiliser l’outil courant phpMyAdmin, que vous avez peut-être déjà installé localement dans votre environnement. Pour exporter votre base de données MySQL avec PHPMyAdmin :

  1. Ouvrez phpMyAdmin.
  2. Sélectionnez votre base de données. Cliquez sur le nom de la base de données dans la liste de gauche.
  3. Sélectionnez le lien Exporter. Une nouvelle page s’affiche pour montrer la sauvegarde de la base de données.
  4. Dans la zone Exporter, sélectionnez le lien Sélectionner tout pour choisir les tables de votre base de données.
  5. Dans la zone Options SQL, sélectionnez les options appropriées.
  6. Sélectionnez l’option Enregistrer en tant que fichier et l’option de compression correspondante, puis sélectionnez le bouton Go. Une boîte de dialogue devrait apparaître pour vous inviter à enregistrer le fichier en local.

Importer avec PHPMyAdmin

L’importation d’une base de données est similaire à l’exportation. Effectuez les actions suivantes :

  1. Ouvrez phpMyAdmin.
  2. Dans la page de configuration phpMyAdmin, sélectionnez Ajouter pour ajouter votre instance de serveur flexible Azure Database pour MySQL. Fournissez les détails et informations de connexion.
  3. Créez une base de données en lui donnant un nom approprié et sélectionnez-la à gauche de l’écran. Pour réécrire la base de données existante, sélectionnez le nom de la base de données, cochez toutes les cases à côté des noms de table et sélectionnez Supprimer pour supprimer les tables existantes.
  4. Sélectionnez le lien SQL pour afficher la page dans laquelle vous pouvez taper des commandes SQL ou charger votre fichier SQL.
  5. Utilisez le bouton Parcourir pour trouver le fichier de base de données.
  6. Sélectionnez le bouton OK pour exporter la sauvegarde, exécuter les commandes SQL et recréer votre base de données.

Problèmes connus

Pour les problèmes connus, les trucs et astuces, nous vous recommandons de consulter notre blog techcommunity.