systemadmin.es > DBA > Cuidado con los snapshots en MySQL

Cuidado con los snapshots en MySQL

He visto algunas formas de hacer snapshots de MySQL que no deben hacerse así. Vamos a ver un ejemplo.

Me han pasado scripts como el siguiente:

/usr/sbin/xfs_freeze -f /var/mysql
/usr/bin/ec2-create-snapshot -K $KEY -C $CERT vol-1111ff11 --description "SnapMysql"
/usr/sbin/xfs_freeze -u /var/mysql

En este caso se hace un snapshot de un EBS habiendo congelado previamente el sistema de ficheros, en este caso xfs. Si bien el snapshot tendrá los datos consistentes del sistema de ficheros, los datos que tenga el MySQL en memoria se perderán. Para hacer backups mediante snapshots de MySQL con XFS lo podemos hacer mediante mylvmbackup.

En el caso que sea xfs deberemos indicar que es dicho sistema de ficheros mediante xfs=1:

[fs]
xfs=1

En el caso que debamos hacer el snapshot del EBS deberemos hacer algún script personalizado como el siguiente. Primero mandamos un FLUSH TABLES para guardar los cambios a disco y luego bloqueamos las tablas en solo lectura sin cerrar la conexión al MySQL:

mysql> FLUSH TABLES;
mysql> FLUSH TABLES WITH READ LOCK;

Luego podemos congelar el sistema de ficheros xfs y crear el snapshot del EBS:

/usr/sbin/xfs_freeze -f /var/mysql
/usr/bin/ec2-create-snapshot -K $KEY -C $CERT vol-1111ff11 --description "SnapMysql"

A continuación ya podremos desbloquear las tablas (con la conexión anterior al MySQL):

mysql> UNLOCK TABLES;

Y descongelar el sistema de ficheros xfs:

/usr/sbin/xfs_freeze -u /var/mysql

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>