MySQL / MariaDB : sauvegarder et restaurer une base de données
![sauvegarder et restaurer une base de données MySQL](https://tutobox.fr/wp-content/uploads/2022/09/sauvegarder-et-restaurer-une-base-de-donnees-MySQL.jpg)
Qu'avons-nous dans la boîte ?
L’objectif de ce tutoriel est de vous montrer plusieurs exemples pratiques pour sauvegarder et restaurer une base de données MySQL ou MariaDB, à partir d’un utilitaire natif à ces outils : mysqldump. Pour que l’article soit complet, nous verrons aussi deux autres commandes sur le serveur Linux (Debian dans mon cas).
Avant de commencer, quelques mots sur mysqldump : c’est un programme qui s’utilise en ligne de commande, il est utilisé pour faire des dumps de bases de données MySQL, que ce soit en local ou à distance, en créant un fichier à plat au format .SQL.
Je suppose que vous avez déjà installé MySQL (ou MariaDB) sur le système Linux, et que vous disposez des privilèges d’administration sur cette instance. Je me suis amusé à mettre plein d’exemples différents pour couvrir un maximum de besoins.
1. Comment sauvegarder une base de données MySQL sous Linux ?
Avant de vous montrer des exemples, sachez que la commande mysqldump s’utilise selon le modèle suivant :
mysqldump -u <nom utilisateur> -p<mot de passe> <nom de la base de données> > <fichier de sortie.sql>
Voici la signification, pour être plus précis :
- Nom d’utilisateur : un utilisateur MySQL valide, avec des droits sur la base de données à sauvegarde
- Mot de passe : le mot de passe de cet utilisateur (sans espace entre le mot de passe et l’option « -p »)
- Nom de la base de données : nom de la base de données à sauvegarde
- Fichier de sortie : le nom du fichier de sortie en .sql
I. Comment sauvegarder une seule base de données MySQL ?
Pour effectuer la sauvegarde d’une seule base de données, utilisez la commande suivante. La commande va sauvegarder la structure de la base de données « wordpress » (c’est-à-dire les tables, etc.) et ses données dans un fichier appelé wordpress.sql. On s’authentifie avec le compte « root » de MySQL et le mot de passe « MotDePasse ».
mysqldump -u root -pMotDePasse wordpress > wordpress.sql
II. Comment sauvegarder plusieurs bases de données MySQL ?
Si vous voulez faire une sauvegarde de plusieurs bases de données, exécutez la commande suivante. L’exemple ci-dessous sauvegarde la structure et les données de deux bases de données : wordpress1 et wordpress2. Toutefois, il y aura qu’un seul fichier de sortie : wordpress1_wordpress2.sql. A noter l’ajout de l’option « –databases » par rapport à l’exemple précédent.
mysqldump -u root -pMotDePasse --databases wordpress1 wordpress2 > wordpress1_wordpress2.sql
III. Comment sauvegarder toutes les bases de données MySQL ?
Si vous voulez faire une sauvegarde de toutes les bases de données d’une instance MySQL / MariaDB, l’option « –all-database » doit être utilisée comme dans l’exemple qui suit. Le fichier de sortie sera tout simplement nommé « all-databases.sql » mais vous pouvez personnaliser son nom.
mysqldump -u root -pMotDePasse --all-databases > all-databases.sql
IV. Comment sauvegarder uniquement la structure d’une base de données MySQL ?
Parfois, on cherche à sauvegarder la structure d’une base de données sans pour autant récupérer les données. Par exemple, c’est un moyen de cloner une base de données (en restaurant la sauvegarde ensuite) sans avoir à purger les données. Là encore, mysqldump dispose d’une option adaptée : « –no-data« . La commande ci-dessous exporte la structure de la base de données « wordpress » dans un fichier wordpress_withoutdata.sql.
mysqldump -u root -pMotDePasse --no-data wordpress > wordpress_withoutdata.sql
V. Comment sauvegarder uniquement les données d’une base de données MySQL ?
À l’inverse, nous pouvons sauvegarder uniquement les données au moment de faire le dump. Dans ce cas, il faut cumuler deux options : « –no-create-info » et « –no-create-db« . Ainsi, on évite que le fichier .SQL de sortie intègre les requêtes SQL permettant de créer la base de données et ses tables.
La commande ci-dessous sauvegarde les données de la base « wordpress » dans le fichier « wordpress_data.sql ».
mysqldump -u root -pMotDePasse --no-create-db --no-create-info wordpress > wordpress_data.sql
VI. Comment sauvegarder une seule table d’une base de données ?
L’outil mysqldump peut sauvegarder une seule table spécifique de votre base de données. Si l’on prend l’exemple de la base de données « wordpress », qui peut correspondre à un site WordPress, on peut sauvegarder la table correspondante aux articles. Elle s’appelle « posts », et il y a toujours un préfixe, donc dans cet exemple « wp2022_posts ». On précise le nom de la base de données, puis le nom de la table.
mysqldump -u root -pMotDePasse wordpress wp2022_posts > wordpress_articles.sql
VII. Comment sauvegarder plusieurs tables d’une base de données ?
Dans le même style, vous pouvez sélectionner plusieurs tables dans une même base de données. Par exemple, la table des articles « wp2022_posts » et la table des utilisateurs « wp2022_users ». Dans la commande, séparez le nom de chaque table par un espace.
mysqldump -u root -pMotDePasse wordpress wp2022_posts wp2022_users > wordpress_tables.sql
VIII. Comment sauvegarder une base de données MySQL à distance ?
Avant de passer à la restauration d’une base de données, prenons un exemple ultime ! Cette fois-ci, on sauvegarde une base de données situées sur un serveur distant (celui-ci doit autoriser les connexions MySQL distantes !). Jusqu’ici, tous les exemples permettaient une sauvegarde en étant en local. Imaginons que l’on veut sauvegarder la base de données « wordpress » de la machine « 10.10.10.10 ».
mysqldump -h 10.10.10.10 -u root -pMotDePasse wordpress > wordpress.sql
2. Comment restaurer une base de données MySQL ?
Jusqu’ici, nous avons vu comment sauvegarder, sauvegarder et encore sauvegarder une base de données. Quand on a un fichier « SQL », c’est-à-dire un dump, comme ceux générés précédemment, comment fait-on pour le restaurer ? C’est ce que nous allons voir tout de suite… Avec la commande « mysql », voici la syntaxe qui s’applique :
mysql -u <nom d'utilisateur> -p <mot de passe> <nom base de données> < <fichier de sauvegarde.sql>
Dans l’exemple ci-dessus, vous voyez le sens de la flèche (redirecteur) qui est différent, car ici on restaure donc on importe.
Pour restaurer une base de données, il y a plusieurs façons de faire. Je vous recommande de créer une base de données vide sur le serveur MySQL / MariaDB cible (pour avoir les bons droits), et restaurer la base de données à l’aide de la commande msyql. Par exemple, la commande suivante restaurera le fichier wordpress.sql dans la base de données wordpress.
mysql -u root -pMotDePasse wordpress < wordpress.sql
Si vous voulez restaurer une base de données qui existe déjà sur la machine et que vous voulez l’écraser, alors vous devrez utiliser la commande mysqlimport.
mysqlimport -u root -pMotDePasse wordpress < wordpress.sql
Suite à la lecture de cet article de la boîte à tutoriels, vous êtes capable de sauvegarder et restaurer une base de données MySQL / MariaDB en ligne de commande !
Ressources :