#!/bin/bash

#######################################

if ! [ -f /etc/backup-daily.conf ]; then
	echo "/etc/backup-daily.conf not found"
	exit 4
fi

BACKUP_ROOT=

. /etc/backup-daily.conf

[ -z $BACKUP_ROOT ] && exit 11
[ -d $BACKUP_ROOT ] || exit 21

BACKUP_DIR=$BACKUP_ROOT/mysql
[ -d $BACKUP_DIR ] || mkdir $BACKUP_DIR

#######################################

MYCONF=/etc/mysql/debian.cnf

[ -d $BACKUP_DIR/tmp ] && rm -r $BACKUP_DIR/tmp
mkdir $BACKUP_DIR/tmp

SQL="SELECT schema_name FROM information_schema.schemata WHERE"
SQL="${SQL} schema_name NOT IN ('information_schema','performance_schema');"

DBS="$(echo $SQL | mysql --defaults-file=$MYCONF -Bs )"

# turn off slow query log
mysql --defaults-file=$MYCONF -Bse 'SET GLOBAL slow_query_log = OFF;'

# save databases into separate files
for db in $DBS
do
    FILE=$BACKUP_DIR/tmp/$db.sql
    [ -f $FILE.gz ] && rm $FILE.gz
    [ -f $FILE ] && rm $FILE
    mysqldump --defaults-file=$MYCONF $db -Q -R --triggers --add-drop-table --add-locks --force --quick --disable-keys --lock-tables -r $FILE 2>/dev/null

	gzip --rsyncable $FILE
	chown 0:0 $FILE.gz
    chmod 0600 $FILE.gz
done

# turn slow query log back on
mysql --defaults-file=$MYCONF -Bse 'SET GLOBAL slow_query_log = ON;'

[ -d $BACKUP_DIR/current ] && rm -r $BACKUP_DIR/current
mv $BACKUP_DIR/tmp $BACKUP_DIR/current

exit 0
