Analytics & Cookies

We use self-hosted Matomo analytics. By default we measure anonymously with no cookies. Enable cookies to give us a clearer picture and help us improve your experience. You can change this anytime.

Database Backup

Database Backup - SQL Server, Oracle, PostgreSQL

Automated backup for MySQL and MariaDB, PostgreSQL, MongoDB, Redis and SQLite. SQL Server and Oracle are application-consistent. Configure connections, set granular retention policies, and monitor every job from a centralized dashboard. Backups write to ZFS - snapshots preserve history, compression is native, no extra configuration needed.

Supported Database Engines

MySQL / MariaDB
mysqldump · Percona, TiDB and managed MySQL too
PostgreSQL
pg_dump · managed Postgres too
MongoDB
mongodump archive
SQL Server
2016+ · VSS-integrated
Oracle
11g+ · RMAN-based
Redis
Redis family
SQLite
File-based databases
Consistent Dumps
Each backup uses the engine's own dump tool, so the result is a consistent copy you can restore. No manual shutdown needed.
Connection Discovery
Test Connection discovers all databases on the server before saving. Credentials verified, available databases listed - no manual inventory needed.
Granular Restore
Recover an entire database, specific tables or collections, or any point-in-time snapshot. Restore into a throwaway container to test first.
Encryption & Compliance
AES-256 at rest, TLS 1.3 in transit. Tamper-proof audit log. Retention policies you set to support your own compliance work.

Managing Connections

Add a connection with name, type, host, port, username, and password. Leave the database field empty to back up all databases on the server, or specify a single database name. Default ports are detected automatically - 3306 for MySQL, 5432 for PostgreSQL, 27017 for MongoDB.

Always click Test Connection before saving. The test verifies credentials, confirms network access, and discovers all available databases - the success message shows exactly how many databases were found.

SSL/TLS supported for remote and cloud databases
Backup all databases or specify a single one
Delete connection removes config only - existing backups preserved
Manual trigger (▶) creates immediate backup using saved policy
Connection Example
Nameprod-mysql-01
TypeMySQL 8.0
Host10.0.1.50
Port3306 (auto)
Usershadowcradle_backup
Database(all databases)
SSLEnabled
✓ Connection verified - 14 databases discovered

Backup Policies & Scheduling

Policies define what gets backed up, when, how long it's kept, and where it goes. Backups are stored in the ZFS pool you select - at /pool/appbackup/database_*.

Hourly
Every hour at :00. Best for critical OLTP databases where data changes frequently.
Daily
Once per day at a specified time - typically 2–4 AM during low-activity periods.
Weekly
Specified day(s) of the week at a specified time. Good for lower-churn databases.
Monthly
Specified day of the month (1–28) - for archival or compliance-driven snapshots.
Custom Cron
Full cron expression (minute hour day month weekday) for advanced scheduling requirements.
Policy Configuration Fields
Policy NameAuto-suggested from connection name - edit to describe the purpose
ZFS PoolSelect which pool stores the backup files
DatabasesSelect specific databases or include all discovered databases
ScheduleRecurring (hourly → monthly → cron) or one-time
RetentionSimple (days) or Granular (hourly/daily/weekly/monthly/yearly tiers)
NotificationsEmail alerts on success and/or failure
Pre/Post ScriptsOptional scripts to run before or after backup

Granular Retention Policies

Keep different numbers of backups at different time intervals. A single granular policy can cover the last 24 hours in detail and the last 3 years in archive - without keeping every hourly backup forever.

Recommended for production: Hourly=24, Daily=7, Weekly=4, Monthly=6 - gives you recent hourly snapshots plus rolling weekly and monthly archives.

Example: Production Database Retention
HourlyKeep 24 · Last 24 hours
DailyKeep 7 · Last 7 days
WeeklyKeep 4 · Last 4 weeks
MonthlyKeep 6 · Last 6 months
YearlyKeep 3 · Last 3 years

How Database Backup Works

From connection to ZFS snapshot to restore - all in one appliance.

MySQL / MariaDB
PostgreSQL
MongoDB
SQL Server
Oracle
Redis
SQLite
mysqldump · pg_dump · mongodump · VSS · SSL/TLS
ShadowCradle Appliance
ZFS snapshots · AES-256 encryption · Granular index · Policy-driven retention
Peer Replication
Replicate to another appliance for multi-site DR
Cloud Archive
Long-term retention in S3, Wasabi, or Backblaze B2
Granular Restore
Row, table, database, or exact point-in-time

Backup History

Every backup job is logged with connection name, database type, status, start time, and file size. Filter by any column to find exactly what you need.

Connection
Type
Started
Status
Size
prod-mysql-01
MySQL
Today 2:00 AM
Completed
847 MB
analytics-pg
PostgreSQL
Today 2:05 AM
Completed
2.1 GB
app-mongo
MongoDB
Today 2:12 AM
Running
-
staging-mysql
MySQL
Yesterday 2:00 AM
Failed
-

Common Issues

Connection test fails
Verify host is reachable, database service is running, and firewall allows connections from appliance. Check user has SELECT and SHOW DATABASES privileges.
Backup stuck in "running"
Large databases take time. Check backend logs and available disk space. For databases over 100 GB, consider selective table backups or longer timeout windows.
Cannot save policy
Ensure at least one ZFS pool exists and is online. Verify all required fields are filled - policy name, pool, schedule frequency for recurring backups.
Manual trigger fails
Configure a backup policy first - the play button uses policy settings to execute. The trigger button is not available until a policy is saved.

Best Practices

Always test connections before saving - verifies credentials and discovers databases
ZFS handles compression natively - no need to enable application-level compression
Use granular retention for production: Hourly=24, Daily=7, Weekly=4, Monthly=6
Schedule backups during low-activity periods, typically 2–4 AM
Enable failure notifications so you are alerted immediately if a job fails
Test restore procedures regularly to verify your backups are actually usable

Related reading

Protect Every Database You Run

MySQL, PostgreSQL, MongoDB - automated backup with granular retention, ZFS storage, and point-in-time restore.

Free for limited backups