IT-Admin.tech

Playbook de recuperación ante desastres para clústeres de bases de datos: puesta en marcha paso a paso

Architekturdiagramm eines Datenbank-Cluster-Recovery‑Flows mit Primary, Replikas und Backup-Storage
Technisches Diagramm: Wiederherstellungsfluss eines Datenbank‑Clusters mit Basebackup, WAL‑Replay und Replikationsaufbau.

Un playbook de recuperación ante desastres para clústeres de bases de datos claramente estructurado es crucial cuando falla un sistema de producción. Este playbook ofrece una secuencia de pasos reproducible y verificable para administradores, System Engineers y operadores. El objetivo es cumplir con RTO (Recovery Time Objective, es decir, el tiempo máximo de inactividad aceptable) y RPO (Recovery Point Objective, es decir, la pérdida de datos máxima aceptable) y verificar de forma sistemática la operación, las interfaces y la integridad.

Cuándo es necesario un playbook: causas y efectos típicos

Un playbook se aplica cuando los mecanismos automáticos fallan o concurren múltiples fallos. Las causas típicas son la caída del almacenamiento o de la red, corrupción de datos, actualizaciones fallidas, error humano o malware. Las consecuencias van desde tiempos de inactividad prolongados y réplicas inconsistentes hasta la pérdida irreversible de datos. Split‑Brain, por ejemplo, describe la situación en la que varios nodos del clúster creen ser primarios; eso destruye la consistencia si no se gestiona de forma controlada.

Requisitos previos y primeras comprobaciones

Antes de iniciar las acciones de RESTauración, realice una breve verificación inicial. Si faltan permisos, claves o copias de seguridad, cualquier acción adicional puede causar daños.

  • Comunicación: Lista de escalación y de stakeholders preparada, canales de comunicación abiertos.
  • Accesos: SSH-Keys, accesos a Vault, bastion hosts; sin estos la recuperación a menudo está bloqueada.
  • Metadatos de backup: sellos temporales, sumas de verificación, marcadores LSN/WAL (LSN = Log Sequence Number; importante para PITR).
  • Mecanismo de quórum: Conocimiento de si, por ejemplo, etcd, ZooKeeper o Pacemaker gestionan el quórum; un reinicio sin quórum puede inutilizar el clúster.
  • Estado del almacenamiento: ¿Están los discos en línea? Verificar indicadores de hardware (SMART, logs del controlador RAID).

Playbook de recuperación ante desastres para clústeres de bases de datos: roles, pruebas y flujo

Un playbook no es solo una lista de verificación técnica, también define roles. Responsabilidades claras evitan bucles de coordinación que consumen tiempo.

  • Incident Lead: Responsabilidad general sobre decisiones, comunicación y escalada.
  • DB-Operator: Ejecuta RESTores, WAL‑replay y la reconstrucción de la replicación.
  • Storage-/Netzwerk-Engineer: Verifica hardware, LAN/VLAN, MTU, I/O de almacenamiento y permisos de acceso.
  • Application Owner: Valida interfaces, pruebas end-to-end y verificaciones de negocio.
  • Scribe: Registra acciones, marcas temporales y resultados para el postmortem.

Playbook: puesta en servicio paso a paso

El orden es importante: un orden incorrecto provoca Split‑Brain, pérdida de datos o tiempos de inactividad más largos. Ajuste los detalles a su tecnología de base de datos (p. ej. PostgreSQL, Galera, MongoDB, Cassandra).

1. Establecer la situación y definir el alcance

Determine los nodos afectados, el alcance de la pérdida de datos y las copias de seguridad disponibles. Anote las acciones realizadas hasta el momento y registre las marcas temporales. Una situación precisa ayuda a evitar acciones innecesarias.

2. Aislar y conservar la infraestructura

Aísle los sistemas afectados del RESTo de la red para evitar efectos secundarios. En caso de sospecha de ransomware, asegure las copias de seguridad en modo de solo lectura (p. ej. almacenamiento de objetos con Write‑Once o cintas/almacenamiento en frío separado). Evite que un nodo iniciado por error realice cambios en réplicas intactas.

3. Verificación de backups: integridad antes del RESTore

Verifique sumas de comprobación, integridad y metadatos. Una copia de seguridad dañada puede prolongar la interrupción, ya que se invierte tiempo en medidas correctivas en lugar de en pasos de RESTauración limpios.

Shell
# Beispiel: Backup-Liste und Prüfsummen
ls -lh /mnt/backups/postgres/
sha256sum /mnt/backups/postgres/base_2026-07-25.tar.gz
jq '.' /mnt/backups/postgres/base_2026-07-25.json

