Categorías
MySQL

Cómo hacer copias de seguridad MySql con mysqldump

La forma más común para crear copias de seguridad de MySQL, desde consola, se basa en el uso del comando mysqldump. Este comando se incluyen la instalación de MySQL. Para usar mysqldump, abre una consola y ejecuta lo siguiente:

Copia de seguridad básica

$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEÑA NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

Si por ejemplo el usuario es root, la contraseña también es root y la base de datos se llama basewp, el comando que debes ejecutar es el siguiente:

$ mysqldump --user=root --password=root basewp> copia_seguridad_basewp.sql

Si por seguridad no quieres mostrar la contraseña como parte de la sentencia:

$ mysqldump --user=root -p acme > copia_seguridad.sql
Enter password: *********

Recuperando una copia de seguridad
Las copias de seguridad son útiles si se pueden recuperar. Si hemos realizado el paso anterior y deseamos recuperar el archivo copia_seguridad_basewp.sql, hay que ejecutar:

$ mysql --user=TU_USUARIO --password=TU_CONTRASEÑA < copia_seguridad_basewp.sql

Observa cómo en este caso se ejecuta el comando mysql y no el comando mysqldump. Si usamos el ejemplo anterior,  sería:

$ mysql --user=root --password=root < copia_seguridad_baseawp.sql

No hace falta indicar el nombre de la base de datos que se está recuperando, porque los archivos creados por mysqldump ya contienen esa información. Atención, al ejecutar este comando de recuperación se borra la base de datos original y toda la información de sus tablas, para después insertar toda la información contenida en el archivo copia_seguridad_basewp.sql.

Si la versión de MySQL es moderna y la recuperación es una versión un poco antigua, hay que añadir la opción –skip-opt al realizar la copia de seguridad, para desactivar opciones modernas e incompatibles.

$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEÑA
 --skip-opt NOMBRE_BASE_DE_DATOS > copia_seguridad_basewp.sql

Cómo realizar copias de seguridad de más de una base de datos
Es tan sencillo como utilizar la opción –databases e indicar el nombre de las bases de datos separadas por un espacio en blanco:

$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEÑA
 --databases NOMBRE_BASE_DE_DATOS_1 NOMBRE_BASE_DE_DATOS_2
 NOMBRE_BASE_DE_DATOS_3 > copia_seguridad_baseswp.sql

Para realizar una copia de seguridad de todas las bases de datos, es con la opción –all-databases:

$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEÑA
 --all-databases > copia_seguridad_todaslasbaseswp.sql