shell脚本实战之mysql-物理备份实现周内备份策略
2023-12-13 23:58:18
一.shell脚本要求
# 数据库备份脚本方式: 物理备份
# 工具:xtrabackup过程
# 需求1:不允许有任何的安在脚本中,
# 需求2:在脚本中,不允许有任何的交互式代码容,使用日志记录
# 需求3:在脚本中,不允许有任何输出
# 需求4:每周为一个循环周期,1全备、2增量、3增量、4差异、5增量、6增量、7差异,
# 自动检测执行报错,邮件告敬
#下载工具yum -y install percona-xtrabackup-24.x86_64
二.环境
1.备份的主机上需要自己手动安装xtrabackup工具
????????安装xtrabackup
#下载xtrabackup的yum源
wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
??rpm -ivh percona-release-0.1-4.noarch.rpm
#打开xtrabackup的yum源?
vim percona-release.repo
#2.下载xtrabackup 工具
yum -y install percona-xtrabackup-24.x86_64
?三.脚本实施
vim mysqlbaup.sh
#/bin/bash
#时间同步
ntpdate ntp.aliyun.com >>/dev/null
user=root
password="Qianfeng@123"
timestamp=$(date +"%Y-%m-%d_%H-%M-%S") ?
#从放备份日志 /xtrabackup/xtrabackup-timestamp.log
#备份目录
mkdir -p ?/xtrabackup/z{1..7} &>>/dev/null
#周一完全 #
z1() {
? ? # touch /xtrabackup/xtrabackup.log >>/dev/null
? ? innobackupex --user=$user --password=$password /xtrabackup/z1 &>> /xtrabackup/xtrabackup-$timestamp.log
? ? z1=`ls -t /xtrabackup/z1/ | awk ?'NR==1 {print $1}'` &>>/dev/null
}
#周二 增量
z2() {
? ? innobackupex --user=$user --password=$password --incremental /xtrabackup/z2 --incremental-basedir=/xtrabackup/z1/$z1 &>> /xtrabackup/xtrabackup--$timestamp.log
? ? z2=`ls -t /xtrabackup/z2/ | awk ?'NR==1 {print $1}'` &>>/dev/null
}
#周三 增量
z3() {
? ? innobackupex --user=$user --password=$password --incremental /xtrabackup/z3 --incremental-basedir=/xtrabackup/z2/$z2 &>> /xtrabackup/xtrabackup-$timestamp.log
? ? z3=`ls -t /xtrabackup/z3/ | awk ?'NR==1 {print $1}'` &>>/dev/null
}
#周四 差异
z4() {
? ? innobackupex --user=$user --password=$password --incremental /xtrabackup/z4 --incremental-basedir=/xtrabackup/z1/$z1 &>> /xtrabackup/xtrabackup-$timestamp.log
? ? z4=`ls -t /xtrabackup/z4/ | awk ?'NR==1 {print $1}'` &>>/dev/null
}
#周五 增量
z5() {
? ? innobackupex --user=$user --password=$password --incremental /xtrabackup/z5 --incremental-basedir=/xtrabackup/z4/$z4 &>> /xtrabackup/xtrabackup-$timestamp.log
? ? z5=`ls -t /xtrabackup/z5/ | awk ?'NR==1 {print $1}'` &>>/dev/null
}
#周六 增量
z6() {
? ? innobackupex --user=$user --password=$password --incremental /xtrabackup/z6 --incremental-basedir=/xtrabackup/z5/$z5 &>> /xtrabackup/xtrabackup-$timestamp.log
? ? z6=`ls -t /xtrabackup/z6/ | awk ?'NR==1 {print $1}'` &>>/dev/null
}
#周天 差异
z7() {
? ? innobackupex --user=$user --password=$password --incremental /xtrabackup/z7 --incremental-basedir=/xtrabackup/z1/$z1 &>> /xtrabackup/xtrabackup-$timestamp.log
}
#星期判断 #星期一...
function show_date() { ?
? ? date +"%A" ?>>/dev/null
} ?
show_date
time=`date +"%A"` ?
if [ $time == "星期一" ];then
? ? z1
elif [ $time == "星期二" ];then
? ? z2
elif [ $time == "星期三" ];then
? ? z3
elif [ $time == "星期四" ];then
? ? z4
elif [ $time == "星期五" ];then
? ? z5
elif [ $time == "星期六" ];then
? ? z6
else z7
fi
#报警发邮箱
warn() { ?
? ? grep "successful" /xtrabackup/xtrabackup-$timestamp.log > /dev/null ?
? ? #当日志文件里没有successful时,也就是说它失败了
if [ $? -ne 0 ]; then ?
? ? ? ? cat "/xtrabackup/xtrabackup-$timestamp.log" | mailx -s "报警出错。及时排错" 22001399@qq.com
? ? fi ?
} ?
warn
注意:脚本里的星期取值是基于,终端里的取得中文状态,也就是说,你在终端里的返回值是中文的。
四.结果输出
#与君共勉,共同进步
文章来源:https://blog.csdn.net/weixin_69654831/article/details/134822860
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!