Backup Workflows and Diagrams
Visual guides and step-by-step workflows for backup and disaster recovery operations in ContainerPub.
π Backup Workflows
Complete Backup Workflow
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β START: Backup Request β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Pre-Backup Validation β
β β’ Check container status β
β β’ Verify disk space β
β β’ Validate credentials β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Database Backup Phase β
β 1. Connect to PostgreSQL container β
β 2. Dump main database (dart_cloud) β
β 3. Dump functions database (functions_db) β
β 4. Compress with gzip β
β 5. Create combined archive β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Volume Backup Phase β
β 1. Create temporary Alpine container β
β 2. Mount PostgreSQL volume (read-only) β
β 3. Create tar.gz archive β
β 4. Mount functions volume (read-only) β
β 5. Create tar.gz archive β
β 6. Create combined volume archive β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Post-Backup Tasks β
β β’ Generate metadata files β
β β’ Verify backup integrity β
β β’ Calculate checksums β
β β’ Clean old backups (retention policy) β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Replication Phase (if enabled) β
β β’ Copy to local destination β
β β’ Sync to remote server (rsync) β
β β’ Upload to S3 bucket β
β β’ Execute custom replication β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Notification & Logging β
β β’ Log backup completion β
β β’ Send notifications (if configured) β
β β’ Update backup manifest β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β END: Backup Complete β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Restore Workflow
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β START: Restore Request β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Pre-Restore Validation β
β β’ Verify backup file exists β
β β’ Check backup integrity (tar -tzf) β
β β’ Validate backup metadata β
β β’ Confirm with user (unless -y flag) β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Service Shutdown β
β β’ Stop backend container β
β β’ Keep PostgreSQL running (for DB restore) β
β β’ Wait for graceful shutdown β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Volume Restore Phase (if requested) β
β 1. Extract volume backup archive β
β 2. Create temporary container β
β 3. Mount target volume β
β 4. Clear existing volume data β
β 5. Copy backup data to volume β
β 6. Verify volume restore β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Service Startup β
β β’ Start PostgreSQL container β
β β’ Wait for database health check β
β β’ Verify database connectivity β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Database Restore Phase (if requested) β
β 1. Extract database backup archive β
β 2. Decompress SQL dumps β
β 3. Execute main database restore β
β 4. Execute functions database restore β
β 5. Verify database integrity β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Full Service Restart β
β β’ Start backend container β
β β’ Wait for health checks β
β β’ Verify all services running β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Post-Restore Validation β
β β’ Test database connections β
β β’ Verify data integrity β
β β’ Check application functionality β
β β’ Log restore completion β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β END: Restore Complete β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Replication Workflows
Local Replication
ββββββββββββββββ
β Backup Files β
ββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββββ
β Create Temp Copy β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Copy to Local β
β Destination β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Verify Copy β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Clean Temp Files β
ββββββββββββββββββββ
Remote Replication (Rsync)
ββββββββββββββββ
β Backup Files β
ββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββββ
β Test SSH β
β Connection β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Rsync Transfer β
β (incremental) β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Verify Transfer β
β (checksums) β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Update Log β
ββββββββββββββββββββ
S3 Replication
ββββββββββββββββ
β Backup Files β
ββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββββ
β Verify AWS CLI β
β Configuration β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Upload to S3 β
β (multipart) β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Verify Upload β
β (ETag check) β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Set Storage β
β Class & Metadata β
ββββββββββββββββββββ
π¨ Disaster Recovery Workflow
Complete System Recovery
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DISASTER DETECTED β
β β’ System failure β
β β’ Data corruption β
β β’ Hardware failure β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Assessment Phase β
β 1. Identify scope of failure β
β 2. Determine last known good backup β
β 3. Estimate recovery time β
β 4. Notify stakeholders β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Preparation Phase β
β 1. Provision new infrastructure (if needed) β
β 2. Install Docker and dependencies β
β 3. Clone ContainerPub repository β
β 4. Configure environment variables β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Volume Recovery β
β 1. Transfer backup files to new system β
β 2. Create Docker volumes β
β 3. Restore PostgreSQL volume β
β 4. Restore functions volume β
β 5. Verify volume integrity β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Service Initialization β
β 1. Start PostgreSQL container β
β 2. Wait for database ready β
β 3. Verify database connectivity β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Database Recovery β
β 1. Restore main database β
β 2. Restore functions database β
β 3. Verify schema integrity β
β 4. Check data consistency β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Application Recovery β
β 1. Start backend container β
β 2. Verify health endpoints β
β 3. Test function execution β
β 4. Verify API endpoints β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Validation Phase β
β 1. Run smoke tests β
β 2. Verify data integrity β
β 3. Test critical workflows β
β 4. Monitor system metrics β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Post-Recovery β
β 1. Update DNS/load balancers β
β 2. Enable monitoring and alerts β
β 3. Document recovery process β
β 4. Conduct post-mortem β
β 5. Update disaster recovery plan β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SYSTEM RECOVERED β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Decision Trees
Backup Type Selection
Need Backup?
β
βΌ
ββββββββββββ΄βββββββββββ
β β
Full System Partial
β β
βΌ βΌ
backup-all.sh ββββββββββββ΄βββββββββββ
β β
Database Volume
β β
βΌ βΌ
backup-database.sh backup-volumes.sh
Restore Strategy Selection
What to Restore?
β
βΌ
ββββββββββββ΄βββββββββββ
β β
Everything Selective
β β
βΌ βΌ
1. Volumes First ββββββββββ΄βββββββββ
2. Start Services β β
3. Databases Database Volume
β β
βΌ βΌ
restore-database.sh restore-volumes.sh
Replication Type Selection
Where to Replicate?
β
βΌ
βββββββββββββββββΌββββββββββββββββ
β β β
Same Host Remote Host Cloud
β β β
βΌ βΌ βΌ
Local Copy Rsync/SCP S3/R2
β β β
βΌ βΌ βΌ
-t local -t rsync -t s3
π Automated Backup Flow
Cron-Based Backup Service
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cron Scheduler (Container) β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ (Schedule: 0 2 * * *)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Trigger Backup Script β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Execute backup-all.sh β
β β’ Database backup β
β β’ Volume backup β
β β’ Create archives β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Check REPLICATION_ENABLED β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βββββββββ΄ββββββββ
β β
true false
β β
βΌ βΌ
ββββββββββββββββββββ ββββββββββββββββ
β Execute β β Skip β
β Replication β β Replication β
ββββββββββ¬ββββββββββ ββββββββ¬ββββββββ
β β
ββββββββββ¬ββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Log Results β
β β’ Backup status β
β β’ Replication status β
β β’ Errors (if any) β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Send Notifications (if configured) β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Wait for Next Schedule β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Backup Lifecycle
ββββββββββββββββ
β Backup β
β Created β
ββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββββ
β Active Backup β
β (0-7 days) β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Retention Check β
β (Daily) β
ββββββββ¬ββββββββββββ
β
βΌ
ββββββββββββββββββββ
β Age > Retention? β
ββββββββ¬ββββββββββββ
β
βββββ΄ββββ
β β
Yes No
β β
βΌ βΌ
ββββββββ ββββββββ
βDeleteβ βKeep β
ββββββββ ββββββββ
π― Best Practice Workflows
Weekly Backup Test
Monday:
ββ Create test backup
ββ backup-all.sh
Wednesday:
ββ Restore to staging
ββ Stop staging services
ββ Restore volumes
ββ Restore databases
ββ Verify functionality
Friday:
ββ Document results
ββ Record restore time
ββ Note any issues
ββ Update procedures
Monthly Disaster Recovery Drill
Week 1:
ββ Plan drill scenario
ββ Define failure type
ββ Identify team members
ββ Schedule drill time
Week 2:
ββ Execute drill
ββ Simulate disaster
ββ Execute recovery
ββ Time each phase
ββ Document issues
Week 3:
ββ Review and improve
ββ Analyze results
ββ Update procedures
ββ Train team
ββ Update documentation
Week 4:
ββ Verify improvements
ββ Test updated procedures
π Related Documentation
- Backup Strategy - Complete backup documentation
- Backup Quick Reference - Fast command reference
- Architecture Overview - System architecture
- Database System - Database documentation
Last Updated: November 2025
Version: 1.0.0