🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo hacer una copia de seguridad de una base de datos MySQL desde SSH

Actualizado el 19 de octubre de 2025

Introducción: ¿Por qué necesitas hacer un backup de tu base de datos MySQL?

Si tienes una web, una tienda online o cualquier aplicación que use MySQL, sabrás que la base de datos es el corazón de tu proyecto. Contiene tus artículos, usuarios, pedidos, configuraciones y todo lo que hace que tu sitio sea único. Perder esos datos por un error humano, un ataque o un fallo del servidor puede ser catastrófico.

Por eso, saber cómo hacer una copia de seguridad de una base de datos MySQL desde SSH es una habilidad imprescindible. No solo te permite dormir tranquilo, sino que te da el control total para restaurar tu información cuando la necesites. En esta guía, te explicaré paso a paso, con un lenguaje claro y sin tecnicismos innecesarios, cómo realizar un backup mysql ssh de forma manual y también cómo automatizarlo con un cron backup mysql. Al final, también veremos cómo restaurar base de datos desde tu copia.

Vamos a ello, es más fácil de lo que piensas.


Requisitos previos para empezar

Antes de lanzarnos a los comandos, asegurémonos de que tienes todo lo necesario. No necesitas ser un gurú de la terminal, pero sí tener acceso a ella.

Acceso SSH a tu servidor

Necesitas conectarte a tu servidor por SSH. Esto lo haces con un programa como PuTTY (en Windows) o directamente desde la terminal de Mac o Linux. Tu proveedor de hosting te habrá dado un usuario, la IP o dominio y una contraseña (o clave SSH).

Credenciales de la base de datos

Vas a necesitar el nombre de la base de datos, el usuario de esa base y su contraseña. Normalmente, esta información la encuentras en el panel de control de tu hosting (como cPanel, Plesk o Syspanel). Si usas Syspanel, recuerda que el acceso es por el puerto 2106.

[INFO] Si no encuentras tus credenciales, contacta con tu soporte técnico. Es mejor tenerlas a mano antes de empezar, para no interrumpir el proceso.

Confirmar que mysqldump está instalado

La herramienta que usaremos se llama mysqldump. Está incluida en casi todas las instalaciones de MySQL y MariaDB. Para comprobarlo, una vez conectado por SSH, escribe:

which mysqldump

Si te devuelve una ruta (por ejemplo, /usr/bin/mysqldump), estás listo. Si no, necesitarás instalarlo (normalmente con sudo apt install mysql-client en Ubuntu/Debian).


Paso 1: Cómo hacer una copia de seguridad de una base de datos MySQL desde SSH (método manual)

Este es el proceso básico que debes dominar. Generaremos un archivo con todo el contenido de tu base de datos. Ese archivo se llama "dump" y es tu copia de seguridad.

El comando básico de mysqldump

El comando más sencillo para un backup mysql ssh es el siguiente:

mysqldump -u USUARIO -p NOMBRE_BASE_DATOS > /ruta/donde/guardar/backup.sql

Vamos a desglosarlo:

  • mysqldump: La herramienta que hace la magia.
  • -u USUARIO: Sustituye "USUARIO" por tu nombre de usuario de MySQL.
  • -p: Este flag te pedirá la contraseña de forma segura después de ejecutar el comando.
  • NOMBRE_BASE_DATOS: El nombre exacto de la base que quieres copiar.
  • >: Redirige la salida a un archivo.
  • /ruta/donde/guardar/backup.sql: La ruta y el nombre del archivo de destino. Por ejemplo, ~/backups/miweb.sql.

Ejemplo práctico

Imagina que tu web se llama "miblog" y tu usuario es "admin". Quieres guardar el backup en tu carpeta personal. El comando sería:

mysqldump -u admin -p miblog > ~/miblog_backup.sql

Al ejecutarlo, te pedirá la contraseña. Escríbela y pulsa Enter. No verás los caracteres mientras la escribes (es normal, es una medida de seguridad). Cuando termine, tendrás un archivo llamado miblog_backup.sql en tu carpeta de usuario.

[TIP] Añade la fecha al nombre del archivo para llevar un control. Por ejemplo: miblog_backup_2025-01-15.sql. Así sabrás cuándo hiciste la copia.

