Core Principles
Zero Downtime
No-downtime deployment Maintain compatibility
Backward Compatible
Backward compatibility Gradual changes
Rollback Ready
Rollback capability Always prepared
Test First
Test first Staging verification
Zero-Downtime Deployment Patterns
Pattern 1: Expand-Contract
Add new structure → Migrate → Remove old structure Step 1: Expand - Add new columnExpand-Contract benefits: - Zero-downtime deployment possible - Rollback possible anytime - No
data loss
Pattern 2: Gradual Migration
Avoiding Dangerous Changes
❌ Dangerous: Direct Column Drop
✅ Safe: Gradual Drop
❌ Dangerous: Immediate NOT NULL
✅ Safe: nullable → migration → NOT NULL
Data Type Changes
Safe Type Change Sequence
Index Strategies
Concurrent Index Creation
Index Creation Monitoring
Foreign Key Strategies
Adding FK to Large Tables
NOT VALID + VALIDATE benefits: - Skips existing data validation (fast) - Only validates new
data immediately - Full validation later in background
Large Data Migration
Batch Processing
Background Worker
Deployment Strategies
Blue-Green Deployment
Rolling Deployment
Testing Strategies
Migration Testing
Data Migration Testing
Monitoring
Migration Performance Tracking
Long-Running Query Monitoring
Checklist
Before Migration Execution
- Staging environment test completed
- Production backup completed
- Rollback plan established
- Downtime plan (if needed)
- Team notification
- Monitoring prepared
During Migration Execution
- Error log monitoring
- Performance metrics check
- Application health check
- User feedback check
After Migration Execution
- Data integrity verification
- Application functionality test
- Performance check
- Documentation update
- Rollback test (staging)
Real-world Examples
Example 1: Adding Column to Large Table
Example 2: Renaming Column
Next Steps
Creating Migrations
Generate in Sonamu UI
Running Migrations
migrate run command
Rolling Back
Undo changes
How It Works
Understanding auto-generation