generated from john/python-template
1.6 KiB
1.6 KiB
Backup and Restore (V6.0 Phase 4)
This guide defines operational backup/restore for the Docker PostgreSQL runtime and Synology replication.
1. Backup artifacts
- Primary local backup location:
./data/backups - Backup format: PostgreSQL custom dump (
pg_dump -Fc) - Naming:
postgres-YYYYMMDD-HHMMSS.dump(UTC timestamp)
2. Creating backups
Use the scripted command:
sh deploy/backup/create_postgres_backup.sh
Optional environment overrides:
BACKUP_DIR(default./data/backups)BACKUP_RETENTION_DAYS(default14)SYNOLOGY_BACKUP_DIR(if set, backup is copied to this mounted path)ENV_FILE(default.env.production)COMPOSE_FILE(defaultdocker-compose.production.yml)
Example with Synology mount:
SYNOLOGY_BACKUP_DIR=/mnt/synology/transcription-backups sh deploy/backup/create_postgres_backup.sh
3. Restoring from backup
Restore requires downtime for app + worker writes.
- Stop app and worker:
docker compose --env-file .env.production -f docker-compose.production.yml stop app worker
- Restore:
sh deploy/backup/restore_postgres_backup.sh ./data/backups/postgres-YYYYMMDD-HHMMSS.dump
- Start app and worker:
docker compose --env-file .env.production -f docker-compose.production.yml start app worker
- Validate
/healthzand run one smoke workflow.
4. Retention and recovery targets
- Retention baseline: keep at least 14 days of backups locally.
- Synology copy: replicate each new backup to DS420j mounted path.
- Periodic restore drill: run at least once per release cycle to verify recovery.