Imagina que tu base de datos es como un archivo gigante de biblioteca con miles de libros. Un backup completo es como mandar cada noche a un mensajero a copiar todos los libros. ¿Y si casi nada cambió? Eso no solo es lento, sino que también sobrecarga el transporte y ocupa un montón de espacio. Aquí es donde entran los enfoques incrementales y diferenciales. Trabajamos de forma más inteligente, no más dura, copiando solo lo que realmente cambió.
Hoy vamos a ver estos tipos de backups:
- Backup completo: copia completa de la base de datos.
- Backup incremental: copia solo los cambios desde el último backup.
- Backup diferencial: copia los cambios desde el último backup completo.
Cada uno de estos enfoques tiene sus pros, contras y casos de uso. Vamos a verlo en detalle.
Backup completo
El backup completo (o Full Backup) es una copia de seguridad de toda la base de datos en un momento dado. Incluye tanto la estructura de la base (tablas, índices, esquemas) como todos los datos existentes. O sea, es como una "foto instantánea" de toda la base.
Ejemplo de comando para un backup completo:
pg_dump -U username -d database_name -F c -f full_backup.dump
Aquí:
-U username— nombre de usuario de PostgreSQL.-d database_name— nombre de la base de datos.-F c— formato del backup (custom, útil para restaurar conpg_restore).-f full_backup.dump— nombre del archivo donde se guarda la copia de seguridad.
Más detalles sobre el comando pg_dump y sus parámetros los veremos en las próximas clases :P
Ventajas del backup completo:
- Facilidad de restauración. Si algo sale mal, el backup completo te permite restaurar toda la base rápido.
- Foto completa de los datos. Se puede usar para migrar toda la base a otro servidor o entorno.
Desventajas del backup completo:
- Volumen de datos: el backup completo puede ser enorme, sobre todo si tienes muchos datos.
- Tiempo de ejecución: cuanto más datos, más tarda en hacerse la copia.
- Espacio de almacenamiento: cada backup completo ocupa espacio propio, lo que puede comerse los recursos del almacenamiento.
Cuándo usar un backup completo:
- Al crear la primera copia de seguridad.
- Antes de hacer cambios grandes en la base de datos.
- Para archivo a largo plazo (haces un backup completo y lo mandas a un "almacenamiento frío").
Backups incrementales
El backup incremental (Incremental Backup) guarda solo los archivos que cambiaron desde el último backup — ya sea completo o incremental. Esto ahorra mucho espacio en disco y acelera el proceso de backup.
En PostgreSQL, los backups incrementales se pueden hacer con la herramienta pgBackRest — una utilidad potente para crear y gestionar backups de PostgreSQL con soporte para estrategias completas, incrementales y diferenciales.
¿Cómo funciona pgBackRest?
pgBackRestusa metadatos y checksums de archivos para detectar cambios.- Solo los archivos que realmente cambiaron se incluyen en el backup incremental.
- Soporta archivado automático de archivos WAL, lo que permite restaurar hasta el punto exacto en el tiempo.
Ejemplo de comando para un backup incremental:
pgbackrest --stanza=main --type=incr backup
Dónde:
--stanza=main— nombre de la configuración (conjunto de parámetros para una BD concreta).--type=incr— indica que se hace un backup incremental.
Antes del primer backup incremental, es obligatorio hacer un completo (--type=full).
Ventajas de los backups incrementales con pgBackRest:
- Ahorro de espacio: solo se copian los archivos cambiados.
- Ejecución rápida: sobre todo si hay pocos cambios.
- Gestión automática de WAL: pgBackRest archiva y aplica los archivos WAL solo.
- Flexibilidad de restauración: puedes elegir el punto de restauración (PITR).
Desventajas y detalles:
- Necesidad de configuración inicial: hay que configurar
stanza, el directorio del repositorio, permisos de acceso. - Complejidad para novatos: requiere entender WAL y la arquitectura de PostgreSQL.
- Dependencia del repositorio: todos los backups se guardan centralizados — hay que gestionar bien el almacenamiento.
Cuándo usar backups incrementales:
- Si la base de datos se actualiza mucho.
- Cuando el backup completo es demasiado pesado o tarda mucho.
- Si quieres una estrategia de restauración fiable y automática con el mínimo esfuerzo.
Backups diferenciales
El backup diferencial (Differential Backup) guarda todos los cambios que ocurrieron desde el último backup completo. La diferencia con el incremental es que cada backup diferencial contiene todos los cambios desde el último completo. Así, para restaurar la base solo necesitas el último backup completo y el último diferencial.
Ejemplo del proceso:
- Primer día: se crea un backup completo (A).
- Segundo día (B): se crea un backup diferencial — contiene los cambios desde A.
- Tercer día (C): se crea un backup diferencial — también contiene los cambios desde A.
Ventajas:
- Facilidad de restauración: Para restaurar la base solo necesitas el backup completo y el último diferencial.
- Más rápido que el completo: El backup diferencial se hace más rápido que el completo, porque solo copia los cambios.
Desventajas:
- Tamaño del archivo de backup: Con cada nuevo backup diferencial, su tamaño crece, ya que incluye todos los cambios desde el backup completo.
- Espacio en disco: A largo plazo puede requerir más espacio que los backups incrementales.
El backup diferencial es útil cuando quieres simplificar la restauración de la base: guarda todos los cambios desde el último backup completo. Es especialmente cómodo si los datos cambian a menudo, pero hacer copias completas cada vez es demasiado costoso en tiempo o recursos. En estos casos, el enfoque diferencial es un buen compromiso entre velocidad y fiabilidad.
Comparativa de tipos de backups
| Tipo de backup | Completo | Incremental | Diferencial |
|---|---|---|---|
| Volumen de datos | Máximo | Mínimo | Medio |
| Tiempo de ejecución | Largo | Rápido | Moderado |
| Restauración | Fácil | Complicada (depende de todos los backups) | Media (necesitas el último completo y diferencial) |
| Cuándo usar | Copia inicial, migraciones | Backups frecuentes en tiempo real | Backup regular programado |
La elección del tipo de backup depende de tus requisitos de seguridad de datos, la frecuencia de cambios y los recursos disponibles. Para bases pequeñas, un backup completo regular va bien. Si la base crece, los backups incrementales ayudan a ahorrar espacio. Y si te importa restaurar rápido, los diferenciales pueden ser la mejor opción. ¡Lo importante es no olvidarse de la regularidad y de automatizar el proceso!
GO TO FULL VERSION