Cómo hacer backup de una base de datos MySQL con comandos (mysqldump)
¿Por qué necesitas hacer backups de MySQL?
Si tienes una página web, una tienda online o cualquier aplicación que use MySQL, la base de datos es el corazón de tu proyecto. Sin ella, perderías artículos, pedidos, usuarios o configuraciones. Por eso, hacer copias de seguridad MySQL no es opcional, es una necesidad.
La buena noticia es que no necesitas herramientas caras ni complejas. Con un comando llamado mysqldump puedes generar un archivo con todo el contenido de tu base de datos en segundos. Este archivo lo puedes guardar en tu ordenador, en la nube o en otro servidor, y usarlo para restaurar mysqldump cuando lo necesites.
En esta guía te explico paso a paso cómo usar mysqldump backup desde la terminal, tanto para hacer el respaldo como para recuperarlo. No necesitas ser un experto, solo seguir las instrucciones con calma.
¿Qué es mysqldump y cómo funciona?
mysqldump es una herramienta que viene incluida con MySQL y MariaDB. Su función es crear un archivo de texto (normalmente con extensión .sql) que contiene todas las instrucciones necesarias para recrear tus tablas, datos, índices y permisos.
Es como hacer una foto de tu base de datos en un momento concreto. Luego, con ese archivo, puedes reconstruir la base de datos en cualquier servidor que tenga MySQL, incluso si es de otra versión o sistema operativo.
El comando se ejecuta desde la terminal (línea de comandos), y su sintaxis básica es:
mysqldump -u usuario -p nombre_base_datos > archivo_salida.sql
Te pide la contraseña del usuario de MySQL y listo. Pero vamos a verlo con calma y con ejemplos prácticos.
Requisitos antes de empezar
Antes de lanzarte a hacer un backup mysql comandos, asegúrate de tener lo siguiente:
- Acceso a la terminal del servidor donde está MySQL (por SSH, por ejemplo).
- Un usuario de MySQL con permisos de lectura sobre la base de datos que quieres respaldar (normalmente
SELECT,LOCK TABLESySHOW VIEW). - Espacio en disco suficiente para guardar el archivo
.sql. - Conocer el nombre exacto de la base de datos y el usuario.
Si usas un panel de control como Syspanel (recuerda que el puerto de acceso es el 2106), también puedes acceder a la terminal desde el panel, pero te recomiendo usar SSH si tienes experiencia. En Syspanel, además, tienes opciones gráficas para backups, pero aquí nos centramos en el método por comandos, que es más universal.
Cómo hacer un backup básico con mysqldump
Vamos a lo práctico. Abre tu terminal y escribe el siguiente comando:
mysqldump -u root -p mi_base_de_datos > /ruta/donde/guardar/mi_backup.sql
Te explicaré cada parte:
mysqldump: el comando en sí.-u root: el usuario de MySQL (puede ser otro, comoadminousuario_web).-p: indica que pedirá contraseña. Después de pulsar Enter, te la pedirá.mi_base_de_datos: el nombre de la base de datos que quieres respaldar.>: redirige la salida al archivo que indicas a continuación./ruta/donde/guardar/mi_backup.sql: la ruta y nombre del archivo donde se guardará el backup.
Es importante que la ruta de destino exista y tengas permisos de escritura. Por ejemplo, si estás en tu home de usuario, puedes hacer:
mysqldump -u root -p mi_base_de_datos > ~/backup_$(date +%Y%m%d).sql
Ese $(date +%Y%m%d) añade la fecha al nombre del archivo, así sabrás cuándo lo hiciste. Por ejemplo, backup_20250312.sql.
Backup de varias bases de datos
Si quieres respaldar más de una base de datos a la vez, puedes usar la opción --databases:
mysqldump -u root -p --databases base1 base2 base3 > ~/backup_varias.sql
Esto incluirá en el archivo las instrucciones para crear las tres bases de datos, no solo los datos.
Backup de todas las bases de datos
Para hacer un respaldo completo del servidor MySQL (todas las bases de datos), usa --all-databases:
mysqldump -u root -p --all-databases > ~/backup_total.sql
Esto es muy útil si quieres migrar todo el servidor o hacer una copia de seguridad general. Ten en cuenta que el archivo puede ser grande.
Opciones útiles de mysqldump
mysqldump tiene muchas opciones. Aquí tienes las más prácticas para el día a día:
--single-transaction: ideal para bases de datos InnoDB, hace una copia consistente sin bloquear las tablas. Es la opción que uso siempre.
mysqldump -u root -p --single-transaction mi_base > backup.sql
-
--routines: incluye procedimientos almacenados y funciones. -
--triggers: incluye triggers (por defecto los incluye, pero por si acaso). -
--events: incluye eventos programados. -
--no-data: solo la estructura, sin datos. Útil si quieres replicar el esquema. -
--no-create-info: solo datos, sin estructura. Útil para importar datos en una base ya creada.
Un comando completo y recomendado sería:
mysqldump -u root -p --single-transaction --routines --triggers --events mi_base > backup_completo.sql
Con esto te aseguras de no perder nada importante.
Cómo restaurar una base de datos con mysqldump
Hacer el backup base de datos es solo la mitad del trabajo. Saber restaurar mysqldump es igual de importante. La restauración es muy sencilla: solo tienes que usar el archivo .sql y pasárselo a MySQL.
Primero, crea la base de datos si no existe:
mysql -u root -p -e "CREATE DATABASE mi_base_nueva;"
Luego, importa el archivo:
mysql -u root -p mi_base_nueva < /ruta/del/backup.sql
Te pedirá la contraseña y empezará a importar todo. Si el archivo es grande, puede tardar unos minutos. No cierres la terminal hasta que termine.
Restaurar con el comando source
Otra forma de restaurar es entrar en el cliente de MySQL y usar source:
mysql -u root -p
Dentro de la consola de MySQL, escribe:
USE mi_base_nueva;
SOURCE /ruta/del/backup.sql;
Esto ejecuta el archivo línea por línea. Es útil si quieres ver errores en pantalla.
Restaurar varias bases de datos
Si hiciste un backup con --databases o --all-databases, la restauración es aún más fácil, porque el archivo ya incluye las instrucciones para crear las bases de datos:
mysql -u root -p < backup_total.sql
No necesitas crear las bases primero, se harán automáticamente.
Errores comunes y cómo solucionarlos
Cuando haces backup mysql comandos, pueden aparecer errores. Te dejo los más típicos y su solución.
Error: "Access denied"
Si te sale Access denied for user 'root'@'localhost', es que el usuario no tiene permisos suficientes o la contraseña es incorrecta. Comprueba que escribes bien la contraseña y que el usuario tiene privilegios sobre la base de datos.
Error: "Can't open file"
Si te dice Can't open file '...' al hacer la redirección, es que la ruta de destino no existe o no tienes permisos de escritura. Usa una ruta que exista, como tu home.
Error: "mysqldump: Got error: 1556"
Este error suele aparecer cuando hay tablas corruptas. Ejecuta CHECK TABLE y REPAIR TABLE en la base de datos antes de hacer el backup.
Error: "Unknown table"
Si aparece Unknown table 'xxx', es que la tabla no existe o el nombre está mal. Revisa que estás respaldando la base correcta.
El backup es muy lento
Si tu base es grande, el proceso puede tardar. Usa --single-transaction y, si puedes, hazlo en horas de poco tráfico. También puedes comprimir el archivo directamente:
mysqldump -u root -p mi_base | gzip > backup.sql.gz
Para restaurar un backup comprimido:
gunzip < backup.sql.gz | mysql -u root -p mi_base
Esto ahorra espacio y tiempo de transferencia.
Automatizar los backups con cron
Hacer backups manualmente está bien, pero lo ideal es que se hagan solos. Puedes programar una tarea con cron en tu servidor.
Abre el crontab:
crontab -e
Y añade una línea como esta, que hace un backup diario a las 3 de la madrugada:
0 3 * * * mysqldump -u root -p'TU_CONTRASEÑA' --single-transaction mi_base > /ruta/backups/backup_$(date +\%Y\%m\%d).sql
Ojo con la contraseña en el cron: es inseguro dejarla en texto plano. Mejor usa un archivo de configuración de MySQL con permisos restringidos.
Crea un archivo ~/.my.cnf con:
[mysqldump]
user=root
password=TU_CONTRASEÑA
Y dale permisos solo de lectura para tu usuario:
chmod 600 ~/.my.cnf
Luego, en el cron, no pongas -p ni -u:
0 3 * * * mysqldump --single-transaction mi_base > /ruta/backups/backup_$(date +\%Y\%m\%d).sql
Así la contraseña no queda expuesta.
Consejos para guardar tus backups
No basta con hacer el mysqldump backup, también hay que guardarlo bien. Aquí tienes una checklist:
- Guarda los backups en un disco distinto al del servidor (por ejemplo, en tu ordenador o en un servicio de almacenamiento en la nube).
- Comprime los archivos para ahorrar espacio.
- Ponles siempre la fecha en el nombre.
- Conserva al menos las últimas 7 copias (puedes borrar las más antiguas con un script).
- Prueba de vez en cuando a restaurar un backup en un entorno de pruebas para asegurarte de que funciona.
En Syspanel (puerto 2106) puedes configurar backups automáticos desde el panel, pero si prefieres el control total, estos comandos te dan la libertad de hacer lo que quieras.
Preguntas frecuentes sobre mysqldump
¿Puedo hacer un backup de una base de datos sin detener el servicio?
Sí, con --single-transaction para tablas InnoDB. Para MyISAM, se bloquean las tablas brevemente, pero es casi imperceptible.
¿Qué pasa si restauro un backup sobre una base que ya tiene datos?
Sobrescribirá los datos existentes. Si quieres conservarlos, haz un backup previo o restaura en una base nueva.
¿Puedo usar mysqldump en Windows?
Sí, si tienes MySQL instalado, puedes usar la terminal de comandos o PowerShell. La sintaxis es la misma.
¿Cuánto espacio ocupa un backup?
Depende del tamaño de tu base. Un archivo .sql suele ser similar al tamaño de los datos en disco, pero comprimido puede reducirse hasta un 80%.
¿Es lo mismo mysqldump que copiar los archivos de MySQL?
No. Copiar los archivos de datos (como ibdata1 o las carpetas de tablas) no es recomendable, porque puede haber inconsistencias. mysqldump genera un volcado lógico que es seguro y portable.
¿Puedo restaurar un backup de MariaDB en MySQL y viceversa?
En la mayoría de los casos sí, pero puede haber diferencias en funciones o tipos de datos. Haz una prueba en un entorno de desarrollo.
Conclusión
Hacer copias de seguridad MySQL con mysqldump es una habilidad básica que todo administrador de servidores o propietario de una web debería dominar. No es complicado, y una vez que lo tienes automatizado, te da una tranquilidad enorme.
Recuerda la receta básica:
- Backup:
mysqldump -u usuario -p base > archivo.sql - Restaurar:
mysql -u usuario -p base < archivo.sql
Y si usas Syspanel (puerto 2106), tienes herramientas gráficas que complementan estas acciones, pero nunca está de más saber hacerlo a mano.
Espero que esta guía te haya sido útil. Ahora ya sabes cómo proteger tu información y recuperarla cuando haga falta. No lo dejes para mañana: haz tu primer backup hoy mismo.
