GameControl - Gestión de Salas Gaming

FASE 2 — BACKUP DE PRODUCCIÓN Y RESTAURACIÓN

Estado actual: PENDIENTE — no confirmado Regla: Este runbook no contiene credenciales ni ejecuta comandos automáticamente.

1. Prerrequisitos

No usar la anon key para un backup completo. No guardar connection strings, passwords, JWTs o service keys en el repositorio.

2. Método recomendado

Usar pg_dump del PostgreSQL de producción con esquema y datos completos, sin ownership/privileges:

# DOCUMENTAL — NO EJECUTAR SIN AUTORIZACIÓN Y VARIABLES CONFIGURADAS
export PGHOST='<production-db-host>'
export PGPORT='5432'
export PGDATABASE='postgres'
export PGUSER='<backup-user>'
export PGPASSWORD='<provided-out-of-band>'

mkdir -p "artifacts/backup-YYYYMMDDTHHMMSS"
pg_dump \
  --format=custom \
  --file="artifacts/backup-YYYYMMDDTHHMMSS/gamecontrol-production.dump" \
  --no-owner \
  --no-privileges \
  --verbose \
  "$PGDATABASE"

La password debe entrar mediante un mecanismo seguro del entorno o prompt del operador, no en este archivo.

3. Verificación criptográfica y metadatos

# DOCUMENTAL — NO EJECUTAR SIN BACKUP GENERADO
shasum -a 256 "artifacts/backup-YYYYMMDDTHHMMSS/gamecontrol-production.dump" \
  > "artifacts/backup-YYYYMMDDTHHMMSS/SHA256SUMS.txt"
pg_restore --list \
  "artifacts/backup-YYYYMMDDTHHMMSS/gamecontrol-production.dump" \
  > "artifacts/backup-YYYYMMDDTHHMMSS/CONTENTS.txt"

El registro debe contener:

4. Restauración de prueba obligatoria

Restaurar en una base de staging vacía o efímera, nunca sobre producción:

# DOCUMENTAL — NO EJECUTAR SIN STAGING AUTORIZADO
createdb --host='<staging-db-host>' --port='5432' \
  --username='<staging-user>' gamecontrol_restore_test
pg_restore \
  --clean --if-exists \
  --no-owner --no-privileges \
  --host='<staging-db-host>' --port='5432' \
  --username='<staging-user>' \
  --dbname='gamecontrol_restore_test' \
  "artifacts/backup-YYYYMMDDTHHMMSS/gamecontrol-production.dump"

No usar --clean contra producción. La base de restauración debe ser descartable y separada.

5. Criterios de backup verificable

El backup solo se marca CONFIRMADO cuando todos se cumplen:

6. Estado de esta entrega

No se ejecutó pg_dump, pg_restore, createdb ni ningún comando contra producción porque no hay credenciales/acceso de backup proporcionados en la sesión. Por tanto, el backup NO está confirmado y FASE 2 no está autorizada para ejecución.