#!/bin/bash
# IPSERVERONE MySQL Remote Backup
set -x
NOTIFY_EMAIL="khairul@ipserverone.com, support@ipserverone.com"
DEST_IP="XX.XX.XX.XX" # Backup Server WAN
DEST_PRIVATE_IP="XX.XX.XX.XX" # Backup Server LAN
DEST_LOGIN="xx" # username
DEST_PATH="xx" # partition
CLIENT_SERVER_NAME="$DEST_LOGIN.small-dns.com" # server name
# Telegram Bot Token and Group ID
TELEGRAM_TOKEN="391514041:AAEvDNkJE5kVbD8upwq3gHvyUV6NbaRP5rk"
TELEGRAM_GROUP="-173985167"
xPreviousBackupDate=`date --date="now + -7 days" +%Y-%m-%d`
xDate=`date +%Y-%m-%d`
START_TIME=`date "+%F %T"`
echo $START_TIME > /ips1/start.time
touch /ips1/mysqldump.pid
ssh -p 9321 $DEST_LOGIN@$DEST_PRIVATE_IP "
mkdir /$DEST_PATH/$DEST_LOGIN/mysql/$xDate
echo $xDate > /$DEST_PATH/$DEST_LOGIN/mysql/$xDate/mysqldump.pid
rm -Rf /$DEST_PATH/$DEST_LOGIN/mysql/$xPreviousBackupDate
"
USER="da_admin"
PASSWD=`cat /usr/local/directadmin/conf/mysql.conf |grep pass |awk -F'=' {'print$2'}`
databases=` mysql --user=$USER --password=$PASSWD -e "SHOW DATABASES;" | tr -d "| " |grep -v Database`
for db in $databases;
do
echo $db
mysqldump --opt --skip-lock-tables --user=$USER --password=$PASSWD --databases $db | gzip -f | ssh -p 9321 $DEST_LOGIN@$DEST_PRIVATE_IP "cat > /$DEST_PATH/$DEST_LOGIN/mysql/$xDate/$db.sql.gz"
done
END_TIME=`date "+%F %T"`
echo $END_TIME > /ips1/end.time
# Check latest backup date at destination server
ssh $DEST_PRIVATE_IP -p 9321 -l $DEST_LOGIN "cat /$DEST_PATH/$DEST_LOGIN/mysql/$xDate/mysqldump.pid" > /ips1/backup_date.tmp
bDate=$( cat /ips1/backup_date.tmp )
if [ "$xDate" == "$bDate" ]
then
echo "Backup Success!"
else
echo "Backup Failed!"
/usr/bin/curl -s -X POST https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage -d chat_id=$TELEGRAM_GROUP -d text="MySQL Backup for $CLIENT_SERVER_NAME Failed"
echo -e "From: $DEST_LOGIN@small-dns.com\nTo: $NOTIFY_EMAIL\nSubject: MySQL Backup for $CLIENT_SERVER_NAME Failed\n\nMySQL Backup for $CLIENT_SERVER_NAME Failed" | /usr/sbin/sendmail $NOTIFY_EMAIL
fi
rm -f /ips1/start.time /ips1/end.time /ips1/backup_date.tmp /ips1/mysqldump.pid
exit 0