MySQL et MariaDB incluent l'utilitaire mysqldump pour simplifier le processus de création d'une sauvegarde d'une base de données ou d'un système de bases de données. Utilisation de mysqldump
crée une sauvegarde logique . Vous ne pouvez utiliser cet outil que si votre processus de base de données est accessible et en cours d'exécution.
Si votre base de données n'est pas accessible pour une raison quelconque, vous pouvez à la place créer une sauvegarde physique , qui est une copie de la structure du système de fichiers contenant vos données.
Les instructions de ce guide s'appliquent à la fois à MySQL et à MariaDB. Pour simplifier, le nom MySQL sera utilisé pour s'appliquer à l'un ou l'autre.
Avant de commencer
-
Vous aurez besoin d'une installation MySQL ou MariaDB fonctionnelle et d'un utilisateur de base de données pour exécuter la sauvegarde. Pour obtenir de l'aide sur l'installation, consultez la documentation MySQL de Linode.
-
Vous aurez besoin d'un accès root au système ou d'un compte utilisateur avec
sudo
privilèges.
Sauvegarder une base de données
Le mysqldump
la syntaxe générale de la commande est :
mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
mysqldump
demande un mot de passe avant de lancer le processus de sauvegarde.- Selon la taille de la base de données, cela peut prendre un certain temps.
- La sauvegarde de la base de données sera créée dans le répertoire où la commande est exécutée.
-$(date +%F)
ajoute un horodatage au nom de fichier.
Exemples de cas d'utilisation :
-
Créez une sauvegarde de l'ensemble d'un système de gestion de base de données (SGBD) :
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
-
Sauvegardez une base de données spécifique. Remplacer
db1
avec le nom de la base de données que vous souhaitez sauvegarder :mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
-
Sauvegardez une seule table à partir de n'importe quelle base de données. Dans l'exemple ci-dessous,
table1
est exporté depuis la base de donnéesdb1
:mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
Voici une ventilation du mysqldump
options de commande utilisées ci-dessus :
--single-transaction
:émettez une instruction BEGIN SQL avant de vider les données du serveur.--quick
:Appliquer les tables de vidage ligne par ligne. Cela offre une sécurité supplémentaire pour les systèmes avec peu de RAM et/ou de grandes bases de données où le stockage des tables en mémoire pourrait devenir problématique.--lock-tables=false
:Ne verrouillez pas les tables pour la session de sauvegarde.
Automatiser les sauvegardes avec cron
Les entrées peuvent être ajoutées à /etc/crontab
pour planifier régulièrement des sauvegardes de la base de données.
-
Créez un fichier pour contenir les identifiants de connexion de l'utilisateur racine MySQL qui effectuera la sauvegarde. Notez que l'utilisateur système dont le répertoire personnel contient ce fichier peut n'être lié à aucun utilisateur MySQL.
- Fichier :/ home/example_user/.mylogin.cnf
1 2 3
[client] user = root password = MySQL root user's password
-
Restreindre les autorisations du fichier d'informations d'identification :
chmod 600 /home/example_user/.mylogin.cnf
-
Créez le fichier de travail cron. Vous trouverez ci-dessous un exemple de tâche cron pour sauvegarder l'intégralité du système de gestion de base de données tous les jours à 1h du matin :
- Fichier :/ etc/cron.daily/mysqldump
1
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql
Pour plus d'informations sur cron, consultez les pages de manuel cron(8) et cron(5).
Restaurer une sauvegarde
La syntaxe générale de la commande de restauration est :
mysql -u [username] -p [databaseName] < [filename].sql
-
Restaurer une sauvegarde complète du SGBD. Vous serez invité à saisir le mot de passe de l'utilisateur root MySQL :
Cela écrasera toutes les données actuelles dans le système de base de données MySQLmysql -u root -p < full-backup.sql
-
Restaurer un seul vidage de base de données. Une base de données de destination vide ou ancienne doit déjà exister pour importer les données, et l'utilisateur MySQL sous lequel vous exécutez la commande doit avoir un accès en écriture à cette base de données :
mysql -u [username] -p db1 < db1-backup.sql
-
Restaurez une seule table, vous devez avoir une base de données de destination prête à recevoir les données :
mysql -u dbadmin -p db1 < db1-table1.sql
Plus d'informations
Vous pouvez consulter les ressources suivantes pour plus d'informations sur ce sujet. Bien que ceux-ci soient fournis dans l'espoir qu'ils seront utiles, veuillez noter que nous ne pouvons pas garantir l'exactitude ou l'actualité des documents hébergés en externe.
- Page Méthodes de sauvegarde de la base de données MySQL
- mysqldump - Un programme de sauvegarde de base de données, Manuel de référence MySQL