SQL BACKUP AND RESTORE
Essential SQL Backup & Restore Guide
1. Core Backup Concepts
Backup Types
- Full: Complete database copy
- Differential: Changes since last full backup
- Transaction Log: Point-in-time recovery capability
- Snapshot: Near-instant backups using storage tech
Critical Metrics
- RPO: Recovery Point Objective (data loss tolerance)
- RTO: Recovery Time Objective (downtime tolerance)
- Verification: Checksum validation processes
- Storage: Local vs cloud vs tape tradeoffs
2. Cross-Platform Examples
Cloud Backup Patterns
# AWS S3 Backup (PostgreSQL) pg_dump -Fc dbname | \ aws s3 cp - s3://bucket/backup-$(date +%Y%m%d).dump # Azure SQL Database Export az sql db export \ -s server -n database -g resource-group \ -u username -p password \ --storage-uri https://storage.blob.core.windows.net/container/bacpac.bacpac
Encrypted Backups
-- MySQL Encrypted Backup openssl enc -aes-256-cbc -salt -in backup.sql -out backup.sql.enc -- SQL Server Native Encryption BACKUP DATABASE MyDB TO DISK = 'Z:\SQLBackups\MyDB.bak' WITH ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = MyBackupCert);
3. Advanced Recovery Techniques
Bare Metal Recovery
# PostgreSQL Disaster Recovery # 1. Install same PostgreSQL version # 2. Restore config files # 3. Deploy base backup: pg_basebackup -h primary -U repl -D /var/lib/pgsql/data -P -Xs -R # 4. Restore WAL archives rsync -avz /backup/wal/ /var/lib/pgsql/wal_archive/
Partial Object Recovery
-- SQL Server Single Table Recovery -- 1. Restore to temporary DB RESTORE DATABASE tempdb FROM DISK='backup.bak' WITH FILE=1, NORECOVERY, MOVE 'data' TO 'C:\temp\tempdb.mdf' -- 2. Export needed table INSERT INTO production.dbo.table SELECT * FROM tempdb.dbo.table -- 3. Clean up DROP DATABASE tempdb
4. Automation & Monitoring
Backup Monitoring Script
# Check PostgreSQL backup freshness LAST_BACKUP=$(find /backups -name "*.dump" -mtime -1 | wc -l) if [ $LAST_BACKUP -eq 0 ]; then echo "ALERT: No recent backups!" | \ mail -s "Backup Failure" dba@example.com exit 1 fi
Retention Management
# Automated backup rotation find /backups -name "*.dump" -mtime +30 -exec rm {} \; # SQL Server Ola Hallengren solution EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = '\\nas\sqlbackups', @BackupType = 'FULL', @CleanupTime = 24, @Verify = 'Y'
5. Special Considerations
Large Database Strategies
- Filegroup Backups: Backup subsets of data files
- Parallel Backup: pg_dump -j / MySQL Shell util.dumpInstance
- Incremental Forever: Combine full + differential + log backups
- Split Archives: pg_dump -Fd (directory format)
High Availability Integration
- Replica Promotion: Convert replica to primary during DR
- Backup From Replicas: Offload backup overhead
- Geo-Redundant: Cross-region backup copies
- Backup Impact: Monitoring performance during backups