diff --git a/roles/mariadb_server/files/backup-database b/roles/mariadb_server/files/backup-database new file mode 100644 index 0000000000..ee72e30eeb --- /dev/null +++ b/roles/mariadb_server/files/backup-database @@ -0,0 +1,10 @@ +#!/bin/bash +# Backup a database *locally* to /backups/. + +DB=$1 + +# Make our latest backup +/bin/mysqldump --add-drop-database $DB | /usr/bin/xz > /backups/$DB-$(date +%F).dump.xz + +# Also, delete the backup from a few days ago. +rm -f /backups/$DB-$(date --date="3 days ago" +%F).dump.xz diff --git a/roles/mariadb_server/tasks/main.yml b/roles/mariadb_server/tasks/main.yml index 983b031583..a7bf163184 100644 --- a/roles/mariadb_server/tasks/main.yml +++ b/roles/mariadb_server/tasks/main.yml @@ -27,4 +27,23 @@ - name: create .my.cnf file for future logins template: src=dotmy.cnf.j2 dest=/root/.my.cnf owner=root group=root mode=0700 +- name: Ensure mariadb has a place to backup to + file: dest=/backups state=directory owner=mysql + tags: + - mariadb-server +- name: Copy over backup scriplet + copy: src=backup-database dest=/usr/local/bin/backup-database mode=0755 + tags: + - mariadb-server + +- name: Set up some cronjobs to backup databases as configured + template: > + src=cron-backup-database + dest=/etc/cron.d/cron-backup-database-{{ item }} + with_items: + - "{{ dbs_to_backup }}" + when: dbs_to_backup != [] + tags: + - cron + - mariadb-server diff --git a/roles/mariadb_server/templates/cron-backup-database b/roles/mariadb_server/templates/cron-backup-database new file mode 100644 index 0000000000..d580754680 --- /dev/null +++ b/roles/mariadb_server/templates/cron-backup-database @@ -0,0 +1 @@ +0 0 * * * mysql /usr/local/bin/backup-database {{ item }}