Los planes de retención son una obligación operativa: establecen de forma vinculante qué copias de seguridad se conservan durante cuánto tiempo, dónde y en qué formato. La palabra clave «Retention‑Pläne» aparece al inicio porque la planificación correcta de estas reglas de conservación tiene un impacto directo en el presupuesto de almacenamiento, la capacidad de RESTauración y el cumplimiento normativo. Este artículo está dirigido a administradores, System Engineers, operadores y proveedores de servicios técnicos y explica la rotación GFS, intervalos incrementales, especificidades de MariaDB, así como estrategias prácticas de verificación y contingencia.
Por qué un plan de retención es más que «eliminar copias de seguridad antiguas»
Un plan de retención es una norma operativa vinculante que se basa en RTO (Recovery Time Objective) y RPO (Recovery Point Objective). RTO describe el tiempo máximo tolerable de inactividad; RPO la ventana máxima aceptable de pérdida de datos. Ambos indicadores guían la elección entre backups completos e incrementales, las duraciones de conservación, los intervalos de verificación y las rutinas de reporte.
Para la operación esto significa: planificación de almacenamiento vinculante, ejecuciones automatizadas de borrado con modo Dry‑Run, responsabilidades documentadas y rutas de contingencia probadas en caso de que los borrados o las pruebas de RESTauración fallen. Sin estos acuerdos operativos existen riesgos de errores de borrado no detectados, brechas de cumplimiento o tiempos de RESTauración inesperados.
Operacionalizar los planes de retención: roles, procesos, gobernanza
Un plan de retención solo es fiable cuando no solo está definida la técnica, sino también los procesos y las responsabilidades. Operacionalizar significa concretamente:
- Definir responsabilidades: ¿Quién autoriza excepciones de conservación? ¿Quién valida las pruebas de RESTauración?
- Gestión de cambios: cualquier modificación del plan de retención pasa por revisión, pruebas en staging y aprobación (ticket de cambio).
- Audit‑Trail: cada eliminación, traslado a cuarentena o RESTauración queda registrada y es demostrable.
Por qué es importante: la técnica por sí sola puede ejecutar reglas de borrado incorrectas sin control humano. La gobernanza evita que los plazos formales de conservación se vean técnicamente incumplidos.
Estrategia GFS (Grandfather‑Father‑Son) en la práctica
GFS es un esquema de rotación establecido con niveles anual, mensual y semanal. Objetivo: archivado a largo plazo con acceso rápido para RESTauraciones a corto plazo. Los niveles (Grandfather=Anual, Father=Mensual, Son=Semanal/Diario) se ordenan según la frecuencia de acceso y la duración de conservación.
Indicaciones prácticas:
- Use convenciones de nombres inequívocas (p. ej. /backup/{env}/{year}/{month}/{week}) y archivos de metadatos con UUID, marca temporal de creación, checksums y versión de la herramienta.
- Dimensione la capacidad con supuestos de crecimiento conservadores y pools de reserva.
- Documente la ruta de RESTauración por nivel GFS: cuántos pasos, duración prevista y dependencias (p. ej. Binlogs para la recuperación).
Intervalos incrementales: longitud de cadena, RPO e integridad
Las copias de seguridad incrementales ahorran espacio, pero aumentan la complejidad de RESTauración. La longitud de la cadena (número de pasos incrementales consecutivos) es un parámetro central: cuanto más larga la cadena, mayor la vulnerabilidad a pasos intermedios defectuosos.
Recomendación: limite la longitud de las cadenas (p. ej. máximo 7–14 pasos) y obligue a realizar un backup completo después de ese punto. Complementelo con comprobaciones de integridad inmediatas (checksums, verificación de xtrabackup_info) tras cada copia. Una cadena demasiado larga aumenta la probabilidad de que un único error deje inservible toda la cadena.
Planificar intervalos de forma concreta
Un ejemplo robusto para tasas de cambio medias:
- Copia incremental diaria, retención 14 días (recuperación rápida para datos recientes).
- Copia completa semanal o copia diferencial, retención 4 semanas.
- Copia completa mensual (Father), retención 12 meses.
- Copia completa anual (Grandfather), retención 7–10 años para datos relevantes por ley.
Especificidades de MariaDB: Binlogs, XtraBackup, LVM‑Snapshots y PITR
Para MariaDB los Binlogs (Binary Logs) son fundamentales: registran todos los comandos de modificación y permiten Point‑In‑Time‑Recovery (PITR) así como la replicación. Percona XtraBackup es una herramienta habitual para copias en caliente de bases de datos basadas en InnoDB. Los LVM‑Snapshots pueden servir como base para copias coherentes en sistemas de archivos grandes, porque capturan temporalmente un estado consistente del sistema de archivos.
Binlog‑Management: praktische Befehle, Konfiguration und Fallstricke
Comprobaciones SQL importantes para Binlogs:
# Liste der vorhandenen Binlog‑Dateien und Größen
mysql -e "SHOW BINARY LOGS;"
# Aktuelle Position und Dateiname
mysql -e "SHOW MASTER STATUS;"
# Prüfen, wie weit Replikate sind
mysql -e "SHOW SLAVE STATUSG"Recomendación de configuración en my.cnf (ejemplo):
# /etc/my.cnf.d/backup.cnf
[mysqld]
log_bin = /var/lib/mysql/mysql-bin
binlog_format = ROW
server_id = 42
# Automatisches Ablaufen von Binlogs nach 30 Tagen
binlog_expire_logs_seconds = 2592000Cuándo falla: una configuración agresiva de binlog_expire puede hacer imposible el PITR si necesita recuperar a un punto anterior al configurado. Asimismo, réplicas asíncronas con alto lag pueden provocar que los Binlogs necesarios ya hayan sido eliminados. Por tanto, la coordinación con la arquitectura de replicación y los escenarios de RESTauración es obligatoria.
XtraBackup: Ablauf, Prüfungen und typische Fehler
XtraBackup genera una copia incremental/completa incluyendo metadatos. Las comprobaciones decisivas son:
- Comprobar metadatos: xtrabackup_info y xtrabackup_checkpoints deben existir y ser lógicamente consistentes.
- Comprobar integridad: xtrabackup –check y una RESTauración de prueba aislada son estándar.
- Comprobar la capa de transporte: errores al copiar (p. ej. rsync, scp, object upload) conducen a copias inconsistentes.
Ejemplo: crear un backup completo y complementarlo incrementalmente (simplificado):
# Vollbackup
xtrabackup --backup --target-dir=/backup/full/2026-07-01 --user=backup --password=secret
# Inkrementelles Backup
xtrabackup --backup --target-dir=/backup/inc/2026-07-02 --incremental-basedir=/backup/full/2026-07-01 --user=backup --password=secretPreparación (prepare) y RESTore (pasos simplificados):
# Prepare (apply logs)
xtrabackup --prepare --target-dir=/backup/full/2026-07-01
# Kopieren/RESTore in Data‑Directory (in Wartungsfenster)
systemctl stop mariadb
rsync -a /backup/full/2026-07-01/ /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
systemctl start mariadbSi el prepare falla (p. ej. por partes incrementales faltantes), la RESTauración solo será posible hasta el último punto íntegro. Por ello, planifique copias completas regulares y además RESTauraciones de prueba en un entorno aislado.
Reaplicación de Binlogs con mysqlbinlog
Para PITR reaplique los Binlogs hasta el momento deseado. Nota importante: mysqlbinlog genera sentencias SQL que debe verificar en un entorno de pruebas.
# Binlog bis zu einem Zeitpunkt erzeugen
mysqlbinlog --stop-datetime="2026-07-02 14:30:00" /var/lib/mysql/mysql-bin.000123 | mysql -u root -p
# Alternativ: aus mehreren Dateien
mysqlbinlog --stop-datetime="2026-07-02 14:30:00" /var/lib/mysql/mysql-bin.00012* | mysql -u root -pEs peligroso aplicar automáticamente sin verificación: transacciones extensas o DDL pueden alterar estados de producción. Ejecute mysqlbinlog preferiblemente en una instancia de base de datos aislada de antemano y compruebe el tamaño y el tiempo de ejecución esperado.
Automatización: planificador, validación y Dry‑Run
Los trabajos automatizados deben ser idempotentes, trazables y seguros. Cron está muy extendido; systemd‑Timer ofrece mejor visibilidad y políticas de reinicio (RESTart‑Policy). Un ejemplo de un systemd‑Timer y Service para validación diaria:
# /etc/systemd/system/backup-validate.service
[Unit]
Description=Backup Validation Service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/validate-backup.sh
# /etc/systemd/system/backup-validate.timer
[Unit]
Description=Run backup validation daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.targetEl script de validación debe definir códigos de salida (Exit‑Codes) (0=OK, 1=Advertencia, 2=Error) y escribir logs estructurados en JSON, de modo que sistemas de monitorización (p. ej. Prometheus Pushgateway, ELK) puedan generar alertas.
Almacenamiento de objetos y políticas de ciclo de vida (S3‑kompatibel)
Para el almacenamiento a largo plazo, el almacenamiento de objetos ofrece ventajas de coste. Utilice reglas de ciclo de vida para mover objetos a niveles (tiers) similares a Glacier. Un ejemplo de Lifecycle (JSON) para reglas de buckets compatibles con S3:
{
"Rules": [
{
"ID": "move-to-cold",
"Filter": {"Prefix": "backup/old/"},
"Status": "Enabled",
"Transitions": [{"Days": 30, "StorageClass": "GLACIER"}],
"Expiration": {"Days": 3650}
}
]
}Importante: active Object Lock (WORM) solo para datos que deban ser inmutables por requisitos legales. Las reglas de ciclo de vida no deben eliminar automáticamente copias legalmente relevantes sin una autorización humana.
Evaluación de riesgos: Ransomware, corrupción de datos y errores de operadores
Los planes de retención deben anticipar escenarios de riesgo. El Ransomware suele intentar cifrar o eliminar todas las copias. Medidas:
- Almacenamiento inmutable o Object Lock para copias de seguridad críticas.
- Cuentas de administrador separadas para los sistemas de backup, MFA, y redes RESTringidas para accesos de backup.
- Buckets de cuarentena y eliminación diferida (p. ej. 7–14 días) para poder recuperar eliminaciones accidentales o maliciosas.
En casos de corrupción de datos, ayudan las sumas de verificación (checksums), la alerta inmediata y la posibilidad de acceder a niveles GFS más antiguos.
Estrategia de rollback y Recovery‑Runbook
Un runbook robusto enumera pasos concretos y probados para un RESTore y un posible Rollback. Elementos importantes:
- Evaluación inicial de la situación: sistemas afectados, RTO/RPO, clases de datos afectadas.
- Selección de la fuente de recuperación: copia de seguridad completa, réplica u copia Offsite.
- RESTore de prueba en aislamiento y verificación de la integridad (checksums, pruebas de Smoke de la aplicación).
- RESTore en producción en ventana de mantenimiento con plan de comunicación (notificación a las partes interesadas, información para usuarios).
- Auditoría post‑RESTore: comparación de conjuntos de datos, comprobaciones de consistencia y documentación de lecciones aprendidas.
Defina niveles de decisión claros: ¿Quién decide en caso de RESTores fallidos? ¿Cuándo se cambia a fuentes alternativas (p. ej. réplica)?
Pruebas y auditoría: ¿Con qué frecuencia y con qué criterios de aceptación?
Frecuencia de pruebas: pruebas rápidas de RESTauración (semanales), ejecuciones completas de RESTauración (mensuales) y simulaciones de desastre (anuales). Los criterios de aceptación deben ser medibles, p. ej. „RESTauración completa de un esquema de BD en < 4 horas“ o „PITR con RPO máximo de 15 minutos“. Documente desviaciones y causas.
Errores comunes y cómo evitarlos
- Metadatos faltantes: almacene xtrabackup_info y checksums junto con los datos.
- Reglas automáticas de borrado sin Dry‑Run: introduzca siempre Dry‑Run y una fase de cuarentena.
- Lifecycle‑Policies no probadas: pruebe las migraciones en un entorno Staging‑Bucket.
- Eliminación de binlogs sin cotejo con las réplicas: compruebe el lag de replicación y los SLAs antes de descartar los binlogs.
- Sin reserva de capacidad: planifique para picos, no solo para valores medios.
Lista de verificación para la implementación de un Retention‑Plan (práctica)
- Recopilar: ¿Qué clases de datos son relevantes y qué plazos legales aplican?
- Clasificar: definir y documentar RTO/RPO por clase de datos.
- Diseño: esquema GFS, intervalos incrementales, Storage‑Tiers, Object Lock y cuarentena.
- Automatización: implementar scripts idempotentes, Dry‑Run, systemd‑Timer, logs estructurados y alarmas.
- Validación: introducir pruebas de RESTauración periódicas, comprobaciones de integridad e informes.
- Documentación: la política de retención como documento vinculante, incl. roles y audit‑trail.
- Revisión: comprobación periódica (p. ej. semestral) y actualización ante cambios en los requisitos legales.
Conclusión: garantizar robustez operativa
Los planes de retención conectan cumplimiento, rentabilidad y seguridad operativa. En la práctica esto significa: GFS para necesidades a largo plazo, cadenas incrementales limitadas para eficiencia, comprobaciones de integridad automatizadas y pruebas de RESTauración documentadas para fiabilidad. Para MariaDB son además temas clave la gestión de binlogs, la integridad de la cadena XtraBackup y las pruebas periódicas de PITR. Pruebe los cambios en Staging, mantenga las operaciones de borrado reversibles hasta la verificación final y opere monitorización con alarmas claras.
Si sigue estos pasos, su Retention‑Plan no será un documento puntual, sino un proceso operativo vivo: automatizado, verificable y conforme legalmente. Así protege sus datos y asegura al mismo tiempo un almacenamiento económicamente eficiente.
Recursos adicionales
Enlaces internos a artículos de mayor profundidad (p. ej., pruebas de backup con Ansible, resiliencia frente a ransomware, MariaDB PITR) deberían incluirse aquí para que Runbooks, Playbooks y listas de verificación de auditoría sean accesibles directamente.
Retention‑Management: Metadaten, Legal‑Hold und Monitoring
Una parte a menudo subestimada de la retención es el catálogo de metadatos: documenta qué Backup‑Batches pertenecen a qué clases de datos, plazos legales, resultados de auditoría y claves de cifrado. Sin un catálogo fiable la automatización del borrado se vuelve peligrosa —porque el sistema no puede distinguir con seguridad qué copia aún está bajo Legal‑Hold o es relevante para una auditoría en curso.
Nota de arquitectura: separe el Metadaten‑Repository de los Objekt‑Stores. Utilice una base de datos pequeña y altamente disponible (p. ej., un único esquema MariaDB con control de esquema o un almacén orientado a documentos) con entradas versionadas. A cada Backup‑Batch se le asigna una UUID, estado (available, quarantined, deleting, deleted), owner y legal_hold_flag. Esta información controla la Löschpipeline.
La eliminación en dos fases reduce el riesgo: 1) marcar como tombstone + cuarentena (p. ej. 7–14 días), 2) tras una reconciliación y auditoría exitosas, eliminar definitivamente. Esto permite dry‑run, intervenciones manuales y restauraciones automatizadas en caso de errores.
El monitoreo operativo debería proporcionar métricas medibles:
- Cumplimiento porcentual de retención (objetivo vs. real según plazos)
- Número de tombstones y antigüedad de los tombstones
- Errores de eliminación por día y tiempo hasta la resolución manual
- Discrepancia entre metadatos y almacenamiento real (tasa de reconciliación)
Consulta de ejemplo (tabla de metadatos backups):
-- Backups que, según la política, ya deberían estar eliminados
SELECT id, uuid, created_at, retention_until, status
FROM backups
WHERE retention_until < NOW() AND status != 'deleted';
-- Tombstones con más de 14 días
SELECT COUNT(*) FROM backups WHERE status = 'quarantined' AND updated_at < NOW() - INTERVAL 14 DAY;Otros puntos: gestionar la administración de claves (KMS) para backups cifrados de forma separada y con RBAC; introducir números de versión para las herramientas de backup y realizar comprobaciones de compatibilidad durante migraciones. Por último: integre los trabajos de reconciliación en su incident‑runbook — notificación automática y procedimiento de pager escalonado si la tasa de reconciliación cae por debajo de un umbral mínimo.
Para este tema también son importantes los backups de Mariadb y la retención de binlogs. El artículo sitúa estos aspectos de forma comprensible y muestra en qué hay que centrarse en el día a día.