Si los metadatos proporcionan marcadores LSN/WAL, compárelos con las posiciones WAL conocidas más recientes. Si faltan los archivos WAL, contemple pérdida de datos o la elección de una copia de seguridad anterior.

4. Configuraciones antes de los datos: por qué primero los ajustes

Los archivos de configuración controlan parámetros de arranque, rutas, usuarios de replicación y puertos de red. Una RESTauración sin la configuración adecuada suele provocar un arranque defectuoso o ajustes de replicación inconsistentes.

Shell
tar -xzf /mnt/backups/postgres/base_2026-07-25.tar.gz 
  -C /var/lib/postgresql/ --wildcards '*/postgresql.conf' '*/pg_hba.conf'

Compruebe las versiones del software de base de datos; un desajuste de versión mayor (Major‑Version‑Mismatch) suele impedir la RESTauración directa. Si procede, coloque los binarios de la versión adecuada en un directorio de recuperación.

5. Recuperación de datos y WAL/PITR

PITR (Point‑In‑Time Recovery) combina un basebackup con archivos WAL (Write‑Ahead‑Logs). El basebackup RESTaura el estado a un punto en el tiempo; los WALs avanzan los datos hacia el momento objetivo.

Shell
# Basebackup zurückspielen (Achtung: überschreibt Datenverzeichnis)
rm -rf /var/lib/postgresql/data/*
tar -xzf /mnt/backups/postgres/base_2026-07-25.tar.gz -C /var/lib/postgresql/data/

# RESTore_command konfigurieren (Beispiel)
cat > /var/lib/postgresql/data/recovery.conf <<'EOF'
RESTore_command = 'cp /mnt/backups/postgres/wal/%f %p'
recovery_target_time = '2026-07-25 10:15:00'
EOF

Los fallos en el WAL‑replay suelen producirse por segmentos WAL faltantes o corruptos, o por incompatibilidades en el formato WAL (p. ej., distintos Major‑Releases). Si faltan WALs, una PITR adecuada no es posible; entonces deberá decidir abiertamente entre una mayor pérdida de datos o soluciones alternativas, como la reconstrucción incremental de la replicación.

6. Reconstruir quórum y replicación

Normalmente inicie primero el nodo con el conjunto de datos válido (la LSN más alta). Después añada réplicas. PRESTe atención a los slots de replicación, al usuario de replicación y al acceso de red. En sistemas distribuidos, el quórum (principio de mayoría para decidir qué nodos son válidos) es central; una RESTauración incorrecta del quórum puede fomentar inconsistencias.

SQL
-- Prüfen, ob Instanz in Recovery ist
SELECT pg_is_in_recovery();
-- Aktuelle WAL-Position
SELECT pg_current_wal_lsn();
-- Replikationsstatus
SELECT pid, application_name, state, sync_state FROM pg_stat_replication;

7. Interfaces y pruebas de la aplicación

Realice pruebas de conexión y smoke tests. Pruebe las rutas de lectura y escritura en tablas de prueba aisladas, verifique controles de negocio (p. ej. recuentos de filas, sumas de comprobación) y lance un canary release antes de volver a exponer el endpoint de la base de datos.

SQL
-- Health-Checks
SELECT count(*) FROM important_business_table;
SELECT md5(string_agg(id::text || ':' || coalesce(data,''), ',')) FROM kontrolle_tbl;
Shell
# Beispiel HTTP-Healthcheck für Anwendung (kein Produktionsdaten eingesetzt)
curl -sSf https://app.example.local/health || echo 'Healthcheck failed'

Secuencia de comprobaciones técnicas: controles más exhaustivos

Después de la RESTauración inicial debería ejecutar una secuencia secuencial de comprobaciones para detectar pronto estados inconsistentes. El orden es intencionado: consistencia, integridad, rendimiento, interfaces.

  1. Integridad del sistema de archivos: Compruebe permisos, propietarios y tamaños de archivo de las bases de datos.
  2. Estado del WAL‑Replay: Revisar los logs en busca de errores, comparación de LSN con los metadatos de la copia de seguridad.
  3. Integridad de índices: Planificar reconstrucciones de índices si los índices están inconsistentes.
  4. Retraso de replicación (Replication Lag): Supervisar latencias y colas de replicación.
  5. Pruebas de la aplicación: Pools de conexión, sentencias preparadas, compatibilidad de migraciones.

Comandos prácticos de verificación:

Shell
# Dateisystem- und Rechte-Check
ls -la /var/lib/postgresql/data
# Systemd-Status
systemctl status postgresql
# Storage-IO-Check (kurz)
iostat -x 1 3
# LUKS-Header-Check (falls verschlüsselt)
cryptsetup luksDump /dev/sdb1

Cloud vs On‑Prem: Besonderheiten

Los entornos cloud presentan trampas específicas: los snapshots suelen ser coherentes a nivel de VM, pero no necesariamente coherentes a nivel de aplicación (quiesce). El almacenamiento de objetos tiene latencias y costes de egreso; la RESTauración de grandes volúmenes de datos requiere planificación de ancho de banda. On‑Prem suele ofrecer acceso directo al storage y I/O más rápido, aunque con mayor responsabilidad sobre el hardware.

  • Cloud-Snapshots: Compruebe si se utilizó Guest‑Quiesce o un snapshot Application‑Aware.
  • Almacenamiento de objetos (Objekt-Storage): Compruebe las políticas de acceso, el versionado y el lifecycle (MFA Delete puede bloquear la RESTauración).
  • Arquitectura de red: VPN/Peering, timeouts de BGP y coincidencia de MTU son causas frecuentes que detienen la RESTauración.

Plan de pruebas, métricas y automatización

Planifique pruebas de RESTauración periódicas. Métricas que debería medir:

  • Time-to-First-Byte (TTFB) de la RESTauración — Tiempo hasta que los primeros datos válidos vuelven a estar disponibles.
  • Time-to-Service — Tiempo hasta que las interfaces para la aplicación vuelven a estar disponibles (cadena RTO).
  • Deriva de datos tras la RESTauración — Recuentos de filas, sumas de comprobación, comprobaciones de negocio.

Las pruebas automatizadas deben ejecutarse en un entorno aislado y seguir la misma secuencia de verificación indicada arriba. Ejemplo: un job Cron/CI que RESTaura el basebackup, aplica los WAL, luego ejecuta los scripts de verificación y almacena los resultados en un reporte.

Shell
# Minimaler CI-Job-Flow (schematisch)
# 1) Provision Test-VM
# 2) Mount Backup-Archive
# 3) RESTore Basebackup
# 4) Start DB, apply WAL
# 5) Run verification scripts
# 6) Report result (OK/FAIL)

Errores frecuentes y pasos de resolución de problemas específicos

Un breve listado de referencia para resolución de problemas con síntomas típicos:

  • La BD no arranca: Revise los logs (/var/log/postgresql/) y los permisos del directorio de datos.
  • El WAL‑Replay se detiene con error: Archivo de segmento WAL faltante o error de checksum — compruebe la carpeta de WAL del backup y su integridad.
  • La replicación no se conecta: Revise el firewall, el usuario de replicación, los certificados SSL y pg_hba.conf / equivalente.
  • Indicios de split‑brain: Primarios diferentes, LSN divergentes — aisle los nodos, utilice una herramienta de quórum.
Shell
# Repl-Verbindungscheck (Postgres, Beispiel)
psql -c "SELECT client_addr, state, sync_state FROM pg_stat_replication;"
# Prüfen, ob WAL-Archivelogs lesbar sind
file /mnt/backups/postgres/wal/0000000100000000000000A9
sha256sum /mnt/backups/postgres/wal/0000000100000000000000A9

Estrategia de rollback y de retroceso

Defina un criterio claro para abortar (p. ej., WAL faltantes, inconsistencias tras el replay, quórum no alcanzable). Elementos de rollback:

  • Instantáneas de configuración antes de los cambios.
  • Scripts de rollback para configuraciones y binarios.
  • Entorno de prueba aislado para el intento final de RESTauración.
  • Protocolo de coordinación con las partes interesadas y plan de comunicación.

Postmortem y mejora continua

Documente la causa, el momento, las copias de seguridad utilizadas, las decisiones y las lecciones aprendidas. Mejoras típicas tras un incidente son: validación automatizada de sumas de comprobación, pruebas de RESTauración más frecuentes, alertas por retrasos en WAL y controles adicionales de monitorización para la integridad del almacenamiento. Use los hallazgos para ajustar los compromisos de SLA y actualizar los runbooks internos.

Lista de verificación para la reactivación (compacta)

  1. Gate-Checks: ¿accesos, contactos, metadatos disponibles?
  2. Copias de seguridad validadas: ¿sumas de comprobación, LSN, WAL presentes?
  3. ¿Configuraciones RESTauradas y versiones verificadas?
  4. ¿Basebackup + WAL/PITR realizados conforme al tiempo objetivo?
  5. ¿Quorum/replicación RESTaurados en el orden correcto?
  6. ¿Aplicaciones verificadas: estado (health), comprobaciones de negocio, Canary‑Release?
  7. ¿Postmortem planificado y medidas definidas?

Conclusión

Un robusto Playbook de recuperación ante desastres para clústeres de bases de datos es una combinación de técnica, proceso y comunicación. Lo esencial son pasos de RESTauración reproducibles, validaciones automatizadas, una gestión ordenada de configuraciones y reglas claras de retroceso. Invierta en pruebas de RESTauración, monitorización de las canalizaciones de WAL y en scripts simples e idempotentes — así reducirá el RTO y disminuirá el riesgo de pérdida de datos.

Este playbook se ha mantenido deliberadamente genérico. Adapte los pasos a su tecnología de base de datos e infraestructura concretas e integre los enfoques de automatización descritos en sus operaciones.

Playbook de recuperación ante desastres para clústeres de bases de datos: aspectos de arquitectura y operaciones

Además de la secuencia concreta de RESTauración, vale la pena ampliar el playbook desde el punto de vista arquitectónico. Es decisivo establecer separaciones claras entre Control‑Plane (datos de configuración y orquestación), Data‑Plane (archivos de datos, WALs) y artefactos de recuperación (basebackups, checksums, metadatos). Una separación limpia reduce el radio de impacto y simplifica la validación automatizada.

Riesgos importantes que a menudo se subestiman:

  • Deriva de configuración: Diferentes configuraciones entre producción y el entorno de recuperación provocan comportamientos inesperados. Versione instantáneas de configuración en Git y pruebe los rollbacks regularmente.
  • Desajuste horario: Relojes desincronizados impiden objetivos PITR correctos. NTP/chrony deben estar activos en las VMs de recuperación; de lo contrario fallará la RESTauración a la hora objetivo.
  • Corrupción silenciosa: La deduplicación del almacenamiento o errores de compresión pueden corromper las copias de seguridad sin generar errores inmediatamente visibles. Implemente comprobaciones de suma de verificación y verificaciones periódicas de RESTauración completas.
  • Key‑Management: Copias de seguridad cifradas sin acceso a las claves o al HSM bloquean la recuperación. Disponga de un proceso de custodia de claves asegurado y probado.
  • Indicaciones prácticas de arquitectura para un funcionamiento robusto:

    • Immutable Backups: Almacene las basebackups en modo solo lectura (WORM/immutable Object Storage) y guarde los metadatos (LSN, versión de la BD, checksums) como un archivo separado y versionado.
    • Out‑of‑Band‑Management: Asegúrese de que BMC/Redfish o la consola serie sean accesibles; sin acceso fuera de banda, la recuperación de hardware puede prolongarse de forma desproporcionada.
    • Idempotente Recovery‑Skripte: Los pasos de recuperación deben poder ejecutarse de forma segura varias veces. La idempotencia reduce los riesgos al repetirlos bajo presión de tiempo.
    • Observability: Exporte durante la RESTauración las métricas críticas (LSN‑Progress, WAL‑Throughput, I/O‑Latency) a su sistema de monitoring, para que pueda tomar decisiones precisas de interrupción.

    Integración en CI/CD y automatización:

    Las pipelines de RESTore automatizadas (p. ej. en CI) deberían ejecutarse en infraestructura aislada y usar las mismas versiones de software que la producción. Implemente una pequeña plantilla de trabajo de verificación que, tras aplicar el basebackup y los WALs, realice comprobaciones básicas:

    Shell
    #!/bin/bash
    # vereinfachter Verifikator: checksum + LSN-Check
    sha256sum -c /backups/base_2026-07-25.sha256 || exit 1
    psql -Atc "SELECT pg_last_wal_replay_lsn()" | tee /tmp/last_lsn
    # vergleichen mit erwarteter LSN
    [ "$(cat /tmp/last_lsn)" = "0000000100000000000000A9" ] || exit 2
    echo "verification ok"

    Ejecute esos trabajos regularmente, no solo en caso de incidentes. Proporcionan la garantía de que las copias de seguridad no solo existen, sino que también son utilizables.

    Para finalizar: ancle los artefactos de recuperación, los scripts de prueba y los runbooks como código en su repositorio, firme las versiones críticas y practique las vías de escalación — así su playbook de recuperación ante desastres será robusto y utilizable en operación.

    Para este tema también son importantes la recuperación de bases de datos y la RTO/RPO. El artículo contextualiza estos aspectos de forma comprensible y muestra en qué hay que fijarse en la práctica diaria.