Skip to main content
Aurora stores critical incident data across multiple systems. This guide covers backing up and restoring PostgreSQL, Weaviate, Vault, and object storage.

What to Back Up

Aurora’s data is distributed across:
  1. PostgreSQL - Incidents, alerts, suggestions, thoughts, users, credentials
  2. Weaviate - Semantic search vectors, knowledge base embeddings
  3. Vault - User credentials, API tokens, secrets
  4. Object Storage (SeaweedFS/S3) - File uploads, Terraform state, exported data
  5. Redis - Celery tasks, cache (ephemeral - can be rebuilt)

Backup Strategy

Recommended: Run automated backups daily to S3-compatible storage with 30-day retention.

Backup Schedule

  • PostgreSQL: Daily full backup + continuous WAL archiving
  • Weaviate: Weekly snapshot
  • Vault: Daily backup
  • Object Storage: Continuous replication to secondary region
  • Redis: No backup needed (cache only)

Backing Up PostgreSQL

Manual Backup

1

Create a backup directory

2

Run pg_dump

The --format=custom option enables parallel restore and selective table restore.
3

Verify the backup

Automated Backup Script

Create scripts/backup-postgres.sh:
Run via cron:

Continuous WAL Archiving

For point-in-time recovery, enable WAL archiving in PostgreSQL. Add to config/postgres/postgresql.conf:
Update docker-compose.yaml to mount the config:

Backing Up Weaviate

1

Create a Weaviate backup

Weaviate supports backups via API:
2

Check backup status

3

Export backup files

Weaviate stores backups in /var/lib/weaviate/backups inside the container:

Automated Weaviate Backup

Backing Up Vault

Vault backups contain sensitive credentials. Encrypt and restrict access.
1

Take a Vault snapshot

2

Encrypt the snapshot

3

Upload to secure storage

Vault Backup Script

Backing Up Object Storage (SeaweedFS)

SeaweedFS backups depend on your deployment:

Option 1: S3 Sync

Sync to another S3-compatible service:

Option 2: Volume Backup

Back up Docker volumes:

Option 3: SeaweedFS Replication

Configure cross-datacenter replication in docker-compose.yaml:

Restoring from Backup

Restore PostgreSQL

1

Stop Aurora services

2

Drop and recreate database

3

Restore from dump

4

Restart Aurora

Restore Weaviate

1

Stop Weaviate

2

Copy backup into container

3

Restore via API

4

Verify restore

Restore Vault

1

Stop Vault

2

Decrypt backup

3

Restore snapshot

4

Unseal Vault

Restore Object Storage

Restore SeaweedFS volumes:
Or sync from backup S3:

Disaster Recovery Testing

Test your restore process monthly. Backups are useless if you can’t restore them.

DR Test Checklist

  1. Create a test environment
  2. Restore all components (PostgreSQL, Weaviate, Vault, object storage)
  3. Verify data integrity
    • Check incident count: SELECT COUNT(*) FROM incidents;
    • Test authentication
    • Verify file uploads work
  4. Run a test investigation to ensure all systems function
  5. Document any issues and update procedures

Backup Monitoring

Monitor backup health:
Integrate with monitoring:

Backup Retention Policy

  • Daily backups: 7 days retention
  • Weekly backups: 4 weeks retention
  • No long-term archival
Implement with S3 lifecycle policies:

Security Considerations

Backups contain sensitive data. Always encrypt and restrict access.
  1. Encrypt backups at rest - Use GPG, age, or S3 SSE
  2. Encrypt backups in transit - Use HTTPS/TLS for uploads
  3. Restrict access - Use IAM policies, bucket policies, and MFA
  4. Audit access logs - Enable CloudTrail or equivalent
  5. Test encryption - Verify you can decrypt backups
  6. Rotate encryption keys - Update keys annually
  7. Separate backup credentials - Use dedicated service accounts

Troubleshooting

Ensure the script can access Docker:
Restore with --no-owner --no-privileges:
Increase timeout for large datasets:
If you lose unseal keys, you cannot recover Vault data. This is by design.Always store unseal keys in multiple secure locations:
  • Encrypted USB drives
  • Hardware security modules (HSMs)
  • Split across key personnel (Shamir’s Secret Sharing)

Next Steps

First Investigation

Run your first incident investigation

Custom Connectors

Build integrations for proprietary systems