Migrer une base de données MySQL vers une base de données Azure pour MySQL à l’aide des images mémoire et de la restaurationMigrate your MySQL database to Azure Database for MySQL using dump and restore

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

Cet article décrit deux méthodes courantes pour sauvegarder et restaurer des bases de données dans votre base de données Azure pour MySQL.This article explains two common ways to back up and restore databases in your Azure Database for MySQL

  • Sauvegarder et restaurer à partir de la ligne de commande (en utilisant mysqldump)Dump and restore from the command-line (using mysqldump)
  • Sauvegarder et restaurer à l’aide de PHPMyAdminDump and restore using PHPMyAdmin

Vous pouvez également consulter le guide relatif à la migration de base de données pour obtenir des informations détaillées et des cas d’usage sur la migration de base de données vers Azure Database pour MySQL.You can also refer to Database Migration Guide for detailed information and use cases about migrating databases to Azure Database for MySQL. Ce guide fournit des conseils pour réussir la planification et l’exécution d’une migration MySQL vers Azure.This guide provides guidance that will lead the successful planning and execution of a MySQL migration to Azure.

Avant de commencerBefore you begin

Pour parcourir ce guide pratique, vous aurez besoin des éléments suivants :To step through this how-to guide, you need to have:

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.If you are looking to migrate large databases with database sizes more than 1 TBs, you may want to consider using community tools like mydumper/myloader which supports parallel export and import. Découvrez Comment migrer des bases de données MySQL volumineuses.Learn How to migrate large MySQL databases.

Cas d’usage courants de la vidage et de restaurationCommon use-cases for dump and restore

Les cas d’utilisation courants sont les suivants :Most common use-cases are:

  • 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.Moving from other managed service provider - Most managed service provider may not provide access to the physical storage file for security reasons so logical backup and restore is the only option to migrate.

  • Migration à partir d’un environnement local ou d’une machine virtuelle : Azure Database pour MySQL ne prend pas en charge la restauration des sauvegardes physiques qui effectuent la sauvegarde et la restauration logiques comme approche unique.Migrating from on-premises environment or Virtual machine - Azure Database for MySQL doesn't support restore of physical backups which makes logical backup and restore as the ONLY approach.

  • Déplacement de votre stockage de sauvegarde depuis l’espace de stockage localement redondant vers le stockage géo-redondant : la base de données Azure Database pour MySQL permet de configurer un stockage localement redondant ou géo-redondant, car la sauvegarde est uniquement autorisée lors de la création du serveur.Moving your backup storage from locally redundant to geo-redundant storage - Azure Database for MySQL allows configuring locally redundant or geo-redundant storage for backup is only allowed during server create. Une fois que le serveur est approvisionné, vous ne pouvez pas modifier l’option de redondance du stockage de sauvegarde.Once the server is provisioned, you cannot change the backup storage redundancy option. 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.In order to move your backup storage from locally redundant storage to geo-redundant storage, dump and restore is the ONLY option.

  • Migration à partir de moteurs de stockage alternatifs vers InnoDB : Azure Database pour MySQL prend en charge le moteur de stockage InnoDB uniquement. Par conséquent, elle ne prend pas en charge les autres moteurs de stockage.Migrating from alternative storage engines to InnoDB - Azure Database for MySQL supports only InnoDB Storage engine, and therefore does not support alternative storage engines. Si vos tables sont configurées avec d’autres moteurs de stockage, convertissez-les au format de moteur InnoDB avant la migration vers la base de données Azure pour MySQL.If your tables are configured with other storage engines, convert them into the InnoDB engine format before migration to Azure Database for MySQL.

    Par exemple, si votre site WordPress ou votre application web utilise les tables MyISAM, commencez par convertir ces tables en effectuant une migration vers le format InnoDB avant la restauration vers la base de données Azure pour MySQL.For example, if you have a WordPress or WebApp using the MyISAM tables, first convert those tables by migrating into InnoDB format before restoring to Azure Database for MySQL. 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.Use the clause ENGINE=InnoDB to set the engine used when creating a new table, then transfer the data into the compatible table before the restore.

    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.To avoid any compatibility issues, ensure the same version of MySQL is used on the source and destination systems when dumping databases. Par exemple, si votre serveur MySQL existant est en version 5.7, vous devriez effectuer une migration vers une base de données Azure pour MySQL configurée pour exécuter la version 5.7.For example, if your existing MySQL server is version 5.7, then you should migrate to Azure Database for MySQL configured to run version 5.7. La commande mysql_upgrade ne fonctionne pas avec un serveur de base de données Azure pour MySQL et n’est pas prise en charge.The mysql_upgrade command does not function in an Azure Database for MySQL server, and is not supported.
  • 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.If you need to upgrade across MySQL versions, first dump or export your lower version database into a higher version of MySQL in your own environment. Ensuite, exécutez mysql_upgrade avant de tenter une migration vers une base de données Azure pour MySQL.Then run mysql_upgrade, before attempting migration into an Azure Database for MySQL.