Hacer backup de varias bases de datos a la vez

Si tienes varios sitios, no hace falta repetir el comando mil veces. Puedes hacer un backup de todas a la vez:

mysqldump -u admin -p --all-databases > ~/todas_mis_bases.sql

Esto es muy útil si necesitas migrar de servidor, pero para un uso diario, es mejor individualizar.


Paso 2: Comprimir el backup para ahorrar espacio

Los archivos SQL pueden ser muy pesados. Lo más común es comprimirlos en un .tar.gz o .zip. Esto te ahorrará espacio en disco y hará que las descargas sean más rápidas. Para ello, usaremos la compresión sobre la marcha.

Comando con compresión

Modificamos el comando anterior para que la salida pase por gzip (el compresor estándar en Linux):

mysqldump -u admin -p miblog | gzip > ~/miblog_backup.sql.gz

La barra vertical | (pipe) hace que la salida de mysqldump se envíe directamente a gzip, que la comprime y la guarda en el archivo .gz.

[TIP] Para descomprimirla y ver el contenido, usa: gunzip miblog_backup.sql.gz. Esto te devolverá el archivo .sql original.


Paso 3: Restaurar una base de datos desde tu backup

Tener el backup es genial, pero saber restaurar base de datos es lo que te salvará el día. El proceso es igual de sencillo, pero invirtiendo la dirección.

Restaurar un backup sin comprimir

Si tu backup es un archivo .sql normal, el comando es:

mysql -u USUARIO -p NOMBRE_BASE_DATOS < /ruta/del/backup.sql

Siguiendo nuestro ejemplo:

mysql -u admin -p miblog < ~/miblog_backup.sql

Te pedirá la contraseña y, al terminar, tu base de datos habrá sido restaurada con la información del archivo.

Restaurar un backup comprimido

Si tu backup está comprimido (.sql.gz), primero hay que descomprimirlo y luego importarlo, o hacerlo en un solo paso:

gunzip < ~/miblog_backup.sql.gz | mysql -u admin -p miblog

Este comando descomprime el archivo y lo envía directamente a MySQL.

[WARNING] ¡Ojo! Al restaurar, sobrescribes la base de datos actual. Si no estás seguro, haz un backup de la base actual antes de restaurar. Es como borrar un archivo y reemplazarlo por otro: no hay vuelta atrás.


Paso 4: Automatizar el backup con cron (cron backup mysql)

Hacer backups manuales está bien, pero la constancia es clave. Lo ideal es que tu servidor haga las copias por ti de forma automática. Para eso usamos el cron, un programador de tareas de Linux.

Crear un script de backup

Primero, creamos un pequeño script que contenga el comando de backup. Esto nos permite tenerlo todo ordenado y poder modificarlo fácilmente.

  1. Crea un archivo, por ejemplo, backup_db.sh:

    nano ~/backup_db.sh
    
  2. Pega el siguiente contenido (ajusta los datos a los tuyos):

    #!/bin/bash
    # Script de backup de MySQL
    
    FECHA=$(date +%Y-%m-%d_%H-%M-%S)
    NOMBRE_ARCHIVO="miblog_backup_$FECHA.sql.gz"
    
    mysqldump -u admin -p'TU_CONTRASEÑA' miblog | gzip > ~/backups/$NOMBRE_ARCHIVO
    

    [WARNING] En este script, la contraseña va directamente en el comando. Asegúrate de que el archivo tenga permisos restrictivos para que solo tú lo puedas leer. Además, crea la carpeta backups en tu home si no existe (mkdir ~/backups).

  3. Guarda el archivo (en nano: Ctrl + X, luego Y y Enter).

  4. Dale permisos de ejecución:

    chmod +x ~/backup_db.sh
    

Programar la tarea en el cron

Ahora, vamos a decirle al sistema que ejecute este script cada día, por ejemplo, a las 3 de la mañana (hora del servidor).

  1. Edita la tabla de cron:

    crontab -e
    
  2. Añade la siguiente línea al final:

    0 3 * * * /home/TU_USUARIO/backup_db.sh
    
    • 0 3 * * *: Significa que se ejecutará a las 3:00 AM todos los días (minuto 0, hora 3, cada día del mes, cada mes, cada día de la semana).
    • La ruta debe ser la absoluta a tu script. Puedes saberla con el comando pwd.
  3. Guarda y cierra. Con esto, tendrás un cron backup mysql funcionando.

