Les outils de sauvegarde MySQL

Jérôme Grondin

Apprendre à sauvegarder/restaurer une base de données MySQL.

- Titre : Les outils de sauvegarde MySQL

- Auteur : Jérôme Grondin

- Parution : 26 décembre 2004

- Mise à jour : 23 mars 2016

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2016 Jérôme Grondin. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Sauvegarde à l'aide de mysqldump, Restauration du dump

- II-A. Sauvegarde via mysqldump

- II-B. Restauration d'un fichier .sql

- III. Sauvegarde / Restauration à l'aide des ordres SQL: BACKUP/RESTORE

- III-A. BACKUP

- III-B. RESTORE

- IV. Sauvegarde à l'aide de mysqlhotcopy (sous Unix)

- IV-A. Sauvegarde via mysqlhotcopy

I - Introduction

Comme toutes les bases de données du marché, MySQL permet d'effectuer des sauvegardes et des restaurations.

Pour cela, vous pouvez passer par :

1. Les ordres SQL : BACKUP / RESTORE ;

2. mysqldump ;

3. mysqlhotcopy.

Nous allons étudier chaque outil, et voir comment les utiliser dans un environnement de production afin de sauvegarder une base de données.

Pour cela, considérons un serveur MySQL installé sur la machine monServeur possédant un compte root dont le mot de passe est jerome. Nous souhaitons sauvegarder la base de données production.

II - Sauvegarde à l'aide de mysqldump, Restauration du dump

II-A - Sauvegarde via mysqldump

L'outil mysqldump est fourni en standard avec le serveur de base de données, aussi bien sous Windows que sous Linux. Sous Windows, vous le trouverez dans le répertoire bin de votre installation. Sous Linux, il se situe dans /bin.
Il s'agit d'un binaire qui permet d'effectuer des sauvegardes de notre base de données en vue de les réinjecter sur un autre serveur. Un des avantages de mysqldump réside dans la possibilité de transférer les données sur un autre type de serveur, car le fichier récupéré par mysqldump contiendra des ordres SQL. Il suffit alors de parser ce fichier pour repeupler une base de données (Oracle, SQLServer, etc.).

Grâce à mysqldump, nous pouvons également effectuer des sauvegardes distantes, c'est-à-dire, sauvegarder une base (située sur un serveur) à partir d'une autre machine.

L'utilisation de mysqldump est assez simple, sa syntaxe est la suivante : mysqldump [options] db_name [tables]

Dans notre cas, la ligne de commande pour sauvegarder « production » du serveur « monServeur » sera :

mysqldump -u root -pjerome --opt production -h monServeur > backup-production.sql

L'option --opt est un raccourci permettant d'effectuer un dump en sauvegardant toutes les tables de la base, en verrouillant les tables, en ajoutant les ordres de création de tables, en utilisant des insertions complètes.

Nous possédons maintenant un fichier backup-production.sql contenant tous les ordres de créations et d'insertions. Vous pouvez par exemple utiliser ce fichier via l'outil PhpMyAdmin.

II-B - Restauration d'un fichier .sql

Pour réinjecter les données dans une base de données validation de monServeur, nous allons utiliser le client mysql.exe (situé dans le répertoire bin) via la commande suivante :

mysql -u root -pjerome -h monServeur -D validation < backup-production.sql

Ceci aura pour effet d'exécuter la totalité des ordres SQL de backup-production.sql sur la base de données validation.

III - Sauvegarde / Restauration à l'aide des ordres SQL: BACKUP/RESTORE

L'utilisation de BACKUP/RESTORE va être abandonnée par MySQL

III-A - BACKUP

MySQL permet d'effectuer des sauvegardes via l'ordre SQL : BACKUP.
La syntaxe de BACKUP est assez simple : BACKUP TABLE table [, table] ... TO '/repertoire/de/sauvegarde/';

III-B - RESTORE

Pour récupérer une sauvegarde effectuée via BACKUP, on utilise l'ordre SQL : RESTORE.
La syntaxe de RESTORE est la suivante : RESTORE TABLE table [, table] ... FROM '/repertoire/de/sauvegarde/';

IV - Sauvegarde à l'aide de mysqlhotcopy (sous Unix)

mysqlhotcopy fonctionne pour l'instant uniquement sous Unix.
L'utilisation de mysqlhotcopy nécessite d'avoir Perl et les packages DBI installés.

IV-A - Sauvegarde via mysqlhotcopy

Pour les tables de type MyISAM, MySQL recommande l'utilisation de l'outil mysqlhotcopy (écrit originellement en Perl par Tim Bunce). Il faut posséder les droits SELECT et RELOAD sur la base qu'on souhaite sauvegarder et l'accès aux fichiers.
D'autre part, on ne peut effectuer la sauvegarde qu'à partir de la machine sur laquelle fonctionne le serveur. Les sauvegardes distantes sont impossibles.
L'utilisation de mysqlhotcopy est assez simple, sa syntaxe est la suivante : mysqlhotcopy db_name [/répertoire/de/sauvegarde]

Dans notre cas, nous allons lancer la commande suivante : mysqlhotcopy -u root -pjerome production /home/jgrondin/sauvegarde/