Semestre 01, 2026
No es una pregunta de si ocurrirá.
Es una pregunta de cuándo.
| Causa | Frecuencia |
|---|---|
| Error humano (DELETE sin WHERE, DROP TABLE) | La más común |
| Fallo de hardware (disco duro, servidor) | Frecuente |
| Corrupción de datos | Ocasional |
| Ransomware / ataque cibernético | En aumento |
| Bug de software | Ocasional |
| Desastre físico (inundación, incendio) | Raro pero total |
El error humano es responsable de la mayoría de las pérdidas de datos en producción.
Una empresa de e-commerce pierde su base de datos un viernes a las 11 PM.
El costo de implementar backups es una fracción mínima del costo de no tenerlos.
Muchos sistemas tienen backup en teoría.
Un backup que nunca se ha restaurado no es un backup.
La cantidad máxima de datos que el sistema puede perder.
Si el backup es diario a las 2 AM y el fallo ocurre a las 11 PM, se pierden ~21 horas de datos.
El RPO define la frecuencia mínima del backup.
| Negocio | RPO aceptable |
|---|---|
| Blog personal | 24 horas |
| E-commerce pequeño | 1–4 horas |
| Sistema bancario | Segundos |
| Sistema médico crítico | Cero (replicación en tiempo real) |
El tiempo máximo que el sistema puede estar inactivo.
Un backup de 100 GB puede tardar 2 horas en restaurarse.
Si el RTO del negocio es 30 minutos, ese proceso no es suficientemente rápido.
El RTO define qué tipo de estrategia de recovery se necesita.
| Negocio | RTO aceptable |
|---|---|
| Blog personal | Horas / días |
| E-commerce mediano | 1–2 horas |
| Sistema bancario | Minutos |
| Tipo | Contenido | Tamaño | Velocidad |
|---|---|---|---|
| Full | Todo, siempre | Grande | Lenta |
| Incremental | Solo lo que cambió desde el último backup (full o incremental) | Pequeño | Rápida |
| Diferencial | Todo lo que cambió desde el último backup full | Mediano | Media |
Full solo
Restaurar = 1 backup
Riesgo = 1 archivo
Full + Incremental
Restaurar = full +
cada incremental
Riesgo = cadena
se rompe si falta uno
Full + Diferencial
Restaurar = full +
último diferencial
Balance = intermedio
La estrategia estándar de la industria para backups confiables.
3 copias de los datos.
2 tipos de medios de almacenamiento diferentes.
1 copia offsite (fuera de las instalaciones físicas).
Copia 1: Base de datos en producción (servidor principal)
Copia 2: Backup en servidor de backup local (NAS, otro servidor)
Copia 3: Backup en almacenamiento en la nube (S3, Google Cloud Storage)
Medio 1: Disco del servidor
Medio 2: Almacenamiento en la nube
Offsite: La copia en la nube está en una ubicación geográfica diferente
Extensión recomendada en entornos críticos.
La herramienta estándar para hacer backup de una base de datos PostgreSQL.
Genera un script SQL o un archivo binario que puede restaurarse en cualquier instalación compatible.
pg_dump -U usuario -h localhost -d nombre_db > backup.sql
El archivo resultante contiene todos los CREATE TABLE, INSERT, índices, vistas y funciones.
# Formato custom (comprimido, permite restauración selectiva)
pg_dump -U usuario -h localhost -d nombre_db -Fc > backup.dump
# Formato directory (paralelizable)
pg_dump -U usuario -h localhost -d nombre_db -Fd -f backup_dir/
El formato -Fc es el recomendado para producción:
pg_restore.# pg_dumpall incluye roles, tablespaces y todas las bases de datos
pg_dumpall -U postgres -h localhost > backup_completo.sql
Usar cuando se necesita migrar o recuperar un servidor completo.
# Solo el esquema (sin datos)
pg_dump -U usuario -d nombre_db --schema-only > esquema.sql
# Solo los datos (sin CREATE TABLE)
pg_dump -U usuario -d nombre_db --data-only > datos.sql
# Solo una tabla específica
pg_dump -U usuario -d nombre_db -t nombre_tabla > tabla.sql
# Excluir una tabla
pg_dump -U usuario -d nombre_db --exclude-table=logs > backup_sin_logs.sql
# Crear la base de datos primero (si no existe)
createdb -U postgres nueva_db
# Restaurar
psql -U usuario -d nueva_db < backup.sql
# Restaurar completo
pg_restore -U usuario -d nombre_db -Fc backup.dump
# Restaurar solo una tabla específica
pg_restore -U usuario -d nombre_db -Fc -t productos backup.dump
# Restaurar con verbose — ver el progreso
pg_restore -U usuario -d nombre_db -Fc -v backup.dump
# Solo el esquema
pg_restore -U usuario -d nombre_db -Fc --schema-only backup.dump
# -j 4 usa 4 workers en paralelo — útil para backups grandes
pg_restore -U usuario -d nombre_db -Fd -j 4 backup_dir/
El formato -Fd (directory) es necesario para usar restauración paralela.
La herramienta estándar para backup en MySQL.
Genera un script SQL con toda la estructura y los datos.
# Una base de datos
mysqldump -u usuario -p nombre_db > backup.sql
# Todas las bases de datos
mysqldump -u root -p --all-databases > backup_completo.sql
# Incluir rutinas y triggers
mysqldump -u usuario -p --routines --triggers nombre_db > backup.sql
# Solo esquema / solo datos
mysqldump -u usuario -p --no-data nombre_db > esquema.sql
mysqldump -u usuario -p --no-create-info nombre_db > datos.sql
# Transacción consistente (para InnoDB — snapshot sin bloquear)
mysqldump -u usuario -p --single-transaction nombre_db > backup.sql
# Con compresión
mysqldump -u usuario -p nombre_db | gzip > backup.sql.gz
--single-transaction es esencial en producción para no bloquear la base de datos durante el backup.
# Restaurar en una base de datos existente
mysql -u usuario -p nombre_db < backup.sql
# Restaurar desde archivo comprimido
gunzip -c backup.sql.gz | mysql -u usuario -p nombre_db
# Crear la base de datos y restaurar
mysql -u root -p -e "CREATE DATABASE nueva_db;"
mysql -u root -p nueva_db < backup.sql
Esta es la parte que casi todos omiten.
El único test válido es que se pueda restaurar y que los datos funcionen correctamente.
| Criticidad del sistema | Frecuencia de prueba |
|---|---|
| Producción crítica | Semanal o con cada backup |
| Producción estándar | Mensual |
| Desarrollo / staging | Antes de cada migración importante |
Si no se puede probar con frecuencia, documentar el proceso detallado para que sea reproducible bajo presión.