Setup a cron job for regular full PostgreSQL database dumps.
Assumes the local postgres
has password-less access to all databases (this is the default when installing PostgreSQL server).
This requires a cron daemon to already be running. This should be the default on most systems.
Required:
postgresql_backup_dir
: Save backups in this directory
Optional:
postgresql_backup_filename_format
: A filename containing unixdate
format sequences, default{{ ansible_hostname }}-%Y%m%d-%H%M%S.pgdump
. This can be used to automatically overwrite backups on a rolling basis.postgresql_backup_frequency
: This must match one of the standard/etc/cron.*
directories, typically eitherdaily
(default),hourly
,weekly
ormonthly
.postgresql_backup_minimum_expected_size
: The minimum size in bytes of the backup file. The cron job will return an error if the file is smaller than this.
# This will name the backup file /nfs/backups/HOSTNAME-Mon.pgdump
# where Mon will be replaced by the abbreviated day of the week, resulting
# in daily backups on a rolling weekly cycle
- hosts: postgresql-servers
roles:
- role: ome.postgresql_backup
postgresql_backup_dir: /nfs/backups
postgresql_backup_filename_format: "{{ ansible_hostname }}-%a.pgdump"
postgresql_backup_minimum_expected_size: 100000