数据库备份及集成钉钉报警
#!/bin/bash
# BEGIN CONFIGURATION ==========================================================
BACKUP_DIR="/data/backup" # The directory in which you want backups placed
KEEP_MYSQL="3" # How many days worth of mysql dumps to keep
MYSQL_HOST=`egrep -E "IPADDR=" /etc/sysconfig/network-scripts/ifcfg-* |egrep -v 127.0.0.1 |cut -f2 -d ":" |tr -d "IPADDR=" |sed 's@\"@@g' |head -n1`
MYSQL_USER="test"
MYSQL_PASS=""
TOKEN=""
MYSQL_BACKUP_DIR="$BACKUP_DIR"
#sendemail="$(which sendEmail)"
THE_DATE="$(date '+%Y-%m-%d')"
MYSQL_PATH="$(which mysql)"
MYSQLDUMP_PATH="$(which mysqldump)"
FIND_PATH="$(which find)"
TAR_PATH="$(which tar)"
SCP_PATH="$(which scp)"
# END CONFIGURATION ============================================================
# Announce the backup time
echo "Backup Started: $(date)"
# Create the backup dirs if they don't exist
if [[ ! -d $BACKUP_DIR ]]
then
mkdir -p "$BACKUP_DIR"
fi
if [[ ! -d $MYSQL_BACKUP_DIR ]]
then
mkdir -p "$MYSQL_BACKUP_DIR"
fi
cd $MYSQL_BACKUP_DIR
# Get a list of mysql databases and dump them one by one
echo "-----------------xtrabackup beginning-------------------"
$MYSQLDUMP_PATH --host=$MYSQL_HOST --user=$MYSQL_USER --password=$MYSQL_PASS --single-transaction --set-gtid-purged=OFF --master-data=1 -A > ${MYSQL_HOST}-${THE_DATE}.sql
if [ "$?" != 0 ] ; then
head -n 30 /data/backup/2.log > fialed.log
#find ip
#IP=$(/sbin/ifconfig -a| grep inet | grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")
curl -H "Content-Type: application/json;charset='utf-8'" -X POST -d "{\"text\": {\"content\": \"$MYSQL_HOST 数据库备份失败\"},\"at\": {\"atMobiles\":\"\",\"isAtAll\": true},\"msgtype\": \"text\"}" "https://oapi.dingtalk.com/robot/send?access_token=$token"
exit;
fi
$TAR_PATH -czvf ${MYSQL_HOST}-${THE_DATE}.tar.gz ${MYSQL_HOST}-${THE_DATE}.sql
$SCP_PATH ${MYSQL_HOST}-${THE_DATE}.tar.gz 10.0.74.10:/data02/allbak-dba
rm -rf ${MYSQL_HOST}-${THE_DATE}.tar.gz
# Delete old dumps
echo "------------------------------------"
echo "Deleting old backups..."
# List dumps to be deleted to stdout (for report)
#cd $BACKUP_DIR
# Delete dumps older than specified number of days
$FIND_PATH $BACKUP_DIR -mtime +$KEEP_MYSQL -name "${MYSQL_HOST}-*" -type f -exec rm -rf {} \;
# Announce the completion time
echo "------------------------------------"
echo "Backup Completed: $(date)"