#!/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-admin
[ -d $BACKUP_DIR ] || mkdir $BACKUP_DIR

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

CHRBIN=/usr/sbin/chroot
CHRDIR=/chroot/admin

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 | $CHRBIN $CHRDIR mysql --defaults-file=$MYCONF -Bs )"

# turn off slow query log
$CHRBIN $CHRDIR 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
	$CHRBIN $CHRDIR mysqldump --defaults-file=$MYCONF $db -Q -R --triggers --add-drop-table --add-locks --force --quick --disable-keys --lock-tables > $FILE 2>/dev/null

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

# turn slow query log back on
$CHRBIN $CHRDIR 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
