#!/bin/bash DB=abc MUSER=root MPASS=abcdE123321 BAKFILE=/application/mysql/bin/mysqldump MSQL=/application/mysql/bin/mysql RSYNC_IP=192.168.189.62 RSYNC_USER=rsync_backup RSYNC_PASS="--password-file=/etc/rsync.password" RSYNC_MOD=backup RSYNC_DEST="$RSYNC_USER@$RSYNC_IP::$RSYNC_MOD" GTIDCMD="show variables like '%gtid_mode%';" BAKDIR=/backup/mysql Date=$(date +%F) SQLFILE=${BAKDIR}/$DB\_$Date.sql GTIDPAR="--flush-logs --set-gtid-purged=OFF" function bakdata() { clear date mkdir -p /backup/mysql echo -e "\033[31m 开始数据备份..........\033[0m" sleep 2 #检测Mysql 有没有开启GTID $MSQL -u$MUSER -p$MPASS -e "$GTIDCMD" 2>/tmp/sec.log|grep "ON" >/dev/null #判断GTID是否开启,分别执行不同的备份命令。 if [ $? -eq 0 ];then $BAKFILE -u$MUSER -p$MPASS "$GTIDPAR" $DB >$SQLFILE 2>/tmp/bak.log if [ $? -ne 0 ];then echo "备份有问题,日志文件 /tmp/bak.log 。" exit else echo -e "\033[31m 数据备份完成。\033[0m" fi else $BAKFILE -u$MUSER -p$MPASS $DB >$SQLFILE 2>/tmp/bak.log if [ $? -ne 0 ];then echo "备份有问题,日志文件 /tmp/bak.log 。" exit else echo -e "\033[31m 数据备份完成。\033[0m" fi fi } function chkdata() { #生成校验文件的flag文件 cd $BAKDIR md5sum $DB\_$Date.sql>./md5_$DB\_$Date } function rsyncdata() { echo -e "\033[31m 开始数据同步传输..........\033[0m" sleep 2 #将备份的文件同步到Rsync 服务器 rsync -auzP --delete $BAKDIR/ $RSYNC_DEST $RSYNC_PASS >/tmp/rsy.log 2>&1 if [ $? -ne 0 ];then echo "Rsync 有问题,日志文件/tmp/rsync.log ." exit else echo -e "\033[31m Rsync 数据同步完成。\033[0m" fi } bakdata chkdata rsyncdata #本地备份文件保留三天 find $BAKDIR -mtime +3|xargs rm -rf date