Cómo hacer backup y restaurar una base de datos MySQL con comandos
Introducción: ¿Por qué es importante saber hacer backup y restaurar MySQL?
Si tienes una web, una tienda online o cualquier aplicación que use bases de datos, sabrás que la información es el activo más valioso. Un error humano, un ataque informático o un fallo del servidor pueden borrar todo en segundos. Por eso, saber hacer un backup mysql comandos no es opcional, es una necesidad básica de supervivencia digital.
En esta guía, vamos a aprender paso a paso cómo usar las herramientas de línea de comandos para proteger tus datos. No necesitas ser un experto en programación, solo seguir las instrucciones con calma. Te prometo que al final de este artículo, te sentirás con la confianza suficiente para gestionar tus propias copias de seguridad.
Trabajaremos con dos comandos principales: mysqldump para crear las copias y el comando mysql para restaurarlas. Ambos son estándar en cualquier servidor con MySQL o MariaDB, así que funcionarán en la mayoría de los casos. Además, te explicaré cómo hacerlo a través de SSH, que es la forma más segura y profesional de gestionar tu servidor.
Requisitos previos antes de empezar
Antes de lanzarnos a ejecutar comandos, asegurémonos de que tenemos todo listo. No hay nada más frustrante que estar a mitad de un proceso y darse cuenta de que nos falta algo.
Acceso al servidor vía SSH
Para poder ejecutar comandos de backup, necesitas acceso a la terminal de tu servidor. Esto se hace normalmente mediante SSH (Secure Shell). Si usas un panel de control como Syspanel, recuerda que el puerto de acceso es el 2106. Es importante que lo sepas, ya que es un detalle que a menudo se pasa por alto.
Para conectarte, desde tu ordenador (Windows, Mac o Linux) abre una terminal y escribe algo como:
ssh usuario@tu-servidor.com -p 2106
Te pedirá tu contraseña y, ¡listo! Ya estás dentro.
Credenciales de la base de datos
Necesitas tener a mano el nombre de la base de datos, el usuario y la contraseña. Normalmente, estos datos los puedes encontrar en el panel de control de tu hosting o en el archivo de configuración de tu aplicación (por ejemplo, wp-config.php en WordPress).
Espacio en disco
Asegúrate de que el servidor tiene suficiente espacio en disco para guardar la copia de seguridad. Una base de datos puede ocupar desde unos pocos megabytes hasta varios gigabytes, así que verifica con el comando df -h cuánto espacio libre tienes.
Cómo hacer un backup con mysqldump
El comando mysqldump es la herramienta estrella para crear copias de seguridad de bases de datos MySQL. Es muy flexible y nos permite exportar la estructura y los datos de una o varias bases de datos a un archivo de texto plano (normalmente con extensión .sql).
Paso 1: Crear el archivo de backup de una base de datos
El comando básico para hacer un mysqldump backup de una sola base de datos es el siguiente:
mysqldump -u usuario -p nombre_basededatos > backup.sql
Te explicaré qué significa cada parte:
mysqldump: es el programa que ejecutamos.-u usuario: aquí pones el nombre de tu usuario de MySQL.-p: esta opción te pedirá la contraseña de forma interactiva (más seguro que ponerla en el comando).nombre_basededatos: el nombre de la base que quieres copiar.>: redirige la salida del comando a un archivo.backup.sql: es el nombre que le pones al archivo de respaldo. Puedes usar el que quieras.
Al ejecutarlo, te pedirá la contraseña. Escríbela y pulsa Enter. En unos segundos, tendrás tu archivo de backup en el directorio actual. Puedes comprobar que se ha creado con ls -lh backup.sql.
Paso 2: Backup de varias bases de datos a la vez
Si necesitas hacer una copia seguridad mysql ssh de todas tus bases de datos, puedes usar la opción --all-databases:
mysqldump -u usuario -p --all-databases > backup_total.sql
Este comando creará un archivo que contiene todas las bases de datos del servidor. Es útil para migraciones completas o para tener una copia de seguridad general.
Paso 3: Añadir fecha al nombre del backup
Para llevar un control ordenado, es muy buena práctica incluir la fecha en el nombre del archivo. Podemos hacerlo fácilmente con el comando date:
mysqldump -u usuario -p nombre_basededatos > backup_$(date +%Y-%m-%d).sql
Esto creará un archivo llamado backup_2024-05-20.sql (con la fecha actual). Así siempre sabrás cuándo hiciste la copia.
Paso 4: Comprimir el backup para ahorrar espacio
Los archivos .sql pueden ser muy grandes. Para ahorrar espacio, podemos comprimirlos en el momento con gzip:
mysqldump -u usuario -p nombre_basededatos | gzip > backup.sql.gz
Para restaurar un backup comprimido, tendremos que descomprimir primero (lo veremos más adelante).
Cómo restaurar una base de datos MySQL
Restaurar es el proceso inverso al backup. Es decir, cogemos el archivo .sql y lo "importamos" de vuelta a MySQL. Es una operación que hay que hacer con cuidado, porque si no se hace bien, podríamos perder datos existentes.
Paso 1: Crear la base de datos (si no existe)
Antes de restaurar, la base de datos destino debe existir. Si estás restaurando en un servidor nuevo, tendrás que crearla primero. Puedes hacerlo desde la línea de comandos de MySQL:
mysql -u usuario -p -e "CREATE DATABASE nombre_basededatos;"
Te pedirá la contraseña. Si la base de datos ya existe, puedes saltarte este paso.
Paso 2: Restaurar desde un archivo .sql
El comando para restaurar mysql desde un archivo es muy sencillo:
mysql -u usuario -p nombre_basededatos < backup.sql
Aquí usamos el símbolo < para redirigir el contenido del archivo hacia el comando mysql. Le estamos diciendo: "ejecuta todo lo que hay en backup.sql dentro de la base de datos nombre_basededatos".
Paso 3: Restaurar un backup comprimido
Si tu backup está comprimido con gzip, primero tienes que descomprimir el archivo y luego restaurarlo. Puedes hacerlo en dos pasos o en uno solo con un "pipe":
gunzip < backup.sql.gz | mysql -u usuario -p nombre_basededatos
Este comando combina gunzip para descomprimir y mysql para importar en un solo paso. Es muy eficiente.
Paso 4: Restaurar todas las bases de datos
Si hiciste un backup de todas las bases de datos con --all-databases, puedes restaurarlo todo con:
mysql -u usuario -p < backup_total.sql
Este comando restaurará todas las bases de datos que había en el servidor en el momento del backup.
Consejos y buenas prácticas para tus backups
Hacer un backup es genial, pero hacerlo bien es aún mejor. Aquí tienes algunos consejos que te ahorrarán muchos dolores de cabeza.
Automatiza tus backups con cron
No tiene sentido hacer backups manuales cada vez. Puedes configurar una tarea programada (cron) en tu servidor para que se ejecuten automáticamente. Por ejemplo, para hacer un backup diario a las 3 de la madrugada, puedes añadir esta línea a tu crontab:
0 3 * * * mysqldump -u usuario -p'contraseña' nombre_basededatos | gzip > /ruta/de/backup/backup_$(date +\%Y-\%m-\%d).sql.gz
[TIP] Recuerda que si usas Syspanel, la gestión de tareas cron también está disponible en el panel, pero hacerlo por SSH es igual de válido y más directo.
Guarda los backups en un lugar seguro
No dejes los backups en el mismo servidor donde está la base de datos. Si el servidor se cae o es hackeado, perderás todo. Descarga los backups a tu ordenador o súbelos a un servicio de almacenamiento en la nube (Google Drive, Dropbox, S3, etc.).
Prueba tus backups periódicamente
Un backup que no se puede restaurar no sirve de nada. De vez en cuando, haz una prueba de restauración en un entorno de desarrollo para asegurarte de que el proceso funciona correctamente.
Ten cuidado con los permisos
Los archivos de backup contienen información sensible. Asegúrate de que solo tu usuario pueda leerlos. Puedes cambiar los permisos con chmod 600 backup.sql.
Errores comunes y cómo solucionarlos
A veces las cosas no salen a la primera. Aquí tienes algunos problemas típicos y sus soluciones.
Error: "Access denied for user"
Este error significa que el usuario o la contraseña son incorrectos. Verifica que estás usando las credenciales correctas. A veces, el usuario de MySQL no es el mismo que el usuario de SSH.
Error: "Unknown database"
Este error indica que la base de datos que intentas respaldar o restaurar no existe. Comprueba que el nombre está bien escrito. Recuerda que MySQL es sensible a las mayúsculas y minúsculas en los nombres de las bases de datos.
Error: "Can't open file"
Este error suele aparecer cuando no tienes permisos de escritura en el directorio donde intentas crear el archivo de backup. Cambia a un directorio con permisos, por ejemplo, ejecuta cd /tmp antes de hacer el backup.
El backup es muy lento o se queda colgado
Si la base de datos es muy grande, el backup puede tardar. Puedes usar la opción --single-transaction para evitar bloqueos y que el proceso sea más rápido:
mysqldump -u usuario -p --single-transaction nombre_basededatos > backup.sql
Esta opción es especialmente útil para bases de datos InnoDB.
Preguntas frecuentes (FAQ)
¿Puedo hacer un backup sin acceso SSH?
Sí, muchos paneles de control como Syspanel (acceso por el puerto 2106) ofrecen herramientas gráficas para hacer backups. Sin embargo, los comandos por SSH te dan más control y flexibilidad, y son esenciales si el panel falla.
¿Qué es mejor, mysqldump o copiar los archivos físicos?
mysqldump es más portable y fácil de usar. Copiar los archivos físicos (por ejemplo, los de /var/lib/mysql) es más rápido para bases de datos muy grandes, pero es más complejo y arriesgado si la base está en uso.
¿Puedo restaurar un backup en un servidor con una versión de MySQL diferente?
Sí, normalmente funciona, pero pueden haber incompatibilidades menores. Siempre es mejor restaurar en una versión igual o superior a la que hizo el backup.
¿Qué pasa si solo quiero restaurar una tabla concreta?
Puedes extraer la tabla del archivo de backup con comandos como grep o sed, pero es más sencillo hacer un backup solo de esa tabla:
mysqldump -u usuario -p nombre_basededatos nombre_tabla > tabla_backup.sql
¿Cada cuánto tiempo debo hacer un backup?
Depende de la frecuencia con la que cambien tus datos. Para una web con contenido dinámico, un backup diario es lo recomendable. Para un blog estático, puede ser suficiente con uno semanal.
Conclusión
Aprender a hacer un backup mysql comandos y a restaurar mysql es una habilidad que te ahorrará más de un disgusto. Con mysqldump y el comando mysql, tienes el control total sobre tus datos. No olvides automatizar el proceso, guardar las copias en un lugar seguro y, sobre todo, probar que la restauración funciona.
Ahora que ya sabes cómo hacerlo, te animo a que practiques en un entorno de prueba. La próxima vez que algo salga mal, estarás tranquilo sabiendo que tienes una copia de seguridad lista para salvar el día.
Si tienes alguna duda, no dudes en consultar la documentación oficial de MySQL o, si usas Syspanel, revisa su manual de ayuda. ¡Buena suerte con tus backups!
