🗄️ Cómo hacer backup y restore en MySQL (mysqldump) + exportar solo estructura o datos
Si trabajas con bases de datos, hay una regla que nunca debes olvidar:
Si no tienes backups, no tienes datos.
En MySQL, hacer copias de seguridad no es opcional. Es una práctica esencial para:
- Evitar pérdida de información
- Migrar proyectos entre servidores
- Crear entornos de desarrollo
- Recuperarte de errores o ataques
En esta guía aprenderás:
- Cómo hacer backup completo de MySQL
- Cómo restaurar una base de datos
- Cómo exportar solo la estructura (sin datos)
- Cómo exportar solo los datos
- Cómo automatizar backups
- Buenas prácticas reales de sysadmin
🧠 Qué es mysqldump y por qué usarlo
mysqldump es una herramienta oficial de MySQL que permite:
- Exportar bases de datos a archivos
.sql - Generar scripts reproducibles
- Migrar datos fácilmente entre servidores
El resultado es un archivo de texto con:
- CREATE DATABASE
- CREATE TABLE
- INSERT INTO
Es decir, una copia completa de tu base de datos en formato SQL.
📦 Backup completo de una base de datos
El caso más común.
mysqldump -u usuario -p basedatos > backup.sql
Ejemplo real:
mysqldump -u root -p tienda > tienda_backup.sql
Esto exporta:
- estructura
- datos
- índices
🌍 Backup de todas las bases de datos
mysqldump -u root -p --all-databases > backup_total.sql
Ideal para:
- migraciones completas
- snapshots del servidor
📋 Backup de una sola tabla
mysqldump -u usuario -p basedatos tabla > tabla.sql
Ejemplo:
mysqldump -u root -p tienda usuarios > usuarios.sql
Muy útil para:
- debugging
- migraciones parciales
🧱 Exportar solo la estructura (SIN datos)

Esto es extremadamente útil y sí, es muy buscado 🔥
mysqldump -u usuario -p --no-data basedatos > estructura.sql
Esto incluye:
- CREATE TABLE
- índices
- claves primarias y foráneas
Pero NO incluye:
- registros
¿Cuándo usarlo?
- Crear entornos de desarrollo
- Compartir estructura sin datos sensibles
- Versionar base de datos
📊 Exportar solo datos (SIN estructura)
mysqldump -u usuario -p --no-create-info basedatos > datos.sql
Incluye:
- INSERT INTO
Pero no incluye:
- CREATE TABLE
🔄 Cómo restaurar una base de datos
Restaurar en una base existente
mysql -u usuario -p basedatos < backup.sql
Restaurar creando la base automáticamente
mysql -u root -p < backup.sql
Esto funciona si el backup incluye:
CREATE DATABASE USE basedatos;
🗜️ Backups comprimidos (muy recomendado)


Para ahorrar espacio:
mysqldump -u root -p basedatos | gzip > backup.sql.gz
Restaurar backup comprimido
gunzip < backup.sql.gz | mysql -u root -p basedatos
⏱️ Automatizar backups con cron
Esto es lo que separa a un usuario normal de un sysadmin 😄
Editar cron:
crontab -e
Ejemplo: backup diario a las 3 AM
0 3 * * * mysqldump -u root -pPASSWORD basedatos > /backups/backup.sql
Recomendación profesional
Mejor usar script:
#!/bin/bash fecha=$(date +%F) mysqldump -u root -pPASSWORD basedatos > /backups/backup_$fecha.sql
⚠️ Errores comunes
❌ Olvidar permisos
El usuario debe tener acceso a la base.
❌ No probar el restore
Un backup no sirve si no puedes restaurarlo.
❌ No automatizar
Hacer backups manuales es un error clásico.
❌ Guardar backups en el mismo servidor
Si el servidor cae, pierdes todo.
🧠 Buenas prácticas
- Mantener múltiples copias
- Usar compresión
- Guardar backups fuera del servidor
- Probar restauraciones
- Automatizar procesos
🚀 Casos reales de uso
Migración de servidor
- backup
- restore en nuevo servidor
Desarrollo
- exportar estructura sin datos
Debugging
- exportar tabla específica
🧠 Conclusión:
Dominar mysqldump es una de las habilidades más importantes en MySQL.
Te permite:
- proteger tus datos
- migrar proyectos
- trabajar de forma profesional
Y lo mejor:
Con unos pocos comandos puedes controlar completamente tus backups.
Post relacionados:
Si llegaste aquí pero no tienes muy claro que es MySQL:
- ¿Qué es MySQL y para qué sirve? (explicado sin tecnicismos)
- Crear usuarios y permisos en MySQL sin morir en el intento
Si eres más curioso, te pueden interesar:
- Errores comunes en MySQL que matan el rendimiento (y cómo evitarlos)
- Cómo detectar consultas lentas en MySQL paso a paso (slow query log)
- Linux
Tags de este post
Preguntas frecuentes
--Considera herramientas como mydumper
--Cloud (S3, Google Drive)
--Otro VPS
sitios críticos → diario o cada hora
proyectos pequeños → diario
incremental → más eficiente
mysql -u usuario -p basedatos < tabla.sql