Résoudre des problèmes de corruption de base de données dans Azure Database pour MySQL
S’APPLIQUE À : Azure Database pour MySQL - Serveur unique
Important
Azure Database pour MySQL - Serveur unique est en voie de mise hors service. Nous vous recommandons vivement de procéder à une mise à niveau vers Azure Database pour MySQL - Serveur flexible. Pour plus d’informations sur la migration vers le Serveur flexible Azure Database pour MySQL, consultez Qu’en est-il du Serveur unique Azure Database pour MySQL ?
La corruption d’une base de données peut entraîner un temps d’arrêt de votre application. Il est également essentiel de résoudre les problèmes de corruption à temps afin d’éviter toute perte de données. En cas de corruption d’une base de données, l’erreur suivante s’affiche dans les journaux de votre serveur : InnoDB: Database page corruption on disk or a failed.
Dans cet article, vous allez apprendre à résoudre les problèmes de corruption d’une base de données ou d’une table. Azure Database pour MySQL utilise le moteur InnoDB. Il intègre des opérations automatisées de vérification et de réparation de la corruption. InnoDB recherche les pages corrompues en exécutant des sommes de contrôle sur chaque page qu’il lit. S’il trouve une incohérence en termes de somme de contrôle, il arrête automatiquement le serveur MySQL.
Essayez les options suivantes pour atténuer rapidement les problèmes de corruption de votre base de données.
Redémarrer votre serveur MySQL
En général, vous remarquez qu’une base de données ou une table est corrompue lorsque votre application y accède. InnoDB intègre un mécanisme de récupération après incident capable de résoudre la plupart des problèmes lors d’un redémarrage du serveur. Par conséquent, le redémarrage du serveur peut aider celui-ci à récupérer d’un incident à l’origine de l’état incorrect de la base de données.
Utiliser la méthode vidage sur incident et restauration
Nous vous recommandons de résoudre les problèmes de corruption à l’aide d’une méthode vidage sur incident et restauration. Cette méthode implique les opérations suivantes :
- Accès à la table corrompue.
- Utilisation de l’utilitaire mysqldump pour créer une sauvegarde logique de la table. La sauvegarde conserve la structure de la table et les données qu’elle contient.
- Rechargement de la table dans la base de données.
Sauvegarder vos bases de données ou tables
Important
- Assurez-vous d’avoir configuré une règle de pare-feu pour accéder au serveur à partir de votre ordinateur client. Pour plus d’informations, consultez configurer une règle de pare-feu sur un serveur unique et configurer une règle de pare-feu sur un serveur flexible.
- Utilisez l’option SSL
--ssl-cert
pour l’utilitaire mysqldump si SSL est activé.
Créez un fichier de sauvegarde en ligne de commande avec mysqldump. Utilisez la commande suivante :
$ mysqldump [--ssl-cert=/path/to/pem] -h [host] -u [uname] -p[pass] [dbname] > [backupfile.sql]
Descriptions des paramètres :
[ssl-cert=/path/to/pem]
: Chemin d’accès au certificat SSL. Téléchargez le certificat SSL sur votre ordinateur client et définissez le chemin d’accès dans la commande. N’utilisez pas ce paramètre si le protocole SSL est désactivé.[host]
: Votre serveur Azure Database pour MySQL.[uname]
: Nom de votre utilisateur administrateur de serveur.[pass]
: Mot de passe de votre utilisateur administrateur.[dbname]
: Nom de votre base de données.[backupfile.sql]
: Nom du fichier de la sauvegarde de votre base de données.
Important
- Pour un serveur unique, utilisez le format
admin-user@servername
pour remplacermyserveradmin
dans les commandes suivantes. - Pour un serveur flexible, utilisez le format
admin-user
pour remplacermyserveradmin
dans les commandes suivantes.
Si une table spécifique est corrompue, sélectionnez des tables spécifiques dans votre base de données à sauvegarder :
$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb table1 table2 > testdb_tables_backup.sql
Pour sauvegarder une ou plusieurs bases de données, utilisez le commutateur --database
et répertoriez les noms de base de données séparés par des espaces :
$ mysqldump --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql
Restaurer votre base ou vos tables
Les étapes suivantes montrent comment restaurer votre base de données ou vos tables. Une fois le fichier de sauvegarde créé, vous pouvez restaurer les tables ou les bases de données à l’aide de l’utilitaire mysql. Exécutez cette commande :
mysql --ssl-cert=</path/to/pem> -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
Voici un exemple de restauration de testdb
à partir d’un fichier de sauvegarde créé avec l’utilitaire mysqldump :
Important
- Pour un serveur unique, utilisez le format
admin-user@servername
pour remplacermyserveradmin
dans la commande suivante. - Pour un serveur flexible, utilisez le format
admin-user
pour remplacermyserveradmin
dans la commande suivante.
$ mysql --ssl-cert=</path/to/pem> -h mydemoserver.mysql.database.azure.com -u myserveradmin -p testdb < testdb_backup.sql
Étapes suivantes
Si les étapes ci-dessus ne permettent pas de résoudre le problème, vous pouvez toujours restaurer le serveur entier :