#!/bin/bash

BKP_DIR="/var/backups/ee-mmo-backup/mysql"
DATE=$(date +%Y%m%d-%H%M)
DB_EXCL=""
BKP_MIN=720
MSG=

# pre
systemctl -q is-enabled mariadb 2>/dev/null || { echo mariadb removed or disabled; exit 0; }
systemctl -q is-active mariadb || { echo FIXME : mariadb not running; exit 1; }

# checks
[ $EUID -eq 0 ] || { echo Must be launched by root; exit 1; }
mkdir -p -m 750 $BKP_DIR || { echo Unable to mkdir $BKP_DIR; exit 1; }
ln -sf $BKP_DIR /var/backups || { echo Unable to symlink $BKP_DIR in /var/backups; exit 1; }
cd $BKP_DIR || { echo Unable to cd in $BKP_DIR; exit 1; }
mysql -e '\q'  &>/dev/null
if [ $? -eq 1 ]
then
	[ -s /root/.my.cnf ] || { echo "Can not connect and credentials file missing"; exit 1; }
fi

# dumps
DB_LIST="$(mysql -N -e'show databases' mysql | grep -Ev '(lost\+found|(information|performance)_schema)')"

[ -z "$DB_LIST" ] && { echo DB_LIST empty; exit 1; }

for db in $DB_LIST
do
	no=0
	for nodb in $DB_EXCL
	do
		[[ $db == $nodb ]] && no=1
	done
	[[ $no == 1 ]] && continue

	mysqldump -E $db | gzip > ${db}_${DATE}.sql.gz || MSG="$MSG\nUnable to dump DB $db"
done

# cleanup
find -maxdepth 1 -type f -name '*.sql.gz' -mmin +$BKP_MIN -delete || MSG="$MSG\nUnable to purge old dumps"

# output
[ -z "$MSG" ] || { echo -e $MSG; exit 1; }