Considérations relatives aux performancesPerformance considerations

Pour optimiser les performances, tenez compte des considérations suivantes lors de la sauvegarde de bases de données volumineuses :To optimize performance, take notice of these considerations when dumping large databases:

  • Utilisez l’option exclude-triggers dans mysqldump lors de la sauvegarde de bases de données.Use the exclude-triggers option in mysqldump when dumping databases. Excluez les déclencheurs des fichiers de sauvegarde pour éviter tout déclenchement par les commandes correspondantes pendant la restauration des données.Exclude triggers from dump files to avoid the trigger commands firing during the data restore.
  • 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.Use the single-transaction option to set the transaction isolation mode to REPEATABLE READ and sends a START TRANSACTION SQL statement to the server before dumping data. Le vidage de nombreuses tables en une seule transaction provoque la consommation de stockage supplémentaire pendant la restauration.Dumping many tables within a single transaction causes some extra storage to be consumed during restore. Les options single-transaction et lock-tables s’excluent mutuellement, car LOCK TABLES provoque la validation implicite des transactions en attente.The single-transaction option and the lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly. Pour vider des tables volumineuses, combinez l’option single-transaction avec l’option quick.To dump large tables, combine the single-transaction option with the quick option.
  • Utilisez la syntaxe pour lignes multiples extended-insert qui inclut plusieurs listes VALUE.Use the extended-insert multiple-row syntax that includes several VALUE lists. Cela génère un fichier de vidage plus petit et accélère les insertions lors du rechargement du fichier.This results in a smaller dump file and speeds up inserts when the file is reloaded.
  • 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.Use the order-by-primary option in mysqldump when dumping databases, so that the data is scripted in primary key order.
  • 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.Use the disable-keys option in mysqldump when dumping data, to disable foreign key constraints before load. La désactivation des vérifications de clé étrangère offre des gains de performances.Disabling foreign key checks provides performance gains. Activez les contraintes et vérifiez les données après le chargement pour garantir l’intégrité référentielle.Enable the constraints and verify the data after the load to ensure referential integrity.
  • Utilisez des tables partitionnées le cas échéant.Use partitioned tables when appropriate.
  • Chargez les données en parallèle.Load data in parallel. É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.Avoid too much parallelism that would cause you to hit a resource limit, and monitor resources using the metrics available in the Azure portal.
  • Utilisez l’option defer-table-indexes dans mysqlpump lors de la sauvegarde des bases de données, afin que l’index soit créé après le chargement des données de tables.Use the defer-table-indexes option in mysqlpump when dumping databases, so that index creation happens after tables data is loaded.
  • Utilisez l’option skip-definer dans mysqlpump afin d’ignorer les clauses DEFINER et SQL SECURITY dans les instructions CREATE pour les vues et les procédures stockées.Use the skip-definer option in mysqlpump to omit definer and SQL SECURITY clauses from the create statements for views and stored procedures. Lorsque vous rechargez le fichier de vidage, il crée des objets qui utilisent les valeurs DEFINER et SQL SECURITY par défaut.When you reload the dump file, it creates objects that use the default DEFINER and SQL SECURITY values.
  • 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.Copy the backup files to an Azure blob/store and perform the restore from there, which should be a lot faster than performing the restore across the Internet.

Créer une base de données sur le serveur cible de base de données Azure pour MySQLCreate a database on the target Azure Database for MySQL server

Créez une base de données vide sur le serveur cible de base de données Azure pour MySQL vers lequel vous souhaitez effectuer la migration des données.Create an empty database on the target Azure Database for MySQL server where you want to migrate the data. Utilisez un outil tel que MySQL Workbench ou mysql.exe pour créer la base de données.Use a tool such as MySQL Workbench or mysql.exe to create the database. 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.The database can have the same name as the database that is contained the dumped data or you can create a database with a different name.

Pour vous connecter, repérez les informations de connexion dans la Vue d’ensemble de votre Azure Database pour MySQL.To get connected, locate the connection information in the Overview of your Azure Database for MySQL.

Trouver les informations de connexion dans le Portail Azure

Ajoutez les informations de connexion à MySQL Workbench.Add the connection information into your MySQL Workbench.

Chaîne de connexion MySQL Workbench

