10 de febrero de 2014

Copiar una Base de Datos MySQL

Hacer respaldos (backup) periódicos de una aplicación web son tareas rutinarias y claves en el mantenimiento de cualquier sistema de software. Esto también incluye hacer las copias de seguridad de la base de datos que forma parte de la aplicación.

Este artículo explica como hacer copias de seguridad de una Base de Datos MySQL usando 'mysqldump'.

Hacer copias de seguridad o respaldo de la base de datos en MySQL, es un procedimiento muy sencillo gracias a la utilidad mysqldump que se incluye en la instalación estándar del Servidor MySQL.

Usando una acceso SSH al servidor

Vamos explicar como se hace el respaldo de una base de datos MySQL, asumiendo que la base de datos a respaldar se encuentra en un Servidor Remoto (Servidor de Producción) y sólo tenemos acceso a ese servidor mediante una cuenta SSH.

Para tal efecto, iniciamos el proceso accediendo a una terminal que tenga soporte SSH. En el caso de usar el sistema operativo Windows, podemos usar la utilería PuTTy o Cygwin.
Así, desde la terminal (PuTTy o Cygwin en el caso de windows) solicitamos acceso SSH usando el comando:

ssh nombre_usuario@IP_servidor

También se puede usar el Dominio del Servidor en lugar de la dirección IP.

Cygwin es bastante más que una utilería para windows, esta brinda un entorno para trabajar con aplicaciones Linux, y por lo tanto, su descarga e instalación toma mucho más tiempo que usar simplemente PuTTY (que consta de un sólo archivo ejecutable).

Usando MYSQLDUMP

Hasta el momento estamos conectados al servidor remoto usando la conexión SHH. Ahora es sólo tarea de ver si tenemos acceso a la utilería 'mysqldump'.

La utilería mysqldump es accesible desde la terminal y no es necesario iniciar la consola MySQL para ejecutarlo.

El primer paso es comprobar si efectivamente tenemos instalado mysqldump, esto lo hacemos ejecutando el siguiente comando desde la terminal:

mysqldump

Si se encuentra instalado en nuestro sistema se desplegará en una primera pantalla de ayuda. En general, esta utilería se encuentra instalada en la ruta '/usr/bin/mysqldump'.

Hacer la copia de seguridad de la base de datos MySQL es directo, usando la siguiente sintaxis:

mysqldump --user=USER_DB --password NOMBRE_DB > backup_db.sql

NOTA: USER_DB corresponde al nombre de usuario registrado en el servidor MySQL al igual que la password y además se deben encontrar asociados a la Base de Datos a respaldar.

Ese es todo el procedimiento para efectuar el respaldo de una base de datos, sin embargo, sólo hemos explorado la superficie de la utilería mysqldump y es conveniente conocer las grandes posibilidades que nos presenta sobre todo si necesitamos hacer múltiples respaldos de seguridad en varias bases de datos MySQL.

Cuál Base de Datos Copiar?

Si no conoces el nombre de la Base de Datos, entonces puedes acceder a la consola del Servidor MySQL, usando el comando:

mysql -u USER_DB -p

Dentro de la consola sólo necesitas listar las bases de datos con la orden:

show databases;

Para salir de la consola MYSQL se ejecuta:

exit

Y así volver a la terminal del sistema.

Traer la Copia de la DB a Local

Hasta el momento el respaldo de la base de datos que hemos creados, lo tenemos en el servidor remoto. Por lo tanto, tenemos que traer ese respaldo remoto a nuestra máquina local, para este efecto haremos uso del comando 'scp' de SSH:

scp user_name@IP_server:/ruta/remota/bk_db.sql /ruta/local/bk_db.sql

Si estamos usando la consola de Cygwin, entonces para colocar el respaldo en la raíz de nuestro disco duro se debe usar como ruta local: /cygdrive/c/

Otros enlaces

Dos (2) clientes SSH libremente disponibles (gratis) son:

Otros recursos: