Cómo hacer una copia de seguridad y restaurar una base de datos MySQL
Si almacenas datos en una base de datos MySQL y es importante no perderlos, debes realizar copias de seguridad de manera regular. Este artículo te enseñará cómo realizar copias de seguridad rápidamente a través de la consola y restaurarlas en una base de datos MySQL. También podrás transferir los datos a otro servidor.
- Cómo hacer un respaldo desde la línea de comandos (usando mysqldump)
- Cómo hacer un respaldo de la base de datos MySQL con compresión
- Cómo restaurar una base de datos MySQL desde un respaldo
- Respaldo y restauración usando Adminer
Cómo hacer un respaldo desde la línea de comandos (usando mysqldump)
Si tienes acceso al servidor a través de la consola (SSH), puedes hacer respaldos y restaurarlos rápidamente. Esto permite crear rápidamente un volcado de la base de datos (un volcado es la versión en texto de la base de datos) y restaurarlos más rápido que usando phpmyadmin, adminer, y otros. El volcado de la base de datos consistirá en comandos SQL para crear una copia de tu base de datos. Aquí está el comando para crear el volcado:
$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
[uname] - Nombre de usuario de la base de datos (puede ser root)
[pass] - Contraseña de tu usuario, puedes escribirla sin espacios o caracteres especiales, por ejemplo, -proot, -ppassword
[dbname] - Nombre de tu base de datos
[backupfile.sql] - Nombre del archivo donde se guardará el respaldo
[--opt] - Opciones para el comando mysqldump, se pueden omitir si no se desean usar
Supongamos que tienes una base de datos de Drupal, el nombre de usuario es root con la contraseña password, y el archivo de respaldo será backup.sql, entonces el comando sería:
$ mysqldump -u root -ppassword DrupalDB > backup.sql
Si omites la contraseña o si la contraseña contiene espacios u otros caracteres especiales (#!,-_), entonces tendrás que introducir la contraseña por separado y el comando será el siguiente:
$ mysqldump -u root -p DrupalDB > backup.sql
También puedes respaldar tablas individuales, para esto solo tienes que enumerarlas separadas por espacios, por ejemplo, nodes users:
$ mysqldump -u root -p DrupalDB nodes users > backup.sql
Además de respaldar tablas individuales, también puedes respaldar varias bases de datos a la vez. Para esto, usa el parámetro --databases, lo que te permitirá especificar las bases de datos necesarias separadas por espacio:
$ mysqldump -u root -p --databases DrupalDB Drupal7 Drupal8 > backup.sql
Si deseas transferir todo el servidor MySQL, puedes copiar todos los datos usando el parámetro --all-databases:
$ mysqldump -u root -p --all-databases > alldb_backup.sql
El comando mysqldump también tiene varios parámetros útiles:
--add-drop-table - Permite eliminar tablas antes de restaurar el respaldo (es decir, se agregarán comandos SQL DROP TABLE antes de CREATE TABLE para la misma tabla en el volcado).
--no-data - Permite copiar solo la estructura de la base de datos sin los datos. Esto es útil cuando se copian tablas de caché, que en Drupal pueden tener cientos de miles de registros innecesarios.
--add-lock - Permite agregar LOCK TABLES y UNLOCK TABLES. Si la base de datos es grande, las tablas pueden quedar bloqueadas durante un tiempo prolongado.
Cómo hacer un respaldo de la base de datos MySQL con compresión
Probablemente esta es la opción más adecuada, porque la compresión reduce el tamaño del archivo entre 10 y 20 veces, haciendo que los respaldos de bases de datos grandes tengan un tamaño mucho más manejable. Para la compresión, utilizaremos el comando gzip:
$ mysqldump -u root -p DrupalDB | gzip -9 > backup.sql.gz
Si deseas descomprimir el archivo (sin restaurar la base de datos, solo descomprimirlo), usa este comando:
$ gunzip backup.sql.gz
Cómo restaurar una base de datos MySQL desde un respaldo
Para restaurar la base de datos desde un volcado, necesitas una base de datos vacía. Puedes eliminar las tablas usando Adminer o phpmyadmin. Si usaste el parámetro --add-drop-table, las tablas se eliminarán automáticamente y no necesitarás hacer nada previamente. El comando para restaurar la base de datos desde el volcado es el siguiente:
$ mysql -u root -p DrupalDB < backup.sql
Si tenías un respaldo comprimido, usa este comando:
gunzip < backup.sql.gz | mysql -u root -p DrupalDB
Respaldo y restauración usando Adminer (alternativa a PhpMyAdmin)
Adminer es una alternativa a PhpMyAdmin. Ofrece la misma funcionalidad, pero se presenta como un solo archivo pequeño, lo que resulta muy conveniente:
Solo tienes que copiar el archivo en el directorio raíz de tu sitio y acceder a él desde el navegador:
http://tusitio.com/adminer-4.2.1.php (puedes renombrarlo a adminer.php para mayor comodidad):
Inicia sesión y entra a la base de datos que necesitas, en este caso Drupal7.
Ahora haz clic en "Exportar (Dump)" y descarga los datos. También puedes excluir datos de caché que no necesitas:
Para cargar el volcado de nuevo, usa la pestaña "Importar (Import)":