diff --git a/roles/mariadb/files/mariadb-backup.sh b/roles/mariadb/files/mariadb-backup.sh new file mode 100755 index 0000000..a658f28 --- /dev/null +++ b/roles/mariadb/files/mariadb-backup.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -eu + +umask 077 + +DESTDIR="/export/backup" +DATE="$(date +%Y-%m-%d)" + +if [ ! -d "$DESTDIR" ]; then + echo "ERR: MariaDB backup directory [${DESTDIR}] does not exist" 1>&2 + exit 1 +fi + +cd "$DESTDIR" && { + find . -xdev -mindepth 2 -maxdepth 2 -type f -mtime +7 \ + -execdir rm -f -- {} \; + find . -xdev -depth -mindepth 1 -maxdepth 1 -type d -empty \ + -execdir rmdir -- {} \; +} + +DESTDIR="${DESTDIR}/${DATE}" +mkdir -p "$DESTDIR" + +for db in $(mysql -e "show databases" -s) ; do + case "$db" in + Database|information_schema|performance_schema) + continue + ;; + esac + mysqldump -E --add-drop-table "$db" | gzip > "${DESTDIR}/${db}.${DATE}.gz" +done