Les outils de sauvegarde MySQL
Date de publication : 26/12/2004
Par
Jérôme Grondin (http://jgrondin.developpez.com)
Apprendre à sauvegarder / restaurer une base de données MySQL.
I. Introduction
II. Sauvegarde à l'aide de mysqldump, Restauration du dump
A. Sauvegarde via mysqldump
B. Restauration d'un fichier .sql
III. Sauvegarde / Restauration à l'aide des ordres SQL: BACKUP / RESTORE
A. BACKUP
B. RESTORE
IV. Sauvegarde à l'aide de mysqlhotcopy (sous Unix)
A. Sauvegarde via mysqlhotcopy
I. Introduction
Comme toutes les base de données du marché, MySQL permet d'effectuer
des sauvegardes et des restaurations.
Pour cela, vous pouvez passer par :
- Les ordres SQL: BACKUP / RESTORE
- mysqldump
- mysqlhotcopy
Nous allons étudier chaque outils, 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
A. Sauvegarde via mysqldump
L'outil mysqldump est fournit 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 vues 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 vérouillant
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.
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é par MySQL
|
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/';
B. RESTORE
Pour récupérer une sauvegarde affectué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.
|
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 accès aux fichiers.
D'autres 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/
Copyright Jérôme Grondin 2004 - Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
|