On 18/07/13 17:47, Florent Rivoire wrote:
Un principe pour avoir un backup cohérent : => tu mets ton /var/lib/mysql dans un partition qui est un volume LVM
Et ensuite, ton script de backup fait ceci : => tu lock chaque base (FLUSH TABLES WITH READ LOCK de mémoire, cf la doc) => tu prends un snapshot de ton volume LVM => tu unlock les bases (en tout, elles auront été lockées qq secondes maximum) => tu backup le contenu du snapshot LVM => tu supprime le snapshot => et voilà :)
+1 pour cette méthode, qui permet d'avoir un backup cohérent sans bloquer la base très longtemps. Attention s'il y a beaucoup d'écritures dans les bases, le CoW d'un snapshot plombe pas mal les IO en écriture. Perso, je sync aussi le filesystem avant de snapshoter mais je ne sais pas si c'est mandatory (et je préfère stopper la BdD plutôt que de locker).
Autre solution, qui fonctionne bien avec InnoDB et MyISAM : percona xtrabackup (http://www.percona.com/doc/percona-xtrabackup/2.1/), également capable de réaliser un backup consistant à chaud. C'est une solution intéressante en l'absence de LVM mais qui nécessite MySQL >= 5.1