Backups de MySQL con git
Brian Aker, desarrollador de mysql, sugirió una manera "inteligente o extraña" de hacer backups de tu base de datos utilizando mercurial (un sistema control de versiones distribuido).
Nosotros en axai veníamos utilizando un sistema parecido, con la diferencia de que nosotros utilizamos git en vez de mercurial y que tampoco conocíamos la opción --tab del comando mysqldump. Esta opción es la que logra hacer que este método para backups sea todavía más útil, ya que al revisar la historia de tu base de datos podrás ver exactamente que cambios a sufrido con el paso del tiempo.
Este método de backups en resumidas cuentas tiene las siguientes ventajas:
- Buscar en tu historial de backups
- Ver los cambios entre una fecha y otra
- Hacer restauraciones parciales (de algunas tablas solamente)
- Ocupar muy poco espacio en tu disco duro
- Permitirte trasladar ese historial de backups de manera sencilla de una máquina a otra
Entonces, vamos a ver cómo se hace. Para crear los respaldos de tu base de datos utilizas los siguientes comandos:
$ mysqldump -u user --tab=/var/backup/dbname dbname $ cd /var/backup/dbname $ git-add . $ git-commit -m "automatic backup" $ git-push
El último comando es opcional, utilizalo sólo si tienes un repositorio remoto de git configurado.
Para restaurar este tipo de respaldos se utiliza el comando mysqlimport:
$ mysqladmin -u user create dbname $ cat /var/backups/dbname/*.sql | mysql dbname # crea las tablas $ mysqlimport -u user dbname --local /var/backups/dbname/*.txt # carga los datos
Disfruten ;-).
La gaceta de la cabeza

Comentarios
mysqldump: Got error: 1
Es muy común que al correr el comando de mysqldump exista un error al crear archivos como este:
mysqldump: Got error: 1: Can't create/write to file '/var/www/web_root/confirm.txt' (Errcode: 13) when executing
'SELECT INTO OUTFILE'
La solución más sencilla es cambiar el usuario o el grupo de la carpeta a donde quieres hacer el dump a mysql:
sudo chgrp mysql /path/to/foldermysqldump, ubuntu 8.04 y apparmor
Bueno, pues fue una lata hacer que esto jalara en mi computadora con ubuntu 8.04. Me daba constantemente el error descrito en el comentario anterior, pero cambiarle los permisos no funcionaba.
Finalmente, al ver errores en /var/log/messages y leer esta respuesta sin contestar en launchpad answers: https://answers.launchpad.net/ubuntu/+question/37748 supe que el error tenía que ver con apparmor, un nuevo sistema de seguridad que viene instalado por default desde ubuntu 7.10, que entre otras cosas, limita lo que pueden hacer tus programas sin tu permiso. El problema, es que limita bastante a mysql y no encontré manera de solucionarlo (ya que mis carpetas de backups no van a estar siempre en el mismo folder). Así que tuve que deshabilitarlo para mysql siguiendo las instrucciones descritas aquí:
Enviar un comentario nuevo