[INFO] Puedes cambiar la frecuencia: */30 * * * * sería cada 30 minutos, 0 2 * * 1 sería cada lunes a las 2 AM, etc. Investiga un poco sobre la sintaxis de cron para adaptarlo a tus necesidades.


Consejos avanzados y buenas prácticas

Aquí van algunos trucos que te harán la vida más fácil y tus backups más seguros.

Mantener solo las últimas copias

No queremos llenar el disco duro con backups viejos. Podemos hacer que el script elimine las copias de hace más de 7 días. Añade esta línea al final de tu script:

find ~/backups/*.sql.gz -mtime +7 -exec rm {} \;

Esto borra los archivos .sql.gz que tengan más de 7 días de antigüedad.

Backup a un lugar remoto (offsite)

Guardar los backups en el mismo servidor es un riesgo (si el disco falla, pierdes todo). Es recomendable copiarlos a otro lugar. Puedes usar scp o rsync para enviarlos a otro servidor o a un servicio de almacenamiento en la nube.

Un ejemplo simple con rsync:

rsync -avz ~/backups/ usuario@otro-servidor:/ruta/destino/

Probar la restauración

No hay nada peor que un backup que no funciona. Cada cierto tiempo, restaura una copia en un entorno de pruebas (o en una base de datos temporal) para verificar que el archivo es válido.

Usar --single-transaction para evitar bloqueos

Si tu web tiene tráfico constante, un backup normal puede bloquear las tablas. Para evitar interrupciones, añade el flag --single-transaction al comando mysqldump. Esto es especialmente útil si usas tablas InnoDB.

mysqldump --single-transaction -u admin -p miblog | gzip > ~/backup.sql.gz

Preguntas frecuentes (FAQ)

Aquí respondo a las dudas más comunes que me suelen llegar sobre este tema.

¿Puedo hacer un backup de solo una tabla?

Sí, solo tienes que especificar el nombre de la tabla después del nombre de la base de datos.

mysqldump -u admin -p miblog usuarios > ~/solo_usuarios.sql

¿Qué pasa si mi base de datos es muy grande?

Para bases de datos muy grandes, mysqldump puede ser lento y generar archivos enormes. Te recomiendo usar compresión (como hemos visto) y, si el problema persiste, considera usar herramientas más avanzadas como mydumper o hacer backups incrementales. Pero para la mayoría de los casos, mysqldump es más que suficiente.

¿Es lo mismo hacer backup en MySQL que en MariaDB?

Sí, el comando mysqldump funciona perfectamente tanto en MySQL como en MariaDB. Son proyectos muy compatibles.

¿Dónde puedo encontrar las credenciales de mi base de datos si uso Syspanel?

En Syspanel (accesible por el puerto 2106), ve a la sección de "Bases de datos". Allí verás el nombre de la base, el usuario y podrás cambiar la contraseña si es necesario. Es un panel muy intuitivo.

¿Puedo programar el backup desde Syspanel en vez de usar SSH?

Sí, muchos paneles de control ofrecen opciones de backup programado desde su interfaz gráfica. Sin embargo, hacerlo por SSH te da más flexibilidad y control sobre el proceso, además de que funciona en cualquier servidor, tenga el panel que tenga. Es una habilidad muy valiosa.


Conclusión

Dominar el backup mysql ssh es una de las mejores inversiones de tiempo que puedes hacer como administrador de tu web. Con el comando mysqldump, la compresión y la automatización con cron, tienes un sistema de copias de seguridad robusto y profesional sin depender de plugins o paneles.

Recuerda la frase clave: "si no tienes un backup, no tienes datos". Practica estos pasos, automatiza el proceso y, sobre todo, prueba tus restauraciones. Así, cuando llegue el momento crítico, estarás más que preparado para actuar con calma y eficacia.

Espero que esta guía te haya sido de gran ayuda. Si tienes cualquier duda, no dudes en dejar un comentario y te ayudaré encantado. ¡Buena suerte con tus backups!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel