Navigation Principale
bullet Accueil
Photos
bullet Articles
bullet Forum
bullet Liens
bullet Membres
bullet News
bullet Proposition de News
bullet Téléchargements
bullet Content Index
 
Bienvenue
Nom d'utilisateur:

Mot de passe:


Retenir l'identification

[ ]
[ ]
En ligne
Invités: 1, Membres: 0 ...

Record: 51
(Membres: 0, Invités: 51) le 02 avr : 02:42

Membres: 145
Dernier membre: danync
Ajouts récents
Windows
Delphi
membres
11 nov winston
19 jui danync
18 jun c-lotre
06 mar volvic
16 fév snah
Forum
Page de Liens
Sauvegarde et restauration avec mysql
gerer ses bases de données
le samedi 13 janvier 2007
par admin Contributions de l'auteur
dans Linux

2. Rapide et simple

Une méthode rapide et simple pour sauvegarder vos bases MySQL est d'arrêter le service MySQL (mysqld) et de copier les données et les fichiers associés. L'arrêt de mysqld peut se faire depuis la ligne de commande en lançant lescript approprié :

# sous Debian GNU/Linux
/etc/init.d/mysql stop

# sous d'autres systèmes Unix
safe_mysqld stop

Depuis la version 4 de MySQL, la commande safe_mysqld peut-être renommé en mysqld_safe.