Préparation du serveur Azure Database pour MySQL afin d’accélérer les chargements de donnéesPreparing the target Azure Database for MySQL server for fast data loads

Pour préparer le serveur 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.To prepare the target Azure Database for MySQL server for faster data loads, the following server parameters and configuration needs to be changed.

  • max_allowed_packet : définissez cette valeur sur 1073741824 (par exemple, 1 Go) pour éviter tout problème de dépassement de capacité en raison de longues lignes.max_allowed_packet – set to 1073741824 (i.e. 1GB) to prevent any overflow issue due to long rows.
  • slow_query_log : définissez cette valeur sur OFF pour désactiver le journal des requêtes lentes.slow_query_log – set to OFF to turn off the slow query log. Cela élimine la surcharge causée par la journalisation de requêtes lentes pendant les chargements de données.This will eliminate the overhead caused by slow query logging during data loads.
  • query_store_capture_mode : définissez la valeur sur NONE pour désactiver le Magasin de données des requêtes.query_store_capture_mode – set to NONE to turn off the Query Store. Cela permet d’éliminer la surcharge causée par les activités d’échantillonnage par le magasin de données des requêtes.This will eliminate the overhead caused by sampling activities by Query Store.
  • 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 – Scale up the server to 32 vCore Memory Optimized SKU from the Pricing tier of the portal during migration to increase the innodb_buffer_pool_size. La valeur Innodb_buffer_pool_size peut être augmentée uniquement en effectuant un scale-up du calcul pour le serveur Azure Database pour MySQL.Innodb_buffer_pool_size can only be increased by scaling up compute for Azure Database for MySQL server.
  • 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_io_capacity & innodb_io_capacity_max - Change to 9000 from the Server parameters in Azure portal to improve the IO utilization to optimize for migration speed.
  • 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.innodb_write_io_threads & innodb_write_io_threads - Change to 4 from the Server parameters in Azure portal to improve the speed of migration.
  • Effectuer un scale-up du niveau de stockage : le nombre d’opérations d’E/S par seconde (IOPS) pour le serveur Azure Database pour MySQL augmente progressivement.Scale up Storage tier – The IOPs for Azure Database for MySQL server increases progressively with the increase in storage tier. Pour accélérer les chargements, vous pouvez augmenter le niveau de stockage et accroître ainsi les IOPS.For faster loads, you may want to increase the storage tier to increase the IOPs provisioned. N’oubliez pas que le stockage peut seulement faire l’objet d’un scale-up.Please do remember the storage can only be scaled up, not down.

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.Once the migration is completed, you can revert back the server parameters and compute tier configuration to its previous values.

Vider et restaurer à l’aide de l’utilitaire mysqldumpDump and restore using mysqldump utility

Créer un fichier de sauvegarde en ligne de commande avec mysqldumpCreate a backup file from the command-line using mysqldump

Pour sauvegarder une base de données MySQL existante sur le serveur local ou sur une machine virtuelle, exécutez la commande suivante :To back up an existing MySQL database on the local on-premises server or in a virtual machine, run the following command:

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

Voici les paramètres à fournir :The parameters to provide are:

  • [uname] le nom d’utilisateur de votre base de données ;[uname] Your database username
  • [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) ;[pass] The password for your database (note there is no space between -p and the password)
  • [dbname] le nom de votre base de données ;[dbname] The name of your database
  • [backupfile.sql] le nom du fichier de sauvegarde de votre base de données ;[backupfile.sql] The filename for your database backup
  • [--opt] l’option mysqldump.[--opt] The mysqldump option

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.For example, to back up a database named 'testdb' on your MySQL server with the username 'testuser' and with no password to a file testdb_backup.sql, use the following command. 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.The command backs up the testdb database into a file called testdb_backup.sql, which contains all the SQL statements needed to re-create the database. Assurez-vous que le nom d’utilisateur « testuser » possède au moins le privilège SELECT pour les tableaux vidés, SHOW VIEW pour les vues de vidage, TRIGGER pour les déclencheurs vidés et LOCK TABLES si l’option --single-transaction n’est pas utilisée.Make sure that the username 'testuser' has at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, and LOCK TABLES if the --single-transaction option is not used.

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 testdbNow run mysqldump to create the backup of testdb database

$ 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.To select specific tables in your database to back up, list the table names separated by spaces. Par exemple, pour sauvegarder seulement les tables table1 et table2 de « testdb », suivez cet exemple :For example, to back up only table1 and table2 tables from the 'testdb', follow this example:

$ 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 listez les noms de bases de données en les séparant par des espaces.To back up more than one database at once, use the --database switch and list the database names separated by spaces.

