Supongamos un caso que, antes o después, nos pasará en algún servidor: la máquina muere y es preciso acceder a ella desde un sistema de rescate (un LiveCD por ejemplo). Una de las tareas imprescindibles en ese escenario es hacer un backup de los datos antes de iniciar cualquier actuación de reparación. Los archivos se pueden respaldar sin problemas, pero, ¿qué hay de las bases de datos?
Veamos cómo hacer un mysqldump de nuestras bases de datos desde un entorno chroot en Ubuntu Server.
Lo primero es, una vez arrancado el sistema de rescate, montar el directorio de sistema de nuestro servidor, por ejemplo:
$ mkdir /mnt/sistemax $ sudo mount /dev/sda1 /mnt/sistema1
Donde sda1 es el directorio raíz de la instalación que no funciona. Si hubiera más particiones que nos interesen para el backup, se montan de la misma forma.
A continuación, y para que el chroot funcione correctamente, es preciso exportar ciertos directorios de sistema que necesitará el kernel para arrancar servicios en el entorno chroot:
$ sudo mount ‐‐bind /dev /mnt/sistema1/dev $ sudo mount ‐‐bind /proc /mnt/sistema1/proc $ sudo mount ‐‐bind /sys /mnt/sistema1/sys
Y ya podemos arrancar el entorno chroot:
$ sudo chroot /mnt/sistema1
Desde hace algunas versiones (Karmic Koala, creo), Ubuntu Server usa upstart para gestionar los servicios y demonios. Los servicios que funcionan bajo upstart no se pueden arrancar en un entorno chroot porque upstart funciona como un supervisor de servicios y los procesos dentro del entorno chroot no pueden comunicarse con el servicio upstart externo al chroot (Bug 430224). Esto causa que algunos paquetes, como MySQL, que ahora usan upstart en lugar de los clásicos scripts init no arrancarán en el entorno chroot. Para poder arrancar estos servicios, se debe configurar el entorno chroot para que /sbin/initctl apunte a /bin/true, con estos comandos:
$ sudo dpkg-divert --local --rename --add /sbin/initctl $ sudo ln -s /bin/true /sbin/initctl
Una vez hecho esto, ya podemos arrancar MySQL en modo seguro y hacer el dump de las bases de datos que debamos respaldar, dump que posteriormente copiaremos a un lugar seguro:
$ sudo mysqld_safe --skip-grant-tables --skip-networking & $ mysqldump unabasededatos > unabasededatos.sql
Esta web
http://alvaroremesal.net
, su contenido, texto e imágenes está licenciado bajo una
Licencia Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España.