Une fois que MySQL a été arrêté, cela devient une chose facile de copier les fichiers MySQL contenant les données et les fichiers liés à MySQL. Ces fichiers sont situés à divers endroits sur le serveur. Pour déterminer où les fichiers ont été mis, jetez un oeil au fichier /etc/mysql/my.cnf sous Debian (l'emplacement peut varier selon les configurations). Utiliser un pager comme less ou more pour visualiser la valeur de la variable datadir qui vous indiquera le répertoire où sont stockées les données. Sur un système Debian de base, le répertoire en question est /var/lib/mysql. Avec cette information, vous pouvez copier tous les fichiers de ce répertoire dans un répertoire de sauvegarde en tapant la commande suivante :

/etc/init.d/mysql stop

cd /tmp/backup

cp -r /var/lib/mysql .

/etc/init.d/mysql start

tar cfz "mysql-backup-$(date +%d-%m-%y).tar.gz mysql

rm -rf mysql

La première ligne arrête mysqld, la deuxième nous place dans le répertoire /tmp/backup. Ensuite, une copie récursive (l'option -r) du répertoire contenant tous les fichiers MySQL est faite dans le répertoire courant. On relance le serveur MySQL, on compresse et archive le répertoire tout juste copié avec la date du jour et on efface le répertoire mysql. Tout ceci peut-être également placé dans un script shell pour être lancé soit manuellement soit à l'aide de crontab par exemple. Il peut être égalment utile de sauvegarder vos fichiers de configuration placés dans /etc/mysql/.

Le répertoire que nous venons de sauvegarder contient différents répertoires et fichiers. Un répertoire est créé pour chaque base de donnée et trois fichiers pour chaque table dans le répertoire de la base de donnée en question. Les noms des trois fichiers ont la même base, à savoir le nom de la table, avec une extension différente pour chaque fichier : .frm pour les définitions de table, .MYD pour les données et .MYI pour l'indexation des fichiers.

La restauration d'une base de données qui a été sauvegardé comme décrit ci-dessus est une chose qui se résume à décompresser et désarchiver le fichier sauvegardé précédemment. Ensuite, la base restaurée doit être copié dans le répertoire des données MySQL. Si vous voulez restaurer qu'une table, il vous suffit de copier les fichiers de la table dans le répertoire de la base de données approprié :

cd /tmp/backup

tar zxvf mysql-backup-25-11-04.tar.gz

/etc/init.d/mysql stop

cp -f mysql/base1/table1* /var/lib/mysql/base1

/etc/init.d/mysql start

La méthode de sauvegarde détaillé ci-dessus, surtout si elle a été exécuté via un script shell, sera très brève. Cette façon de faire est bonne pour les bases de données petites qui ne nécessitent pas un arrêt de la base durant de longues minutes. Mais si votre base a une taille conséquente et qu'elle est utilisée énormément alors un arrêt même de quelques minutes n'est pas envisageable. Dans ce cas une autre méthode doit être employée.

3. Utilisation de mysqldump

Si vous ne pouvez pas vous permettre d'arrêter MySQL pour faire une sauvegarde et que vos bases ne sont pas très grosses, une bonne alternative serait d'utiliser mysqldump. Cet outil, inclus dans MySQL, lis chaque base de donnée et table afin de construire un fichier texte contenant les données. Ce fichier est composé de déclarations SQL. En parcourant ce fichier, vous remarquerez de nombreuses déclarations "CREATE TABLE" ainsi qu'une multitude de "INSERT", une pour chaque ligne de donnée. Pour exporter toutes les bases de données de MySQL en utilisant mysqldump, il vous suffit de faire :

mysqldump -u root -p -x -e -A > /tmp/backup/bases.sql

Les options -u root -p indiquent à l'utilitaire qu'il faut executer la commande en tant qu'utilisateur root et qu'un mot de passe doit être demandé. Si l'extraction doit être faite via la crontab en incluant la commande dans un shell script, cette option peut-être changé en -pmypwd où mypwd est le mot de passe de root (notez qu'il n'y pas d'espace entre le -p et le mot de passe). L'option -x permet de verouiller toutes les tables avant de faire la sauvegarde. Le déverouillage des tables n'aura lieu qu'à la fin de la sauvegarde. Pour rassembler toutes les déclarations "INSERT" pour chaque table, ajouter l'option -e. Ceci réduira la taille du fichier généré et permettra une exécution plus rapide des restaurations futures. L'option -A spécifie que toutes les bases doivent être exportés. Enfin, la sortie standard est redirigée à l'aide du signe "supérieur à " vers le fichier /tmp/backup/bases.sql. En sauvegardant toutes les bases en une seule fois, l'extraction se présentera sous la forme d'un gros fichier. Cependant, il serait plus commode de faire des sauvegardes par base de données et ainsi sauvegarder certaines bases lorsque le système est moins actif. Pour exporter uniquement une base, faites comme ceci :

mysqldump -u root -p -x -e -B db1 > /tmp/backup/db1.sql

La différence significative est que l'option -A a été remplacé par -B et le nom de la base de donnée à exporter. Pour en exporter plusieurs, il suffit de les ajouter à la suite de l'option -B en les séparant par un espace.

Pour des bases encore plus importantes, une sauvegarde de MySQL peut-être fait sur les tables. Vous pourriez sauvegarder une base toutes les semaines et les tables tous les jours. Pour sauvegarder juste une table, veuillez lancer la commande suivante :

mysqldump -u root -p -x -e db1 table1 > /tmp/backup/db1_table1.sql

Astuce

Notez que l'option -B a été supprimé et non remplacé. Cet outil est suffisamment malin pour reconnaitre le fait que le premier nom indiqué est une base et que le second est le nom d'une table et non le nom d'une autre base de donnée. Pour sauvegarder plusieurs tables d'une base, ajouter juste les tables après le nom de la base de donnée en question séparé par des espaces (par exemple, base1 table1 table2).

La restauration d'un fichier généré à partir de mysqldump est faite à partir du client mysql qui va exécuter toutes les requêtes SQL du fichier. Cette restauration peut-être faite ainsi :

mysql -u root -pmypwd < /tmp/backup/base1_table1.sql

Encore une fois, l'utilisation de mysqldump n'est pas approprié ici car il ne fait que l'exportation de la base et non la restauration. A la place, on utilise le client mysql qui va lire le contenu du fichier sql afin d'exécuter les requêtes qu'il contient. Notez que je n'ai pas spécifié de base, cela sera fait lors de la restauration. Bien sûr, l'arrêt de MySQL devrait être fait avant de lancer une restauration.
Compteur
Cette page aujourd'hui ...
total: 0
unique: 0

Depuis toujours ...
total: 1159
unique: 716

Site ...
total: 6433
unique: 2532

Recherche TechnoJoly
Sélectionner la langue


Titres

»Bonne lecture avec Magnum 8, le magazine de la communauté francophone de Mandriva Linux
Magnum, c’est maintenant une belle histoire débutée il y a 2 ans. Né de la volonté d’un groupe d’ut ...
»Sortie différée de Google Chrome OS
Bien que l'annonce de la sortie de Chrome O ...
»Organisation de la seconde édition de l'European OpenSource & Free Software Law Event (EOLE) le 9 décembre 2009 au Parlement Européen
L'European OpenSource & Free Software Law Event (EOLE) est un événement qui a pour ambition de favo ...
»Fedora 12 « Constantine » est disponible
Après les phases alpha et bêta, la version finale de la Fedora 12 (Constantine de son petit ...
»Codec OpenSource BroadVoice
Le codec G729 est un standard recommandé par
»Sortie de la version 2.11 de la bibliothèque standard C GNU (glibc)
La version 2.11 de la bibliothèque C GNU (RSS ...
»Firefox, Google, Samsung, X
Firefox : 5 ans et une version pré-3.6

Firefox a 5 ans, et ça se fête par la pu ...
»La gestion des bénévoles facilitée avec OpenVolunteer (v0.2)
Dix mois après la première version, OpenVolunteer vient de sortir en version 0.2. Pour rappel, Open ...
»MimOOo ou « la plus grosse migration OpenOffice.org au monde » en questions
En septembre 2006, DLFP publiait une dépêche intitulée « La plus grosse migration
»Le Libre au service de l'agriculture du Nicaragua
On ne peut que se féliciter lorsque le Logiciel Libre est au service du développement d'un pays du ...
»Le Top 500 de novembre 2009
Le trente-quatrième Top 500 des supercalculateurs mondiaux est sorti aujourd'hui à l'occasion de la ...
»Revue de presse de l'April pour la semaine 46
La revue de presse de l'April est régulièrement ...
»Open Graphics lance la production de l'OGD1
La carte de développement du projet Open Graphics, OGD1, est en cours de fabrication. Les circuits ...
»Soirée Linux et Logiciels Libres sur Sisteron (04)
Nouvelle soirée Linux et Logiciels Libres sur Sisteron organisée par All trademarks are © their respective owners.
TechnoJoly.net n'assume pas la responsabilité
du contenu des sites extérieurs
  
Render time: 0.3497 second(s); 0.0644 of that for queries.