Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Forums FAQ Tutoriels SQL Livres Access DB2 Firebird InterBase Mysql Oracle PostGreSQL SQL-Server Sybase

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.
Responsables bénévoles de la rubrique SQL & SGBD : Benjamin Gagneux et Frédéric Dubois - Contacter par EMail :
Vos questions techniques : forum d'entraide SQL & SGBD - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.