Destinations
Anything that speaks S3: AWS, Backblaze B2, Wasabi, Cloudflare R2, MinIO. Leave the endpoint empty for AWS itself; give the endpoint URL for everything else. A destination belongs to the organization, so one bucket can take the backups of every database across every server. Removing a destination also clears the schedule of any database pointing at it. Leaving one with a schedule and nowhere to put the result would be a database that looks backed up in the panel and is not — which is the exact state the alerts exist to prevent.Scheduling
Per database: a destination, a cron expression, and how many to keep. The expression is the ordinary five fields.0 3 * * * is three in the
morning. Shipways looks for due backups every hour, so an expression naming any
hour is honoured; naming a minute other than the hour will not run more often
than hourly.
Retention is a count of backups, not days, and old ones are dropped only
after a new one has been checked. A failing backup never takes the last
working one with it.
What a backup run does
1
Dump
mysqldump or pg_dump, compressed, streamed straight to the destination.2
Check what arrived
The part worth having. A dump that failed halfway, a disk that filled, a
pipe that broke: all of them leave a file, and a file in a bucket looks
exactly like a backup until somebody needs it. Anything too small to be a
real dump is refused rather than recorded.
3
Prune
Down to what the database keeps.