Migrer votre base de données MySQL vers Azure Database pour MySQL - Serveur flexible à l’aide du vidage et de la restauration

S’APPLIQUE À : Azure Database pour MySQL - Serveur unique Azure Database pour MySQL - Serveur flexible

Important

Azure Database pour MySQL serveur unique se trouve sur le chemin de mise hors service. Nous vous recommandons vivement de procéder à la mise à niveau vers Azure Database pour MySQL serveur flexible. Pour plus d’informations sur la migration vers Azure Database pour MySQL serveur flexible, consultez Ce qui se passe pour Azure Database pour MySQL serveur unique ?

Cet article explique deux façons courantes de sauvegarder et de restaurer des bases de données dans Azure Database pour MySQL serveur flexible.

  • Videz et restaurez à partir de la ligne de commande (à l’aide de mysqldump).
  • Videz et restaurez à l’aide de PHPMy Administration.

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

Avant de commencer

Pour parcourir ce guide pratique, vous aurez besoin des éléments suivants :

Conseil

Si vous souhaitez migrer des bases de données volumineuses avec des tailles de base de données supérieures à 1 To, vous pouvez utiliser des outils de la communauté comme mydumper/myloader prenant en charge l’exportation et l’importation parallèles. Découvrez Comment migrer des bases de données MySQL volumineuses.

Cas d’usage courants de la vidage et de restauration

Les cas d’utilisation courants sont les suivants :

  • Déplacement à partir d’un autre fournisseur de services gérés : la plupart des fournisseurs de services gérés peuvent 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.

  • La migration à partir d’un environnement local ou d’une machine virtuelle : Azure Database pour MySQL serveur flexible ne prend pas en charge la restauration des sauvegardes physiques, ce qui rend la sauvegarde logique et la restauration comme approche UNIQUE.

  • Le déplacement de votre stockage de sauvegarde d’un stockage localement redondant vers un stockage géoredondant : Azure Database pour MySQL serveur flexible permet de configurer le stockage localement redondant ou géoredondant pour la sauvegarde est autorisé uniquement pendant la création du serveur. Une fois que le serveur est provisionné, vous ne pouvez pas modifier 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, le vidage et la restauration sont la seule option.

  • La migration de moteurs de stockage alternatifs vers InnoDB - Azure Database pour MySQL serveur flexible prend uniquement en charge le moteur d’Stockage InnoDB et ne prend donc 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 vous avez un WordPress ou WebApp à l’aide des tables MyISAM, commencez par convertir ces tables en migrant au format InnoDB avant de restaurer sur 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 dans la table compatible avant la restauration.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

Important

  • Pour éviter les problèmes 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 version 5.7, vous devez migrer vers une instance de serveur flexible Azure Database pour MySQL configurée pour exécuter la version 5.7. La mysql_upgrade commande ne fonctionne pas dans 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 ultérieure de MySQL dans votre propre environnement. Exécutez mysql_upgrade ensuite avant de tenter la migration dans 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 bases de données volumineuses :

  • 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 le vidage des données. Le vidage de nombreuses tables en une seule transaction provoque la consommation de stockage supplémentaire pendant la restauration. Les options single-transaction et lock-tables s’excluent mutuellement, car LOCK TABLES provoque la validation implicite des transactions en attente. Pour vider des tables volumineuses, combinez l’option single-transaction avec l’option quick.
  • Utilisez la syntaxe pour lignes multiples extended-insert qui inclut plusieurs listes VALUE. Cela génère un fichier de vidage 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 de 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 l’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 mesures disponibles dans le Portail Azure.
  • Utilisez l’option defer-table-indexes dans mysqldump lors de la sauvegarde des bases de données, afin que l’index soit créé après le chargement des données de tables.
  • Copiez les fichiers de sauvegarde dans un magasin/objet blob Azure et effectuez la restauration à partir de celui-ci. Cette opération doit être beaucoup plus rapide que l’exécution de 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 la cible Azure Database pour MySQL instance de serveur flexible dans laquelle vous souhaitez migrer les 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 capturées, mais vous pouvez également créer une base de données avec un autre nom.

Pour vous connecter, recherchez les informations de connexion dans la vue d’ensemble de votre instance de serveur flexible Azure Database pour MySQL.

Find the connection information in the Azure portal

Ajoutez les informations de connexion à MySQL Workbench.

MySQL Workbench Connection String

Préparation de l’instance de serveur flexible Azure Database pour MySQL cible pour les chargements rapides de données

Pour préparer la cible Azure Database pour MySQL instance de serveur flexible pour des chargements de données plus rapides, 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 élimine la surcharge causée par la lente journalisation de requêtes pendant les chargements de données.
  • query_store_capture_mode : définissez la valeur sur NONE pour désactiver le Magasin de données des requêtes. Cela permet d’éliminer la surcharge causée par les activités d’échantillonnage par le magasin de données des requêtes.
  • innodb_buffer_pool_size : effectuez un scale-up du serveur avec la référence SKU 32 vCore Memory Optimized à partir du niveau tarifaire du portail pendant la migration afin d’augmenter la valeur innodb_buffer_pool_size. Innodb_buffer_pool_size ne peut être augmenté qu’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 afin d’optimiser la vitesse de la migration.
  • innodb_write_io_threads & innodb_write_io_threads : affectez la valeur 4 aux paramètres du serveur dans le Portail Azure pour accélérer la migration.
  • Monter en puissance Stockage niveau : les E/S par seconde pour Azure Database pour MySQL serveur flexible augmentent progressivement avec l’augmentation du niveau de stockage. Pour accélérer les chargements, vous pouvez augmenter le niveau de stockage et accroître ainsi les IOPS. 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 du serveur et du niveau de calcul.

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

Créer un fichier de sauvegarde en 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 certaines tables en particulier à sauvegarder dans votre base de données, listez les noms de table 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 d’image mémoire.

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

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

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 vider et restaurer un base de données avec PHPMyadmin.

Notes

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, indiquant la sauvegarde de la base de données.
  4. Dans la zone Exporter, cliquez sur 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 vous invite à 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 phpMy Administration, sélectionnez Ajouter pour ajouter votre instance de serveur flexible Azure Database pour MySQL. Indiquez 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.

Étapes suivantes