Cómo hacer una copia de seguridad de una base de datos MySQL desde la terminal (SSH)
¿Por qué necesitas hacer una copia de seguridad de tu base de datos MySQL?
Si tienes una página web, una tienda online o cualquier aplicación que use MySQL, sabrás que los datos son lo más valioso que posees. Imagina que un plugin falla, un atacante borra información o simplemente un error humano elimina una tabla completa. Sin una copia de seguridad, recuperar esa información puede ser imposible o extremadamente costoso.
Hacer un backup mysql terminal es una de las tareas más importantes que puedes aprender como administrador de tu propio servidor. Aunque existen paneles de control como cPanel o Syspanel (recuerda que este último se accede por el puerto 2106), la terminal te ofrece un control total, velocidad y la posibilidad de automatizar procesos.
En esta guÃa, vamos a explicarte paso a paso cómo realizar una copia seguridad mysql ssh utilizando el comando mysqldump. No necesitas ser un experto, solo seguir las instrucciones al pie de la letra. Al final, tendrás un archivo .sql con todos tus datos listo para guardar en un lugar seguro.
Requisitos previos antes de empezar
Antes de lanzar el comando mágico, asegúrate de tener lo siguiente:
- Acceso SSH a tu servidor: Necesitas las credenciales (usuario y contraseña, o mejor aún, una clave SSH).
- Credenciales de MySQL: El usuario de la base de datos (normalmente
rooto un usuario especÃfico) y su contraseña. - Conocimiento del nombre de tu base de datos: Puedes verla en tu panel de control (como Syspanel o phpMyAdmin).
- Espacio en disco suficiente: El archivo de respaldo ocupará espacio, asà que verifica que tienes al menos el doble del tamaño de la base de datos.
Si no sabes cómo conectarte por SSH, busca en tu proveedor de hosting el tutorial básico. Normalmente se usa un programa como PuTTY (en Windows) o la propia terminal (en Mac/Linux).
El comando básico: mysqldump ejemplo
El comando más sencillo para hacer una copia de seguridad es mysqldump. Su sintaxis básica es la siguiente:
mysqldump -u USUARIO -p NOMBRE_BASE_DE_DATOS > respaldo.sql
Vamos a desglosarlo:
mysqldump: Es la herramienta que viene con MySQL.-u USUARIO: Especifica el usuario de MySQL.-p: Indica que pedirá la contraseña. Se te preguntará después de ejecutar el comando.NOMBRE_BASE_DE_DATOS: El nombre de la base de datos que quieres respaldar.>: Redirige la salida a un archivo.respaldo.sql: El nombre que le quieres dar al archivo de respaldo.
Ejemplo práctico
Imagina que tu base de datos se llama mi_tienda_online. El comando serÃa:
mysqldump -u root -p mi_tienda_online > respaldo_mi_tienda.sql
Al ejecutarlo, el sistema te pedirá la contraseña del usuario root. EscrÃbela y presiona Enter. Se creará un archivo llamado respaldo_mi_tienda.sql en el directorio donde estés parado.
[TIP]
Si no quieres que te pida la contraseña cada vez (por ejemplo, para automatizar), puedes escribirla directamente en el comando, pero es menos seguro. Ejemplo: mysqldump -u root -pTU_CONTRASEÑA mi_tienda > respaldo.sql. Eso sÃ, asegúrate de que nadie más vea tu historial de comandos.
Cómo hacer una copia de seguridad de TODAS las bases de datos
Si tienes varias bases de datos (por ejemplo, una para cada sitio web), puedes respaldarlas todas de una sola vez. El comando es similar, pero usamos la opción --all-databases:
mysqldump -u root -p --all-databases > respaldo_total.sql
Este comando es muy útil si estás migrando de servidor o quieres tener una copia de seguridad completa de todo tu MySQL. Ten en cuenta que el archivo resultante será más grande y puede tardar más en generarse.
Añadiendo más opciones útiles a tu mysqldump ejemplo
El comando básico funciona, pero para un uso profesional y evitar errores, es recomendable añadir algunas banderas (flags). Aquà tienes las más importantes:
1. --single-transaction (para bases InnoDB)
Si tu base de datos usa el motor InnoDB (el más común en WordPress y otras aplicaciones), esta opción garantiza que la copia de seguridad sea consistente sin bloquear las tablas mientras se hace el respaldo. Esto es crucial si tu sitio está en producción y recibiendo visitas.
mysqldump -u root -p --single-transaction mi_tienda_online > respaldo.sql
2. --routines y --triggers (para procedimientos almacenados y triggers)
Si tu aplicación utiliza funciones, procedimientos almacenados o triggers, debes incluirlos en la copia. Si no, los perderás al restaurar.
mysqldump -u root -p --routines --triggers mi_tienda_online > respaldo.sql
3. --add-drop-table (para sobrescribir tablas existentes al restaurar)
Esta opción añade un comando DROP TABLE IF EXISTS antes de cada CREATE TABLE. Esto es muy útil porque al restaurar, no tendrás errores si ya existen tablas con el mismo nombre.
mysqldump -u root -p --add-drop-table mi_tienda_online > respaldo.sql
Comando completo recomendado
Un mysqldump ejemplo completo y robusto serÃa:
mysqldump -u root -p --single-transaction --routines --triggers --add-drop-table mi_tienda_online > respaldo_completo.sql
Comprimir el respaldo para ahorrar espacio
Los archivos .sql pueden ser muy grandes. Una práctica común es comprimirlos en formato .gz (gzip). Esto reduce el tamaño hasta un 80-90% en muchos casos.
Para hacerlo, solo tienes que añadir el comando gzip al final, usando un pipe (|):
mysqldump -u root -p mi_tienda_online | gzip > respaldo.sql.gz
[TIP]
Para descomprimir y restaurar directamente, puedes usar:
gunzip < respaldo.sql.gz | mysql -u root -p mi_tienda_online
Cómo restaurar una base de datos desde tu backup mysql terminal
Hacer la copia es solo la mitad del trabajo. Saber restaurarla es igual de importante. El proceso es muy sencillo.
Restaurar una sola base de datos
Primero, crea la base de datos si no existe (puedes hacerlo desde Syspanel o con el comando CREATE DATABASE). Luego, usa el siguiente comando:
mysql -u root -p mi_tienda_online < respaldo.sql
O si el respaldo está comprimido:
gunzip < respaldo.sql.gz | mysql -u root -p mi_tienda_online
Restaurar todas las bases de datos
Si hiciste un backup con --all-databases, la restauración es aún más fácil:
mysql -u root -p < respaldo_total.sql
[WARNING]
Este comando sobrescribirá todas las bases de datos existentes. Asegúrate de que es lo que quieres hacer antes de ejecutarlo.
Automatizar las copias de seguridad con cron
Una vez que dominas el comando manual, el siguiente paso es automatizarlo. Puedes usar cron (el programador de tareas de Linux) para que tu servidor haga una copia seguridad mysql ssh automáticamente cada dÃa, semana, etc.
Primero, crea un script. Por ejemplo, un archivo llamado backup.sh:
#!/bin/bash
FECHA=$(date +%Y-%m-%d)
mysqldump -u root -pTU_CONTRASEÑA --single-transaction mi_tienda_online | gzip > /ruta/a/tu/directorio/respaldo_$FECHA.sql.gz
Luego, dale permisos de ejecución:
chmod +x backup.sh
Y finalmente, añade una tarea cron. Para editarla:
crontab -e
Y añade una lÃnea como esta para ejecutarlo todos los dÃas a las 3 de la madrugada:
0 3 * * * /ruta/a/tu/backup.sh
[INFO]
Guarda los respaldos en un directorio fuera del public_html o www para que no sean accesibles desde el navegador. Un buen lugar es /home/usuario/backups/.
Errores comunes y cómo solucionarlos
1. mysqldump: command not found
Si aparece este error, significa que el comando no está en tu PATH. Prueba con la ruta completa:
/usr/bin/mysqldump -u root -p mi_tienda > respaldo.sql
2. Access denied for user 'root'@'localhost'
Este error indica que la contraseña o el usuario son incorrectos. Revisa bien las credenciales. Si estás usando Syspanel, puedes ver el usuario y contraseña de la base de datos en su panel (puerto 2106).
3. El archivo de respaldo está vacÃo
Esto suele pasar si el nombre de la base de datos es incorrecto. Verifica que la base exista con el comando:
mysql -u root -p -e "SHOW DATABASES;"
Preguntas frecuentes (FAQ)
¿Puedo hacer una copia de seguridad sin SSH?
SÃ, puedes usar phpMyAdmin o el panel de control de tu hosting (como Syspanel). Sin embargo, SSH es más rápido y flexible para bases de datos grandes.
¿Cuánto tiempo tarda el proceso?
Depende del tamaño de la base de datos y de la velocidad del servidor. Una base pequeña (menos de 1 GB) puede tardar segundos. Una muy grande (varios GB) puede tardar minutos.
¿Es seguro guardar el respaldo en el mismo servidor?
No es recomendable. Si el servidor falla o es hackeado, perderás tanto los datos como la copia. Descarga el archivo a tu computadora o usa un servicio de almacenamiento en la nube.
¿Qué es mejor, mysqldump o hacer una copia de los archivos de MySQL?
mysqldump es más universal y fácil de restaurar en otro servidor. Copiar los archivos fÃsicos es más rápido para bases muy grandes, pero es más complejo de restaurar.
Conclusión
Hacer una copia seguridad mysql ssh es una habilidad esencial para cualquier persona que gestione un sitio web serio. Con el comando mysqldump y un poco de práctica, puedes tener la tranquilidad de que tus datos están a salvo.
Recuerda los puntos clave:
- Usa
--single-transactionpara bases InnoDB. - Comprime tus respaldos con
gzippara ahorrar espacio. - Automatiza el proceso con
cron. - Guarda las copias en un lugar seguro y fuera del servidor.
[INFO]
Si usas Syspanel, recuerda que puedes acceder a él a través del puerto 2106. Desde su interfaz también puedes gestionar bases de datos, pero la terminal te da más control.
Esperamos que esta guÃa te haya sido útil. Ahora ya sabes cómo hacer un backup mysql terminal de forma segura y eficiente. ¡No esperes a que sea demasiado tarde para empezar a proteger tus datos!
¿Te ha quedado alguna duda? Déjanos un comentario y estaremos encantados de ayudarte.
