Hacer backup de base de datos MySQL
¿Por qué hacer backups?
Los backups son esenciales para proteger tus datos. Te permiten restaurar tu base de datos en caso de:
- ✅ Pérdida accidental de datos
- ✅ Corrupción de la base de datos
- ✅ Ataques o problemas de seguridad
- ✅ Migración a otro servidor
Método 1: Backup desde phpMyAdmin
Paso 1: Acceder a phpMyAdmin
- Ingresá a phpMyAdmin
- Seleccioná la base de datos que querés respaldar
Paso 2: Exportar la base de datos
- Hacé clic en la pestaña Exportar o Export
- Seleccioná el método Rápido o Personalizado
- Para backups, generalmente el método rápido es suficiente
Paso 3: Configurar opciones
- Formato: SQL (recomendado para backups)
- Compresión: Seleccioná gzip o zip para archivos grandes
- Hacé clic en Continuar o Go
El archivo se descargará automáticamente.
Método 2: Backup desde la terminal (mysqldump)
Backup de una base de datos específica:
mysqldump -u usuario -p nombre_base_de_datos > backup.sql
Ejemplo:
mysqldump -u root -p mi_webapp > backup_2024.sql
Te pedirá la contraseña y creará el archivo backup.sql.
Backup con compresión:
mysqldump -u usuario -p nombre_base_de_datos | gzip > backup.sql.gz
Esto crea un archivo comprimido que ocupa menos espacio.
Backup de todas las bases de datos:
mysqldump -u root -p --all-databases > all_databases_backup.sql
Método 3: Backup con fecha automática
Para crear backups con fecha en el nombre:
mysqldump -u root -p nombre_base_de_datos > backup_$(date +%Y%m%d_%H%M%S).sql
Esto creará un archivo como: backup_20241215_143022.sql
Opciones avanzadas de mysqldump
Incluir solo estructura (sin datos):
mysqldump -u root -p --no-data nombre_base_de_datos > estructura.sql
Incluir solo datos (sin estructura):
mysqldump -u root -p --no-create-info nombre_base_de_datos > datos.sql
Incluir procedimientos almacenados y funciones:
mysqldump -u root -p --routines nombre_base_de_datos > backup.sql
Incluir eventos:
mysqldump -u root -p --events nombre_base_de_datos > backup.sql
Backup completo con todo:
mysqldump -u root -p --routines --events --triggers nombre_base_de_datos > backup_completo.sql
Automatizar backups con cron
Podés crear un script para hacer backups automáticos:
Crear script de backup:
#!/bin/bash
# Configuración
DB_USER="root"
DB_PASS="tu_contraseña"
DB_NAME="nombre_base_de_datos"
BACKUP_DIR="/ruta/backups"
DATE=$(date +%Y%m%d_%H%M%S)
# Crear directorio si no existe
mkdir -p $BACKUP_DIR
# Hacer backup
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/backup_$DATE.sql.gz
# Eliminar backups antiguos (más de 7 días)
find $BACKUP_DIR -name "backup_*.sql.gz" -mtime +7 -delete
echo "Backup completado: backup_$DATE.sql.gz"
Hacer el script ejecutable:
chmod +x /ruta/al/script/backup.sh
Agregar a cron (backup diario a las 2 AM):
0 2 * * * /ruta/al/script/backup.sh
Backup remoto
Para guardar backups en otro servidor o servicio de almacenamiento:
mysqldump -u root -p nombre_base_de_datos | gzip | ssh usuario@servidor_remoto "cat > /ruta/remota/backup.sql.gz"
O usando SCP:
mysqldump -u root -p nombre_base_de_datos | gzip > backup.sql.gz
scp backup.sql.gz usuario@servidor_remoto:/ruta/remota/
Verificar el backup
Después de crear un backup, verificá que sea válido:
# Verificar que el archivo existe y tiene contenido
ls -lh backup.sql
# Verificar que es SQL válido (debería mostrar comandos SQL)
head -20 backup.sql
O intentá importarlo en una base de datos de prueba para verificar que funciona.
Mejores prácticas de backup
- ✅ Hacé backups regularmente (diario para bases de datos importantes)
- ✅ Guardá backups en múltiples ubicaciones (servidor, local, nube)
- ✅ Comprimí los backups para ahorrar espacio
- ✅ Probá restaurar backups periódicamente para verificar que funcionan
- ✅ Mantené múltiples versiones de backups (últimos 7-30 días)
- ✅ Documentá el proceso de backup y restauración
Problemas comunes
El backup es muy grande
- Usá compresión (gzip)
- Considerá hacer backup solo de tablas importantes
- Eliminá datos antiguos antes del backup
Error "Access denied"
- Verificá que el usuario tenga permisos suficientes
- Verificá que la contraseña sea correcta
- Usá el usuario root si es necesario
El backup tarda mucho
- Es normal para bases de datos grandes
- Hacé backups durante horas de bajo tráfico
- Considerá usar opciones como --single-transaction para bases de datos grandes
¿Necesitás ayuda?
Si tenés problemas haciendo backups o necesitás configurar backups automáticos, abrí un ticket desde el panel de billing.baires.host o contactanos por soporte.
También podés escribirnos por nuestras redes:
- Instagram: @baires_host
- Discord (soporte activo): https://discord.gg/dzjauatAFN
- Linktree: https://linktr.ee/baires.host