From f0c596c427cc591148634d31cbe521579fc462ff Mon Sep 17 00:00:00 2001 From: Kevin Fenzi Date: Mon, 8 Oct 2018 17:40:46 +0000 Subject: [PATCH] Try and make a public anitya dump with the right tables. --- .../files/backup-database.anitya | 16 ++++++++++++++++ .../files/cron-backup-anitya-public | 1 + roles/postgresql_server/tasks/main.yml | 12 ++++++++++++ .../postgresql_server/templates/backup-database | 16 ++++++++++++++++ scripts/public-db-copy | 2 +- 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 roles/postgresql_server/files/backup-database.anitya create mode 100644 roles/postgresql_server/files/cron-backup-anitya-public create mode 100644 roles/postgresql_server/templates/backup-database diff --git a/roles/postgresql_server/files/backup-database.anitya b/roles/postgresql_server/files/backup-database.anitya new file mode 100644 index 0000000000..c28f31b288 --- /dev/null +++ b/roles/postgresql_server/files/backup-database.anitya @@ -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=anitya + +# 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 -T users -T tokens -T 'social*' -T sessions -C $DB | /usr/bin/pxz -T4 > /backups/$DB-public-$(date +%F).dump.xz + +# Also, delete the backup from a few days ago. +rm -f /backups/$DB-public-$(date --date="1 days ago" +%F).dump.xz diff --git a/roles/postgresql_server/files/cron-backup-anitya-public b/roles/postgresql_server/files/cron-backup-anitya-public new file mode 100644 index 0000000000..e120fbbca8 --- /dev/null +++ b/roles/postgresql_server/files/cron-backup-anitya-public @@ -0,0 +1 @@ +0 0 * * * postgres /usr/local/bin/backup-database.anitya diff --git a/roles/postgresql_server/tasks/main.yml b/roles/postgresql_server/tasks/main.yml index 35c3fea0e0..88912f39f6 100644 --- a/roles/postgresql_server/tasks/main.yml +++ b/roles/postgresql_server/tasks/main.yml @@ -84,6 +84,18 @@ 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') + +- name: Copy over anitya publib backup cron + copy: src=cron-backup-anitya-public dest=/etc/cron.d/cron-backup-anitya-public mode=0755 + tags: + - postgresql + when: inventory_hostname.startswith('db01.phx2') + - name: Set up some cronjobs to backup databases as configured template: > src=cron-backup-database diff --git a/roles/postgresql_server/templates/backup-database b/roles/postgresql_server/templates/backup-database new file mode 100644 index 0000000000..9e43546988 --- /dev/null +++ b/roles/postgresql_server/templates/backup-database @@ -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 -T4 > /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/scripts/public-db-copy b/scripts/public-db-copy index 07dead9b8a..f7e4a0152e 100755 --- a/scripts/public-db-copy +++ b/scripts/public-db-copy @@ -10,7 +10,7 @@ scp db01.phx2.fedoraproject.org:/backups/pkgdb2-$(date +%F).dump.xz /srv/web/inf scp db01.phx2.fedoraproject.org:/backups/koschei-$(date +%F).dump.xz /srv/web/infra/db-dumps/koschei.dump.xz scp db01.phx2.fedoraproject.org:/backups/bodhi2-$(date +%F).dump.xz /srv/web/infra/db-dumps/bodhi2.dump.xz scp db01.phx2.fedoraproject.org:/backups/pdc-$(date +%F).dump.xz /srv/web/infra/db-dumps/pdc.dump.xz -scp db01.phx2.fedoraproject.org:/backups/anitya-$(date +%F).dump.xz /srv/web/infra/db-dumps/anitya.dump.xz +scp db01.phx2.fedoraproject.org:/backups/anitya-public-$(date +%F).dump.xz /srv/web/infra/db-dumps/anitya.dump.xz scp db01.phx2.fedoraproject.org:/backups/mailman-$(date +%F).dump.xz /srv/web/infra/db-dumps/mailman.dump.xz scp db01.phx2.fedoraproject.org:/backups/mbs-$(date +%F).dump.xz /srv/web/infra/db-dumps/mbs.dump.xz scp db01.phx2.fedoraproject.org:/backups/odcs-$(date +%F).dump.xz /srv/web/infra/db-dumps/odcs.dump.xz