|
|
1421fcb5dd
|
feat: Week 3 Phase 2 - WAL Compression & Encryption
- Added compression support (gzip with configurable levels)
- Added AES-256-GCM encryption support for WAL files
- Integrated compression/encryption into WAL archiver
- File format: .gz for compressed, .enc for encrypted, .gz.enc for both
- Uses same encryption key infrastructure as backups
- Added --encryption-key-file and --encryption-key-env flags to wal archive
- Fixed cfg.RetentionDays nil pointer issue
New files:
- internal/wal/compression.go (190 lines)
- internal/wal/encryption.go (270 lines)
Modified:
- internal/wal/archiver.go: Integrated compression/encryption pipeline
- cmd/pitr.go: Added encryption key handling and flags
|
2025-11-26 11:25:40 +00:00 |
|
|
|
8a1e2daa29
|
feat: Week 3 Phase 1 - WAL Archiving & PITR Setup
## WAL Archiving Implementation (Phase 1/5)
### Core Components Created
- ✅ internal/wal/archiver.go (280 lines)
- WAL file archiving with timeline/segment parsing
- Archive statistics and cleanup
- Compression/encryption scaffolding (TODO)
- ✅ internal/wal/pitr_config.go (360 lines)
- PostgreSQL configuration management
- auto-detects postgresql.conf location
- Backs up config before modifications
- Recovery configuration for PG 12+ and legacy
- ✅ cmd/pitr.go (350 lines)
- pitr enable/disable/status commands
- wal archive/list/cleanup commands
- Integrated with existing CLI
### Features Implemented
**WAL Archiving:**
- ParseWALFileName: Extract timeline + segment from WAL files
- ArchiveWALFile: Copy WAL to archive directory
- ListArchivedWALFiles: View all archived WAL segments
- CleanupOldWALFiles: Retention-based cleanup
- GetArchiveStats: Statistics (total size, file count, date range)
**PITR Configuration:**
- EnablePITR: Auto-configure postgresql.conf for PITR
- Sets wal_level=replica, archive_mode=on
- Configures archive_command to call dbbackup
- Creates WAL archive directory
- DisablePITR: Turn off WAL archiving
- GetCurrentPITRConfig: Read current settings
- CreateRecoveryConf: Generate recovery config (PG 12+ & legacy)
**CLI Commands:**
```bash
# Enable PITR
dbbackup pitr enable --archive-dir /backups/wal_archive
# Check PITR status
dbbackup pitr status
# Archive WAL file (called by PostgreSQL)
dbbackup wal archive <path> <filename> --archive-dir /backups/wal
# List WAL archives
dbbackup wal list --archive-dir /backups/wal_archive
# Cleanup old WAL files
dbbackup wal cleanup --archive-dir /backups/wal_archive --retention-days 7
```
### Architecture
- Modular design: Separate archiver and PITR manager
- PostgreSQL version detection (12+ vs legacy)
- Automatic config file discovery
- Safe config modifications with backups
### Next Steps (Phase 2)
- [ ] Compression support (gzip)
- [ ] Encryption support (AES-256-GCM)
- [ ] Continuous WAL monitoring
- [ ] Timeline management
- [ ] Point-in-time restore command
Time: ~1.5h (3h estimated for Phase 1)
|
2025-11-26 10:49:57 +00:00 |
|