We use cookies to enhance your experience on the site
CodeWorlds

Backup and Recovery - rescuing tributes after a disaster

Tribute vault guardian! Consul Caesar.js knows that even the best forts can sink during a storm. That's why every wise legionary has a plan for rescuing their tributes!

Database Backup Strategy

1#!/bin/bash
2# backup-database.sh
3
4set -e
5
6DATABASE_URL=${DATABASE_URL}
7BACKUP_DIR="/backups"
8DATE=$(date +%Y%m%d_%H%M%S)
9BACKUP_NAME="legionaries_legion_backup_${DATE}.sql"
10
11# Create backup
12echo "Creating database backup..."
13pg_dump $DATABASE_URL > $BACKUP_DIR/$BACKUP_NAME
14
15# Compress backup
16gzip $BACKUP_DIR/$BACKUP_NAME
17
18# Upload to S3
19aws s3 cp $BACKUP_DIR/${BACKUP_NAME}.gz s3://legionaries-legion-backups/
20
21# Cleanup old backups (keep last 7 days)
22find $BACKUP_DIR -name "*.gz" -mtime +7 -delete
23
24echo "Backup completed: ${BACKUP_NAME}.gz"

Disaster Recovery Plan

1// Recovery service
2@Injectable()
3export class RecoveryService {
4 async restoreFromBackup(backupFile: string) {
5 // 1. Download backup from S3
6 const backup = await this.downloadBackup(backupFile);
7
8 // 2. Create new database
9 await this.createRecoveryDatabase();
10
11 // 3. Restore data
12 await this.restoreData(backup);
13
14 // 4. Verify integrity
15 await this.verifyDataIntegrity();
16
17 // 5. Switch traffic
18 await this.switchTraffic();
19 }
20}
Go to CodeWorlds