Sauvegarde et restauration MySQL

MySQLBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à sauvegarder et restaurer des bases de données MySQL à l'aide de l'outil en ligne de commande mysqldump. mysqldump est un utilitaire essentiel pour créer des sauvegardes logiques, indispensables à la protection des données, à la reprise après sinistre et à la migration.

Vous pratiquerez la sauvegarde d'une base de données entière, la sauvegarde d'une table unique, puis la restauration des deux à partir des fichiers de sauvegarde. Le laboratoire vous guidera à travers la simulation de scénarios de perte de données et l'utilisation de vos sauvegardes pour récupérer les données, vous assurant ainsi de comprendre le cycle complet de sauvegarde et de restauration.

Sauvegarder une base de données entière

La première étape de la protection des données consiste à créer une sauvegarde complète. Dans cette étape, vous utiliserez mysqldump pour créer une sauvegarde complète de la base de données mydatabase, qui a été préconfigurée pour vous.

Tout d'abord, ouvrez le terminal. Inspectons la base de données pour voir ce qu'elle contient. Connectez-vous au serveur MySQL en utilisant l'utilisateur root.

sudo mysql -u root

Une fois que vous voyez l'invite mysql>, basculez vers la base de données mydatabase et affichez ses tables.

USE mydatabase;
SHOW TABLES;

Vous devriez voir deux tables, products et users.

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

Maintenant, quittez le shell MySQL pour revenir au terminal.

exit

Il est temps de sauvegarder la base de données entière. La commande mysqldump lit la base de données et génère les instructions SQL nécessaires pour la recréer. Nous redirigerons cette sortie vers un fichier .sql.

Exécutez la commande suivante pour sauvegarder mydatabase et l'enregistrer dans un fichier nommé mydatabase_backup.sql dans le répertoire /home/labex/backup.

sudo mysqldump -u root mydatabase > /home/labex/backup/mydatabase_backup.sql

Pour confirmer que le fichier de sauvegarde a été créé, listez le contenu du répertoire /home/labex/backup.

ls /home/labex/backup

Vous devriez voir votre fichier de sauvegarde listé.

mydatabase_backup.sql

Vous avez créé avec succès une sauvegarde complète de la base de données.

Sauvegarder une table unique

Parfois, vous n'avez besoin de sauvegarder qu'une table spécifique plutôt que la base de données entière. Ceci est utile pour des opérations plus petites et ciblées. Dans cette étape, vous sauvegarderez uniquement la table products.

La syntaxe est similaire à celle d'une sauvegarde complète de base de données, mais vous spécifiez le nom de la table après le nom de la base de données.

Depuis votre terminal, exécutez la commande suivante pour sauvegarder la table products de mydatabase. La sauvegarde sera enregistrée sous le nom products_backup.sql.

sudo mysqldump -u root mydatabase products > /home/labex/backup/products_backup.sql

Vérifions que le nouveau fichier de sauvegarde a été créé. Listez à nouveau le contenu du répertoire de sauvegarde.

ls /home/labex/backup

Vous devriez maintenant voir la sauvegarde complète de la base de données ainsi que la sauvegarde de la table unique.

mydatabase_backup.sql  products_backup.sql

Vous pouvez inspecter le contenu du fichier de sauvegarde de table unique pour constater qu'il ne contient que les informations relatives à la table products.

cat /home/labex/backup/products_backup.sql

La sortie affichera les instructions SQL pour créer et peupler uniquement la table products. Cela confirme que vous avez créé avec succès une sauvegarde ciblée.

Restaurer une base de données entière

Maintenant que vous avez des sauvegardes, pratiquons leur restauration. Dans cette étape, vous simulerez une catastrophe en supprimant entièrement mydatabase, puis en la restaurant à partir de votre fichier de sauvegarde complet.

Tout d'abord, supprimons la base de données. L'indicateur -e vous permet d'exécuter une seule commande SQL directement depuis votre terminal.

sudo mysql -u root -e "DROP DATABASE mydatabase;"

Vérifiez que la base de données a disparu.

sudo mysql -u root -e "SHOW DATABASES;"

Vous verrez que mydatabase n'est plus dans la liste.

Avant de pouvoir restaurer les données, vous devez créer une base de données vide portant le même nom.

sudo mysql -u root -e "CREATE DATABASE mydatabase;"

Maintenant, restaurez la base de données en redirigeant le fichier mydatabase_backup.sql comme entrée pour le client mysql.

sudo mysql -u root mydatabase < /home/labex/backup/mydatabase_backup.sql

La commande exécutera toutes les instructions SQL du fichier de sauvegarde, recréant les tables et insérant les données.

Pour vérifier la restauration, connectez-vous à MySQL et vérifiez les tables et leur contenu.

sudo mysql -u root

À l'invite mysql>, exécutez ces commandes :

USE mydatabase;
SHOW TABLES;
SELECT * FROM users;

Vous devriez à nouveau voir les tables products et users, et la table users devrait contenir ses données d'origine.

+--------------------+
| Tables_in_mydatabase |
+--------------------+
| products           |
| users              |
+--------------------+
2 rows in set (0.00 sec)

+----+------------+--------------------------+
| id | name       | email                    |
+----+------------+--------------------------+
|  1 | John Doe   | john.doe@example.com     |
|  2 | Jane Smith | jane.smith@example.com   |
+----+------------+--------------------------+
2 rows in set (0.00 sec)

Quittez le shell MySQL.

exit

Vous avez réussi à récupérer l'intégralité de la base de données après une défaillance catastrophique.

Résumé

Dans ce laboratoire, vous avez acquis les compétences essentielles pour sauvegarder et restaurer des bases de données MySQL à l'aide de l'utilitaire mysqldump. Vous avez pratiqué la création d'une sauvegarde complète d'une base de données et d'une sauvegarde ciblée d'une table unique.

Vous avez également acquis une expérience pratique des procédures de récupération en simulant à la fois une perte complète de base de données et la suppression accidentelle d'une table unique. En restaurant avec succès les données dans les deux scénarios, vous avez démontré une compréhension fondamentale du cycle de vie complet de la protection des données, une compétence essentielle pour tout administrateur de base de données ou développeur.