This runbook covers preserving continuity for NSVA’s digital systems: the PostgreSQL database and the object-storage bucket used for encrypted files (DD-214, uploaded documents) and archives.
What to back up
- Database
- Back up your PostgreSQL data referenced by
DATABASE_URL.
- Back up your PostgreSQL data referenced by
- Object storage
- Back up the object storage bucket used by the live site (for NSVA on Google Cloud, typically Cloud Storage).
- Include both:
- Transient encrypted uploads (e.g.
dd214/…) - Archive exports (e.g.
archive/…)
- Transient encrypted uploads (e.g.
Backup checklist (before a change / on a schedule)
- Confirm environment variables are current (
DATABASE_URL,STORAGE_PROVIDER, and storage credentials). - Create a database backup (platform automated backup or a point-in-time backup).
- Create an object-storage snapshot (or consistent bucket snapshot) at the same approximate time as the DB backup.
- Record:
- Backup timestamps
- Source environment
- Where the backups are stored (bucket/key prefixes and DB backup identifier)
Restore checklist (tested procedure)
- Provision a target environment (recovery or new production instance).
- Restore the database to the backup timestamp.
- Restore the object storage to the backup state (so stored file keys referenced by the DB exist again).
- Ensure the app starts cleanly:
- Set environment variables to match the restored target.
- Apply database schema updates as required by your deployment runbook (for example the same migration step used for a normal release).
- Validate continuity:
GET /api/healthreturns success.- A sample read works end-to-end:
- View an archived/a stored file record (admin DD-214 workflow) or
- Download a PDF protected resource using its
StoredFilekey (where applicable).
- Run a quick permissions sanity check:
- Log in as an admin member and confirm
Admin → Audit Logand key workflow dashboards load.
- Log in as an admin member and confirm
Verification & audit evidence
After a restore test:
- Capture success/failure notes in your leadership ops record.
- Confirm that:
- The DB contains the expected rows (orders, donations, memberships, audit logs).
- The object storage contains expected keys referenced in DB.
- If restore diverges, restore again and document the corrective action.