$ 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 ou de MySQL WorkbenchRestore your MySQL database using command-line or MySQL Workbench

Une fois que vous avez créé la base de données cible, vous pouvez utiliser la commande mysql ou MySQL Workbench pour restaurer les données dans la base de données créée à cet effet à partir du fichier d’image mémoire.Once you have created the target database, you can use the mysql command or MySQL Workbench to restore the data into the specific newly created database from the dump file.

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 le serveur cible de base de données Azure pour MySQL.In this example, restore the data into the newly created database on the target Azure Database for MySQL server.

Voici un exemple d’utilisation de mysql pour Serveur unique :Here is an example for how to use this mysql for Single Server :

$ 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 :Here is an example for how to use this mysql for Flexible Server :

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

Sauvegarder et restaurer à l’aide de PHPMyAdminDump and restore using PHPMyAdmin

Suivez les étapes ci-dessous pour vider et restaurer un base de données avec PHPMyadmin.Follow these steps to dump and restore a database using PHPMyadmin.

Notes

Pour un serveur unique, le nom d’utilisateur doit être au format « username@servername », mais pour un serveur flexible, vous pouvez simplement utiliser « username » si vous utilisez « username@servername » pour le serveur flexible, la connexion échoue.For single server, the username must be in this format , 'username@servername' but for flexible server you can just use 'username' If you use 'username@servername' for flexible server, the connection will fail.

Exporter avec PHPMyadminExport with PHPMyadmin

Pour exporter, vous pouvez utiliser l’outil courant phpMyAdmin, que vous avez peut-être déjà installé localement dans votre environnement.To export, you can use the common tool phpMyAdmin, which you may already have installed locally in your environment. Pour exporter votre base de données MySQL avec PHPMyAdmin :To export your MySQL database using PHPMyAdmin:

  1. Ouvrez phpMyAdmin.Open phpMyAdmin.
  2. Sélectionnez votre base de données.Select your database. Cliquez sur le nom de la base de données dans la liste de gauche.Click the database name in the list on the left.
  3. Cliquer sur le lien Exporter.Click the Export link. Une nouvelle page s’affiche, indiquant la sauvegarde de la base de données.A new page appears to view the dump of database.
  4. Dans la zone Exporter, cliquez sur le lien Sélectionner tout pour choisir les tables de votre base de données.In the Export area, click the Select All link to choose the tables in your database.
  5. Dans la zone des options SQL, cliquez sur les options appropriées.In the SQL options area, click the appropriate options.
  6. Cliquez sur l’option Enregistrer en tant que fichier et sur l’option de compression correspondante, puis sur le bouton OK.Click the Save as file option and the corresponding compression option and then click the Go button. Une boîte de dialogue vous invite à enregistrer le fichier en local.A dialog box should appear prompting you to save the file locally.

Importer avec PHPMyAdminImport using PHPMyAdmin

L’importation d’une base de données est similaire à l’exportation.Importing your database is similar to exporting. Effectuez les actions suivantes :Do the following actions:

  1. Ouvrez phpMyAdmin.Open phpMyAdmin.
  2. Dans la page de configuration phpMyAdmin, cliquez sur Ajouter pour ajouter votre serveur de base de données Azure pour MySQL.In the phpMyAdmin setup page, click Add to add your Azure Database for MySQL server. Indiquez les détails et informations de connexion.Provide the connection details and login information.
  3. Créez une base de données en lui donnant un nom approprié et sélectionnez-la à gauche de l’écran.Create an appropriately named database and select it on the left of the screen. Pour réécrire la base de données existante, cliquez sur le nom de la base de données, activez toutes les cases à cocher en regard des noms de table et sélectionnez Supprimer pour supprimer les tables existantes.To rewrite the existing database, click the database name, select all the check boxes beside the table names, and select Drop to delete the existing tables.
  4. Cliquez sur le lien SQL pour afficher la page dans laquelle vous pouvez taper des commandes SQL ou charger votre fichier SQL.Click the SQL link to show the page where you can type in SQL commands, or upload your SQL file.
  5. Utilisez le bouton Parcourir pour trouver le fichier de base de données.Use the browse button to find the database file.
  6. Cliquez sur le bouton OK pour exporter la sauvegarde, exécuter les commandes SQL et recréer votre base de données.Click the Go button to export the backup, execute the SQL commands, and re-create your database.

Problèmes connusKnown Issues

Pour les problèmes connus, les trucs et astuces, nous vous recommandons de consulter notre blog techcommunity.For known issues, tips and tricks, we recommend you to look at our techcommunity blog.

Étapes suivantesNext steps