#!/bin/bash

BKP_DIR='/var/backups/eehosting-backup/mysql'
DATE=$(date +%Y%m%d-%H%M)
DB_EXCL=
MSG=
CPU_COUNT=$(grep -c ^processor /proc/cpuinfo)

# For mariabackup |gzip error handling
set -o pipefail

# checks
[ $EUID -eq 0 ] || { echo Must be launched by root; exit 1; }
mkdir -p $BKP_DIR || { echo Unable to mkdir $BKP_DIR; exit 1; }
chmod 750 $BKP_DIR || { echo Unable to chmod $BKP_DIR; exit 1; }
cd $BKP_DIR || { echo Unable to cd in $BKP_DIR; exit 1; }
[ -s /root/.my.cnf ] || { echo "Mysql credentials missing"; exit 1; }

# cleanup
find $BKP_DIR -maxdepth 1 -type f -delete || MSG="$MSG\nUnable to purge old dumps"

# dumps
DB_LIST="$(mysql -N -e'show databases' mysql | grep -Eiv '(lost|(information|performance)_schema)')"
for db in $DB_LIST
do
	no=0
	for nodb in $DB_EXCL
		do
			[[ $db == $nodb ]] && no=1
		done
	[[ $no == 1 ]] && continue

	mariabackup --backup --databases="$db" --parallel=$CPU_COUNT --stream=xbstream | gzip -c > $BKP_DIR/${db}_${DATE}.mariabackup || MSG="$MSG\nUnable to dump DB $db"
done

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