Add docker image prodrigestivill/postgres-backup-local and set to run on a schedule, backup those dumps on another schedule @[email protected] @[email protected] (also recommended additionally backing up the running database and trying that first during a restore)
New catagories
Snapshot it, seems to act like a power outage to the database
ZFS snapshot -> backup that @[email protected] (real world recovery experience shows that databases act like they're recovering from a power outage and it works)
(I assume btrfs snapshot will also work)
One liner self-contained command for crontab
One-liner crontab that prunes to maintain 7 backups, dump Postgres via pg_dumpall, zips, then rclone them @[email protected]
Turns out Borgmatic has database hooks
Borgmatic with its explicit support for databases via hooks (autorestic has hooks but it looks like you have to make database controls yourself) @[email protected]
I've searched this long and hard and I haven't really seen a good consensus that made sense. The SEO is really slowing me on this one, stuff like "restic backup database" gets me garbage.
I've got databases in docker containers in LXC containers, but that shouldn't matter (I think).
me-me about containers in containers
I've seen:
Just backup the databases like everything else, they're "transactional" so it's cool
Some extra docker image to load in with everything else that shuts down the databases in docker so they can be backed up
Shut down all database containers while the backup happens
A long ass backup script that shuts down containers, backs them up, and then moves to the next in the script
Some mythical mentions of "database should have a command to do a live snapshot, git gud"
None seem turnkey except for the first, but since so many other options exist I have a feeling the first option isn't something you can rest easy with.
I'd like to minimize backup down times obviously, like what if the backup for whatever reason takes a long time? I'd denial of service myself trying to backup my service.
I'd also like to avoid a "long ass backup script" cause autorestic/borgmatic seem so nice to use. I could, but I'd be sad.
So, what do y'all do to backup docker databases with backup programs like Borg/Restic?
While there's probably a better way of doing it via the docker zfs driver, I just make a datastore per stack under the hypervisor, mount the datastore into the docker LXC, and make everything bind mount within that mountpoint, then snapshot and backup via Sanoid to a couple of remote ZFS pools, one local and one on zfs.rent.
I've had to restore our mailserver (mysql) and nextcloud (postgres) and they both act as if the power went out, recovering via their own journaling systems. I've not found any inconsistencies on recovery, even when I've done a test restore on a snapshot that's been backed up during known hard activitiy. I trust both databases for their recovery methods, others maybe not so much. But test that for yourself.