Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisez mysqldump pour sauvegarder MySQL ou MariaDB

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ées db1 :

      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.

  1. 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
  2. Restreindre les autorisations du fichier d'informations d'identification :

    chmod 600 /home/example_user/.mylogin.cnf
    
  3. 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 MySQL

      mysql -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