Estado actual: PENDIENTE — no confirmado Regla: Este runbook no contiene credenciales ni ejecuta comandos automáticamente.
supabase CLI autenticada o una connection string PostgreSQL privilegiada entregada por el operador fuera del repositorio.No usar la anon key para un backup completo. No guardar connection strings, passwords, JWTs o service keys en el repositorio.
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.
# 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:
pg_dump.pg_restore --list.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.
El backup solo se marca CONFIRMADO cuando todos se cumplen:
pg_restore --list se ejecutó sin error.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.