High-performance database backup and restore utility for PostgreSQL, MySQL, and MariaDB. Built in Go with hardware introspection, streaming architecture, and parallel processing.
Repository: https://git.uuxo.net/UUXO/dbbackup Mirror: https://github.com/PlusOne/dbbackup
- Quick Start
- Features
- Installation
- Usage
- Commands
- Global Flags
- Encryption
- PostgreSQL Custom Format
- Incremental Backups
- Cloud Storage
- Deduplicated Backups
- Point-in-Time Recovery
- Backup Cleanup & GFS Retention
- Dry-Run Mode
- Notifications
- Backup Catalog
- Monitoring & Compliance
- Systemd Integration
- Prometheus Metrics
- Configuration
- Performance
- Testing
- Troubleshooting
- Requirements
- Documentation
- Enterprise & Consulting
- License
# Download
wget https://github.com/PlusOne/dbbackup/releases/latest/download/dbbackup-linux-amd64
chmod +x dbbackup-linux-amd64
# Backup your database
./dbbackup-linux-amd64 backup single mydb --db-type postgres
# Or for MySQL
./dbbackup-linux-amd64 backup single mydb --db-type mysql --user root
# Interactive mode (recommended for first-time users)
./dbbackup-linux-amd64 interactiveThat's it! Backups are stored in ./backups/ by default.
Pure Go implementation -- no external tools required.
- Direct PostgreSQL (pgx) and MySQL (go-sql-driver) protocol communication
- No pg_dump, mysqldump, pg_restore, mysql, psql, mysqlbinlog needed
- Full SQL generation, type handling, connection management, and binary data support
- Falls back to external tools if needed (
--fallback-tools)
- PostgreSQL 10+ -- UNLOGGED tables, parallel DDL, adaptive workers
- MySQL 5.7+ -- Native engine with bulk load optimizations; Percona XtraBackup physical backup
- MariaDB 10.3+ -- Full MySQL parity plus Galera cluster support; MariaBackup physical backup
- Backup modes: Single database, cluster (all DBs), sample data
- AES-256-GCM encryption with key rotation support
- Incremental backups (LSN-based for XtraBackup)
- Cloud storage: S3, MinIO, B2, Azure Blob, Google Cloud Storage, SFTP
- Point-in-Time Recovery: WAL archiving (PostgreSQL), binlog archiving (MySQL/MariaDB)
- GFS retention policies: Grandfather-Father-Son backup rotation
- Content-addressed dedup: Bloom filter + SHA-256 chunking (50-90% storage reduction)
- Dry-run mode: Preflight checks before backup execution
- Percona XtraBackup / MariaBackup: Physical hot backup engine -- see docs/ENGINES.md
- pg_basebackup / WAL archiving: Streaming replication backup for 100GB+ databases
- Backup catalog: SQLite-based tracking with gap detection and search
- DR drill testing: Automated restore testing in Docker containers
- Compliance reports: SOC2, GDPR, HIPAA, PCI-DSS, ISO27001 generation
- RTO/RPO calculator: Recovery objective analysis and recommendations
- Restore verification:
--verify-restorecreates temp DB, restores, compares row counts - Status dashboard:
dbbackup statusshows per-database health with age, size, encryption - Notifications: SMTP email and webhook alerts with batching and escalation
- Prometheus metrics: Textfile collector and HTTP exporter (port 9399)
- Systemd integration: Install as service with scheduled timers
- Replica-aware backup: Automatic backup from replicas to reduce primary load
- Bandwidth throttling: Rate-limit backup and upload operations
- Pre/Post hooks: Run VACUUM ANALYZE, notify Slack, or custom scripts
- 5-10x faster parallel restore vs pg_dump/pg_restore baseline
- 90% RTO reduction with tiered restore (critical tables first)
- Engine-aware adaptive job sizing -- 3-stage pipeline with I/O governor selection
- BLOB pipeline: Type detection (30+ signatures), content-addressed dedup, split backup mode
- Intel/AMD/ARM vendor-aware CPU tuning -- ISA features, cache hierarchy, NUMA, hybrid P/E-core
- Streaming I/O with 256KB batch pipeline (constant memory usage regardless of DB size)
| Mode | Speed | Safety | Use Case |
|---|---|---|---|
| Safe (default) | Baseline | Full WAL logging | Production with replication |
| Balanced | 2-3x faster | UNLOGGED during COPY | Production standalone |
| Turbo | 3-4x faster | Minimal WAL, async commit | Dev/test only |
- 1358-line pre-release test suite covering 10 categories with 43+ checks
- GitHub Actions CI with race detector, leak tests, multi-DB validation
- 27 TUI screens with comprehensive Ctrl+C handling
- Backwards compatible with all v5.x backup formats
docker pull git.uuxo.net/UUXO/dbbackup:latest
# PostgreSQL backup
docker run --rm \
-v $(pwd)/backups:/backups \
-e PGHOST=your-host \
-e PGUSER=postgres \
-e PGPASSWORD=secret \
git.uuxo.net/UUXO/dbbackup:latest backup single mydbDownload from releases:
# Linux x86_64
wget https://git.uuxo.net/UUXO/dbbackup/releases/download/v6.50.24/dbbackup-linux-amd64
chmod +x dbbackup-linux-amd64
sudo mv dbbackup-linux-amd64 /usr/local/bin/dbbackupAvailable platforms: Linux (amd64, arm64, armv7), macOS (amd64, arm64).
git clone https://git.uuxo.net/UUXO/dbbackup.git
cd dbbackup
go buildRecommended for first-time users and production safety.
# PostgreSQL with peer authentication
sudo -u postgres dbbackup interactive
# MySQL/MariaDB (use MYSQL_PWD env var for password)
export MYSQL_PWD='secret'
dbbackup interactive --db-type mysql --user rootThe interactive TUI provides connection health checks, pre-restore validation (7 automated checks), safe abort with Ctrl+C, type-to-confirm warnings for destructive operations, adaptive job sizing, I/O governor selection, and resource profile presets.
For automation/CI: Use --auto-select, --auto-database, --auto-confirm flags.
See docs/tui-features.md for full TUI documentation with screenshots.
# Single database backup
dbbackup backup single myapp_db
# PostgreSQL custom format (.dump)
dbbackup backup single myapp_db --dump-format custom
# Cluster backup (all databases)
dbbackup backup cluster
dbbackup backup cluster --db-type mariadb --user root
# Sample backup (reduced data for testing)
dbbackup backup sample myapp_db --sample-strategy percent --sample-value 10
# Encrypted backup
dbbackup backup single myapp_db --encrypt --encryption-key-file key.txt
# Incremental backup
dbbackup backup single myapp_db --backup-type incremental --base-backup base.tar.gz
# Restore single database
dbbackup restore single backup.dump --target myapp_db --create --confirm
# Restore cluster
dbbackup restore cluster cluster_backup.tar.gz --confirm
# Restore with resource profile and I/O governor
dbbackup restore cluster backup.tar.gz --profile=conservative --io-governor=bfq --confirm
# Diagnose backup before restore
dbbackup restore diagnose backup.dump.gz --deep
# Cloud backup
dbbackup backup single mydb --cloud s3://my-bucket/backups/
# Dry-run mode (preflight checks without execution)
dbbackup backup single mydb --dry-run| Command | Description |
|---|---|
| Backup | |
backup single |
Backup single database |
backup cluster |
Backup all databases (PostgreSQL, MySQL, MariaDB) |
backup sample |
Backup with reduced data |
| Restore | |
restore single |
Restore single database |
restore cluster |
Restore full cluster |
restore pitr |
Point-in-Time Recovery restore |
restore diagnose |
Diagnose backup file integrity |
restore preview |
Preview backup contents before restoring |
| Dedup | |
dedup backup |
Create deduplicated backup of a file |
dedup backup-db |
Direct database dump with deduplication |
dedup restore |
Restore from deduplicated backup |
dedup list / stats / gc / verify / prune |
Manage dedup store |
| Verification | |
verify-backup |
Verify backup integrity (updates catalog) |
verify-locks |
Check PostgreSQL lock settings for restore |
verify-restore |
Systematic verification for large restores |
| PITR | |
pitr enable / disable / status |
PostgreSQL PITR management |
pitr mysql-enable / mysql-status |
MySQL/MariaDB PITR management |
| WAL / Binlog | |
wal archive / list / cleanup / timeline |
PostgreSQL WAL management |
binlog list / archive / watch / validate / position |
MySQL binlog management |
| Cloud | |
cloud upload / download / list / delete / status / sync |
Cloud storage operations |
cloud cross-region-sync |
Sync backups between cloud regions |
| Catalog | |
catalog sync / list / stats / gaps / search / info |
Catalog operations |
catalog export / dashboard / check |
Export, browse, verify |
| Analysis | |
diff |
Compare two backups |
estimate single / cluster |
Estimate backup size |
forecast |
Predict future disk space |
cost analyze |
Analyze cloud storage costs |
compression analyze |
Optimal compression analysis |
retention-simulator |
Simulate retention policy effects |
| Infrastructure | |
status |
Backup dashboard (age, size, encryption, health) |
preflight / health / diagnose / validate |
System checks |
list / cpu / profile / chain |
Info and diagnostics |
| Monitoring | |
rto analyze / status / check |
RTO/RPO analysis |
metrics export / serve |
Prometheus metrics |
report generate / summary / list / controls |
Compliance reports |
notify test |
Test notifications |
| DR & Migration | |
drill run / quick / list / cleanup |
DR drill testing |
migrate single / cluster |
Database migration |
| Benchmarking | |
benchmark run / matrix / history / show |
Performance benchmarking |
| Operations | |
cleanup |
Remove old backups (supports GFS retention) |
install / uninstall / schedule |
Systemd management |
interactive |
Start interactive TUI |
blob stats / backup / restore |
BLOB operations |
encryption rotate |
Rotate encryption keys |
engine list |
List available backup engines |
completion / version / man |
Shell completion, version info, man pages |
| Flag | Description | Default |
|---|---|---|
-d, --db-type |
Database type (postgres, mysql, mariadb) | postgres |
--host |
Database host | localhost |
--port |
Database port | 5432/3306 |
--user |
Database user | current user |
--socket |
Unix socket path (MySQL/MariaDB) | - |
MYSQL_PWD / PGPASSWORD |
Database password (env var) | - |
--backup-dir |
Backup directory | ~/db_backups |
--compression |
Compression level (0-9) | 6 |
--jobs |
Parallel jobs | 8 |
--max-cores |
Maximum CPU cores to use | all |
--profile |
Resource profile (conservative/balanced/aggressive) | balanced |
--adaptive |
Adaptive per-DB job sizing | true |
--io-governor |
I/O scheduler (auto/noop/bfq/mq-deadline/deadline) | auto |
--cloud |
Cloud storage URI | - |
--encrypt |
Enable encryption | false |
--dry-run, -n |
Run preflight checks only | false |
--verify-restore |
After backup, restore to temp DB and compare | false |
--native |
Use native Go engine | true |
--debug |
Enable debug logging | false |
--retention-days |
Backup retention period in days (0=disabled) | 0 |
--cpu-auto-tune |
Vendor-aware CPU auto-tuning | true |
AES-256-GCM encryption for secure backups:
# Generate key
head -c 32 /dev/urandom | base64 > encryption.key
# Backup with encryption
dbbackup backup single mydb --encrypt --encryption-key-file encryption.key
# Restore (decryption is automatic)
dbbackup restore single mydb_encrypted.sql.gz --encryption-key-file encryption.key --target mydb --confirmPostgreSQL custom format (.dump) enables parallel restore and selective table recovery:
# Single database -- custom format
dbbackup backup single mydb --dump-format custom
# Cluster backup uses custom format by default
dbbackup backup cluster
# Restore from custom format (parallel restore with -j)
dbbackup restore single mydb.dump --target mydb --confirm --jobs 8Benefits: 2-3x faster restores via TOC-based parallel processing, selective table restore, built-in compression, random access to any table's data block.
# Full backup (base)
dbbackup backup single mydb --backup-type full
# Incremental backup
dbbackup backup single mydb --backup-type incremental --base-backup mydb_base.tar.gzSupported providers: AWS S3, MinIO, Backblaze B2, Azure Blob Storage, Google Cloud Storage, SFTP.
# AWS S3
export AWS_ACCESS_KEY_ID="key"
export AWS_SECRET_ACCESS_KEY="secret"
dbbackup backup single mydb --cloud s3://bucket/path/
# Azure Blob
export AZURE_STORAGE_ACCOUNT="account"
export AZURE_STORAGE_KEY="key"
dbbackup backup single mydb --cloud azure://container/path/
# Google Cloud Storage
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json"
dbbackup backup single mydb --cloud gcs://bucket/path/
# SFTP (SSH key or password)
dbbackup backup single mydb --cloud sftp://user@host/backups/ --sftp-key ~/.ssh/id_ed25519 --sftp-insecure
dbbackup cloud list --cloud sftp://user@host:2222/backups/ --sftp-password secret --sftp-insecureSee docs/CLOUD.md for detailed configuration.
Content-addressed deduplication using SHA-256 chunking with Bloom filter:
# Deduplicated backup of a file
dbbackup dedup backup /backups/mydb_20250601.dump.gz
# Direct database dump with deduplication
dbbackup dedup backup-db mydb --db-type mariadb --user root
# List / stats / restore / verify / garbage collect / prune
dbbackup dedup list
dbbackup dedup stats
dbbackup dedup restore <manifest-id> /tmp/restored.dump.gz
dbbackup dedup gc
dbbackup dedup prune --retention-days 90Typical storage savings: 50-80% for daily backups of slowly-changing databases, 60-90% for databases with large static BLOBs.
# Enable PITR (WAL archiving)
dbbackup pitr enable --archive-dir /backups/wal_archive
# Check status
dbbackup pitr status
# Restore to timestamp
dbbackup restore pitr \
--base-backup /backups/base.tar.gz \
--wal-archive /backups/wal_archive \
--target-time "2024-11-26 12:00:00" \
--target-dir /var/lib/postgresql/14/restored# Enable binary logging
dbbackup pitr mysql-enable --db-type mariadb --user root
# Archive / watch / validate binlogs
dbbackup binlog archive --db-type mariadb --user root --archive-dir /backups/binlogs
dbbackup binlog watch --db-type mariadb --user root --archive-dir /backups/binlogs
dbbackup binlog validate --db-type mariadb --user rootSee docs/PITR.md for PostgreSQL and docs/MYSQL_PITR.md for MySQL/MariaDB.
# Delete backups older than 30 days, keep minimum 5
dbbackup cleanup /backups --retention-days 30 --min-backups 5
# GFS retention: 7 daily, 4 weekly, 12 monthly, 3 yearly
dbbackup cleanup /backups --gfs \
--gfs-daily 7 --gfs-weekly 4 --gfs-monthly 12 --gfs-yearly 3
# Preview deletions
dbbackup cleanup /backups --retention-days 7 --dry-runPreflight checks validate backup readiness without execution:
dbbackup backup single mydb --dry-runChecks: database connectivity, required tools, storage permissions, size estimation, encryption config, cloud credentials.
Get alerted on backup events via email or webhooks:
# SMTP Email
export NOTIFY_SMTP_HOST="smtp.example.com"
export NOTIFY_SMTP_PORT="587"
export NOTIFY_SMTP_USER="alerts@example.com"
export NOTIFY_SMTP_PASSWORD="secret"
export NOTIFY_SMTP_FROM="dbbackup@example.com"
export NOTIFY_SMTP_TO="admin@example.com"
# Webhook (Slack, generic)
export NOTIFY_WEBHOOK_URL="https://hooks.slack.com/services/T00/B00/XXX"
export NOTIFY_WEBHOOK_SECRET="signing-secret" # Optional HMAC signing
# Test notification configuration
dbbackup notify test --verboseSupported events: backup_started/completed/failed, restore_started/completed/failed, cleanup_completed, verify_completed/failed, pitr_recovery, dr_drill_passed/failed, gap_detected, rpo_violation.
Track all backups in a SQLite catalog with gap detection and search:
# Sync backups from directory to catalog
dbbackup catalog sync /backups
# List recent backups
dbbackup catalog list --database mydb --limit 10
# Show catalog statistics
dbbackup catalog stats
# Detect backup gaps (missing scheduled backups)
dbbackup catalog gaps --interval 24h --database mydb
# Search backups by date range
dbbackup catalog search --database mydb --after 2024-01-01 --before 2024-12-31
# Compare two backups to see what changed
dbbackup diff /backups/mydb_20240115.dump.gz /backups/mydb_20240120.dump.gzdbbackup cost analyze # All databases
dbbackup cost analyze --database mydb # Specific database
dbbackup cost analyze --format json # JSON for automationAnalyzes AWS S3, GCS, Azure Blob, Backblaze B2, and Wasabi with tiered storage recommendations.
dbbackup health # Quick check
dbbackup health --format json # For monitoring integrationChecks: config validity, DB connectivity, backup freshness, gap detection, verification status, disk space. Exit codes: 0=healthy, 1=warning, 2=critical.
dbbackup backup single mydb --verify-restoreCreates temp DB, restores, compares every table's row count, prints color-coded report, always cleans up.
dbbackup statusPer-database health table with age, size, encryption, and color-coded staleness (green=OK, yellow=aging, red=stale).
dbbackup restore diagnose backup.dump.gz --deepValidates PGDMP signatures, gzip integrity, COPY block termination, pg_restore listing, and archive structure.
dbbackup drill run /backups/mydb_latest.dump.gz --database mydb --type postgresql
dbbackup drill quick /backups/mydb_latest.dump.gz --database mydbAutomated restore testing in Docker containers. See docs/DRILL.md.
dbbackup report generate --type soc2 --days 90 --format html --output soc2-report.html
dbbackup report summary --type gdpr --days 30
dbbackup report listFrameworks: SOC2 Type II, GDPR, HIPAA, PCI-DSS, ISO 27001.
dbbackup rto analyze --database mydb
dbbackup rto status
dbbackup rto check --target-rto 4h --target-rpo 1hCalculates current RPO/RTO, compliance status, breakdown by phase, and improvement recommendations. See docs/RTO.md.
# Install with Prometheus metrics exporter
sudo dbbackup install --backup-type cluster --with-metrics
# Preview / check status / uninstall
dbbackup install --dry-run --backup-type cluster
dbbackup install --status
sudo dbbackup uninstall cluster --purgeSchedule options:
--schedule daily # Every day at midnight (default)
--schedule weekly # Every Monday at midnight
--schedule "*-*-* 02:00:00" # Every day at 2amInstalls systemd service/timer units, dedicated dbbackup user, directories, and optional Prometheus exporter on port 9399.
See docs/SYSTEMD.md for manual setup, security hardening, and troubleshooting.
Migration Note (v1.x -> v2.x): The
--instanceflag was renamed to--serverto avoid collision with Prometheus's reservedinstancelabel.
dbbackup metrics export --output /var/lib/node_exporter/textfile_collector/dbbackup.promdbbackup metrics serve # Default port 9399
dbbackup metrics serve --port 9100 # Custom portEndpoints: /metrics (Prometheus format), /health (returns 200 OK).
| Metric | Type | Description |
|---|---|---|
dbbackup_build_info |
gauge | Build info (version, commit) |
dbbackup_last_success_timestamp |
gauge | Unix timestamp of last successful backup |
dbbackup_last_backup_duration_seconds |
gauge | Duration of last backup |
dbbackup_last_backup_size_bytes |
gauge | Size of last backup |
dbbackup_backup_total |
gauge | Total backups by status (success/failure) |
dbbackup_backup_by_type |
gauge | Total backups by backup type |
dbbackup_rpo_seconds |
gauge | Seconds since last successful backup |
dbbackup_backup_verified |
gauge | Whether last backup was verified (1/0) |
dbbackup_restore_total |
counter | Total restore operations by status |
dbbackup_restore_duration_seconds |
gauge | Duration of last restore |
dbbackup_dedup_database_last_backup_timestamp |
gauge | Last dedup backup timestamp |
Labels: server, database, engine, backup_type, status
See docs/METRICS.md and docs/EXPORTER.md for alerting rules, PromQL examples, and production deployment.
# Peer authentication
sudo -u postgres dbbackup backup cluster
# Password file
echo "localhost:5432:*:postgres:password" > ~/.pgpass
chmod 0600 ~/.pgpass
# Environment variable
export PGPASSWORD=password# Environment variable (recommended)
export MYSQL_PWD='secret'
dbbackup backup single mydb --db-type mysql --user root
# Socket authentication (no password needed)
dbbackup backup single mydb --db-type mysql --socket /var/run/mysqld/mysqld.sockNote: The
--passwordcommand-line flag is not supported for security reasons (passwords would be visible inps auxoutput). Use environment variables or config files.
Settings are saved to .dbbackup.conf in the current directory:
--no-config # Skip loading saved configuration
--no-save-config # Prevent saving configuration| Scenario | Standard | Optimized | Improvement |
|---|---|---|---|
| 100GB uniform data | 2h30m | 1h39m | 1.5x |
| 100GB fragmented | 12h+ | 3h20m | 3.6x |
| 500GB + tiered restore | 8h full | 8 min (critical tables) | 60x RTO |
| Operation | Throughput |
|---|---|
| Dump (pgzip, 8 workers) | 2,048 MB/s |
| Restore (pgzip decompress) | 1,673 MB/s |
| Standard gzip baseline | 422 MB/s |
Streaming architecture maintains constant memory regardless of database size: < 1 GB for databases of 1-100+ GB.
# High-performance backup
dbbackup backup cluster --max-cores 32 --jobs 32 --cpu-workload cpu-intensive --compression 3
# High-performance restore
dbbackup restore single dump.sql.gz --restore-mode=balanced --workers=16 \
--tiered-restore --critical-tables="user*,payment*"Workload types: balanced (default), cpu-intensive (fast storage), io-intensive (avoid I/O contention).
See docs/PERFORMANCE_TUNING.md for advanced tuning and docs/BENCHMARKING.md for the full benchmark framework, CPU architecture optimization, HugePages, and Linux kernel tuning.
dbbackup is tested daily on dedicated infrastructure:
- 6 production database servers running automated nightly backups
- Dedicated 16-core test node running the full test suite against real PostgreSQL and MySQL instances
- Every release is deployed via Ansible and validated across the fleet before tagging
- Prometheus monitoring with RPO/failure alerts on all nodes
- CI pipeline with race detection on every commit
If the TUI shows [FAIL] Disconnected:
- Check database is running:
psql -U postgres -c "SELECT 1" - Verify connection settings:
./dbbackup status - Test with CLI mode:
./dbbackup backup single testdb
Common causes:
- Peer auth mismatch -- Backup ran as
postgres, restore asroot. Fix:sudo -u postgres dbbackup restore ... - PostgreSQL crashed after heavy backup I/O. Check:
sudo systemctl status postgresql - max_connections exhausted -- Check:
sudo -u postgres psql -c "SELECT count(*) FROM pg_stat_activity;" - Password not set -- Re-export
PGPASSWORDfor the restore session
- Archive integrity fails -- Archive may be corrupted, try re-downloading
- Insufficient disk space -- Free up space or use
--work-dir - Missing privileges -- User needs CREATEDB:
ALTER USER youruser CREATEDB;
See docs/TROUBLESHOOTING.md for extended diagnostics.
System:
- Linux, macOS, FreeBSD, OpenBSD, NetBSD
- 1 GB RAM minimum
- Disk space: 30-50% of database size
Native Engine (default -- no external tools required):
- PostgreSQL 10+ (via pgx protocol)
- MySQL 5.7+ / MariaDB 10.3+ (via go-sql-driver)
External Tools (optional, used as fallback):
- PostgreSQL: psql, pg_dump, pg_dumpall, pg_restore
- MySQL/MariaDB: mysql, mysqldump
- Percona XtraBackup 8.0+ / MariaBackup 10.3+
Getting Started:
- docs/MIGRATION_FROM_V5.md -- Upgrade guide (v5.x -> v6.0)
- docs/DATABASE_COMPATIBILITY.md -- Feature matrix (PG/MySQL/MariaDB)
Performance & Restore:
- docs/PERFORMANCE_TUNING.md -- Advanced optimization guide
- docs/BENCHMARKING.md -- Benchmark framework, CPU optimization, HugePages, kernel tuning
- docs/RESTORE_PERFORMANCE.md -- Restore performance analysis
- docs/RESTORE_PROFILES.md -- Restore resource profiles
Database Engines:
- docs/ENGINES.md -- Engine configuration (includes XtraBackup/MariaBackup)
- docs/PITR.md -- Point-in-Time Recovery (PostgreSQL)
- docs/MYSQL_PITR.md -- Point-in-Time Recovery (MySQL/MariaDB)
Cloud Storage:
- docs/CLOUD.md -- Cloud storage overview
- docs/AZURE.md -- Azure Blob Storage
- docs/GCS.md -- Google Cloud Storage
Monitoring & Operations:
- docs/METRICS.md -- Prometheus metrics reference
- docs/EXPORTER.md -- Prometheus exporter setup
- docs/RTO.md -- RTO/RPO analysis
- docs/DRILL.md -- DR drill testing
- docs/CATALOG.md -- Backup catalog
Deployment:
- docs/DOCKER.md -- Docker deployment
- docs/SYSTEMD.md -- Systemd installation & scheduling
- docs/TROUBLESHOOTING.md -- Common issues & solutions
Reference:
- SECURITY.md -- Security considerations
- CONTRIBUTING.md -- Contribution guidelines
- CHANGELOG.md -- Version history
- docs/tui-features.md -- TUI feature reference
dbbackup is open source and free to use. Behind it stands UUXO — a team with years of hands-on experience as IT administrators, database operators, and consultants across enterprise environments. dbbackup was born from real-world pain: fragile backup scripts, silent failures discovered too late, and disaster recovery plans that existed only on paper. Every feature in this tool addresses a problem we encountered in production.
What we offer:
| Service | Description |
|---|---|
| Backup Strategy & DR Planning | Architecture review, RTO/RPO analysis, disaster recovery planning, backup validation workflows |
| Deployment & Integration | dbbackup setup, Ansible/Systemd integration, Prometheus monitoring, cloud storage configuration |
| Support Contracts | SLA-based support, priority bugfixes, direct communication, upgrade assistance |
| Training | Hands-on workshops for operations teams, backup best practices, compliance preparation |
We have seen what goes wrong when backups are an afterthought — corrupted dumps nobody tested, retention policies that deleted the only good copy, restore procedures that took 10x longer than expected. If your databases matter, your backup strategy deserves the same attention as your application code.
Contact: info@uuxo.net
Apache License 2.0 — see LICENSE. Free for everyone: individuals, startups, enterprises. No restrictions on commercial use.