sauvegarder une base Mysql
Par flo|va-nu-pied le samedi, 7 mars 2009, 19:17 - mysql - Lien permanent
Les quelques blogs que j'héberge fonctionnent souvent de paire avec une base de donnée de type Mysql ou Postgre. Ayant déjà fais la mauvaise expérience de perdre l'intégralité d'une base de donnée; j'ai décidé de réaliser une sauvegarde de la base mysql de mon blog et les sauvegarder sur une machine appartenant à mon réseau domestique.
Le principe
Pour sauvegarder une base; il est important de figer l'état de celle ci afin de conserver l'intégrité des données. Pour cela on pose un lock sur une base, le temps de la copie des données. Les requêtes en queue seront mise en attente ainsi que toutes les nouvelles requêtes entrantes. Ce n'est qu'une fois le lock sur la base levé; les requêtes en attente seront ensuite traitées selon le principe FIFO.
Le temps du lock il ne reste plus qu'à copier les fichiers relatifs à la base de donnée en utilisant une méthode de votre choix.
Méthode utilisée
Pour réaliser cette tache; nous utiliserons un script perl fourni par les packages Mysql; j'ai nommé mysqlhotcopy. Ce script offre le grand avantage de poser lui mêmes les locks nécessaires sur la base avant de réaliser le dump de la base. Il lèvera lui même les locks une fois l'action effectuée. Il permet également la sauvegarde sur une machine distante via le protocole ssh. Il existe bien évidement d'autres méthodes pour réaliser un dump de la base Mysql comme l'utilisation de snapshots LVM ou encore un système de réplication entre deamon MySql; Nous aborderons la réplication dans un article à venir.
Procédure
Bon voici donc les commandes nécessaires afin de réaliser le dump
Sauvegarde
La sauvegarde de la base dans son intégralité enregistré dans un fichier DBblog.sql
server@tosave# mysqldump --user=blog -p --flush-logs --single-transaction blog > DBblog.sql
Restauration
on copie ensuite le fichier sql DBblog.sql sur le serveur local puis via la commande suivante; on insère les données dans la base locale.
server@local# mysql --user=blog -p --database=blog < /var/lib/mysql/DBblog.sql
Voila notre base est a présent sauvegardée.
Liens connexes:
http://www.cryer.co.uk/brian/mysql/howto_backup.htm
Derniers commentaires