diff --git a/roles/postgresql_server/files/backup-database.db-datanommer02 b/roles/postgresql_server/files/backup-database.db-datanommer02 new file mode 100644 index 0000000000..511cd0ad3a --- /dev/null +++ b/roles/postgresql_server/files/backup-database.db-datanommer02 @@ -0,0 +1,16 @@ +#!/bin/bash +# Backup a database *locally* to /backups/. + +# Sleep a bit so we do not have a thundering herd on db hosts +sleep $[ ( $RANDOM % 7200 ) + 1 ]s + +DB=$1 + +# Make our latest backup +# Make it use a limited number of threads because pxz will use all the +# cpus which causes pg_dump to starve which causes... + +/usr/bin/pg_dump --exclude-table-data=sessions -C $DB | /usr/bin/pxz -T8 > /backups/$DB-$(date +%F).dump.xz + +# Also, delete the backup from a few days ago. +rm -f /backups/$DB-$(date --date="1 days ago" +%F).dump.xz diff --git a/roles/postgresql_server/tasks/main.yml b/roles/postgresql_server/tasks/main.yml index d159c208e0..4d2612a4bc 100644 --- a/roles/postgresql_server/tasks/main.yml +++ b/roles/postgresql_server/tasks/main.yml @@ -138,7 +138,7 @@ - name: Copy over backup scriplet copy: src=backup-database dest=/usr/local/bin/backup-database mode=0755 - when: not inventory_hostname.startswith('db-koji01.iad2') + when: not inventory_hostname.startswith(('db-koji01.iad2','db-datanommer')) tags: - postgresql @@ -148,17 +148,23 @@ tags: - postgresql +- name: Copy over backup scriplet + copy: src=backup-database.db-datanommer02 dest=/usr/local/bin/backup-database mode=0755 + when: inventory_hostname.startswith('db-datanommer02.iad2') + tags: + - postgresql + - name: Copy over anitya public backup scriplet copy: src=backup-database.anitya dest=/usr/local/bin/backup-database.anitya mode=0755 tags: - postgresql when: inventory_hostname.startswith('db01.phx2') or inventory_hostname.startswith('db01.iad2') -- name: Copy over anitya publib backup cron +- name: Copy over anitya public backup cron copy: src=cron-backup-anitya-public dest=/etc/cron.d/cron-backup-anitya-public mode=0644 tags: - postgresql - when: inventory_hostname.startswith('db01.phx2') or inventory_hostname.startswith('db01.iad2') + when: inventory_hostname.startswith('db01.iad2') - name: Set up some cronjobs to backup databases as configured template: > diff --git a/roles/postgresql_server/templates/cron-backup-database b/roles/postgresql_server/templates/cron-backup-database index 24ef3de6b0..777d6e370b 100644 --- a/roles/postgresql_server/templates/cron-backup-database +++ b/roles/postgresql_server/templates/cron-backup-database @@ -1,5 +1,5 @@ {% if inventory_hostname == 'db-datanommer02.iad2.fedoraproject.org' %} -0 0 * * * postgres /usr/local/bin/backup-database {{ item }} |& grep -Ev 'warning:|hypertable|chunk|restore|data-only' +0 0 * * * postgres /usr/local/bin/backup-database {{ item }} |& grep -Ev 'warning:|hypertable|chunk|restore|data-only|continuous_agg' {% else %} 0 0 * * * postgres /usr/local/bin/backup-database {{ item }} {% endif %}