每日shell脚本之自动化备份数据库周期性灾备
使用本脚本前在服务器安装 物理备份工具-xtrabackup
bash
#!/usr/bin/bash
#CSDN :M乔木
#Email:[email protected]
#解释器:这是一个shell脚本
#数据库用户密码
user=数据库用户
passwd=数据库密码
#检查备份情况
bm(){
if [ $? -ne "0" ];then
mail
fi
}
#检查数据库
md=$(systemctl status mysqld &>/dev/null)
if [ $? -ne "0" ];then
echo "备份失败! 原因没安装mysql" &>>/xtdata/xt_log/elog.log
mail
ecit 9
fi
#备份失败邮件
mail(){
sm=$(rpm -qa mailx | awk -F'-' '{print $1}')
if [ -z "${sm}" ];then
yum -y install mailx
fi
echo "备份异常! 请到xtdata目录下查看日志" | mail -s "数据备份异常" -S smtp="smtp服务器域名" -S smtp-auth=login -S smtp-auth-user="发件人邮箱" -S smtp-auth-password="你的授权码" 收件人邮箱
}
#获取当前时间
XQ=$(date +%u)
#日志收集
xt_log(){
xtlog=`ls . | grep /xtdata`
if [ ! -d "${xtlog}" ];then
echo "you"
mkdir -p /xtdata/{星期天,星期一,星期二,星期三,星期四,星期五,星期六,xt_log}
touch /xtdata/xt_log/elog.log
fi
}
#主界面
xt_log
case ${XQ} in
7)
innobackupex --user=${user} -password="${passwd}" /xtdata/星期天/ &>/xtdata/xt_log/elog.log
bm
;;
1)
xqy=`ls /xtdata/星期天/ | sort -nr | head -1`
innobackupex --user=${user} --password="${passwd}" --incremental /xtdata/星期一/ --incremental-basedir=/xtdata/星期天/${xqy} &>/xtdata/xt_log/elog.log
bm
;;
2)
xqy=`ls /xtdata/星期一/ | sort -nr | head -1`
innobackupex --user=${user} --password="${passwd}" --incremental /xtdata/星期二/ --incremental-basedir=/xtdata/星期一/${xqy} &>/xtdata/xt_log/elog.log
bm
;;
3)
xqy=`ls /xtdata/星期天/ | sort -nr | head -1`
innobackupex --user=${user} --password="${passwd}" --incremental /xtdata/星期三/ --incremental-basedir=/xtdata/星期天/${xqy} &>/xtdata/xt_log/elog.log
bm
;;
4)
xqy=`ls /xtdata/星期三/ | sort -nr | head -1`
innobackupex --user=${user} --password="${passwd}" --incremental /xtdata/星期四/ --incremental-basedir=/xtdata/星期三/${xqy} &>/xtdata/xt_log/elog.log
bm
;;
5)
xqy=`ls /xtdata/星期四/ | sort -nr | head -1`
innobackupex --user=${user} --password="${passwd}" --incremental /xtdata/星期五/ --incremental-basedir=/xtdata/星期四/${xqy} &>/xtdata/xt_log/elog.log
bm
;;
6)
xqy=`ls /xtdata/星期三/ | sort -nr | head -1`
innobackupex --user=${user} --password="${passwd}" --incremental /xtdata/星期六/ --incremental-basedir=/xtdata/星期三/${xqy} &>/xtdata/xt_log/elog.log
bm
;;
*)
echo "执行备份任务失败 原因是日期异常" >>/xtdata/xt_log/elog.log
mail
esac