加入收藏 | 设为首页 | 会员中心 | 我要投稿 海洋资讯信息网 (https://www.dahaijun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL数据库全库备份及加量备份脚本

发布时间:2022-02-24 12:35:52 所属栏目:MySql教程 来源:互联网
导读:脚本网盘链接下载。 1、全库备份脚本如下: #!/bin/bash ############### 定义默认值 ################# user=root passwd=123.com host=localhost today=`date +%F` dump_cmd=/usr/local/mysql/bin/mysqldump full_backupdir=/opt/database/full_backup/ em
       脚本网盘链接下载。
 
1、全库备份脚本如下:
#!/bin/bash
############### 定义默认值   #################
user='root'
passwd='123.com'
host='localhost'
today=`date '+%F'`
dump_cmd='/usr/local/mysql/bin/mysqldump'
full_backupdir="/opt/database/full_backup/"
email='916551516@qq.com'
###################   加载变量并定义脚本用法  ###################
 
USAGE(){
echo -e "33[33m
     $0 脚本用法:
          -u: 指定备份用户(默认是root)
          -p: 指定用户密码(默认密码为“123.com”)
          -h: 指定备份主机(默认是本机)
          -d: 指定要备份的数据库(默认备份所有库)
 33[0m"
}
 
if [[ $1 == '--help' || $1 == '-h' ]];then
    USAGE
    exit 0
fi
 
######################   对选项进行赋值       ###################
while getopts ":u:p:h:d:" optname;do
case "$optname" in
"u")
    user=$OPTARG
;;
"p")
    passwd=$OPTARG
;;
"h")
    host=$OPTARG
;;
"d")
    db=$OPTARG
;;
":")
    echo "此选项没有值!"
;;
"*")
    echo "错误信息..."
;;
"?")
    echo "不知道此选项..."
;;
esac
done
  
 
############  对备份状态进行判断  #####################
if [ ${status} -eq 0 ];then
    tar zcf ${sqlname}.tar.gz ./${sqlname}
    rm -f ${sqlname}
###########  如果失败,则发送报警邮件到指定邮箱 ################
else
    echo "备份数据库失败,错误日志如上所示!!!" >> err.log
    mail -s "mysql backup" $email < err.log
fi
 
############  删除二十天前的备份文件  ##############
find . -type f -name "*.tar.gz" -mtime +20 -delete
2、二进制增量备份脚本
#!/bin/bash
####################### 定义初始值  #############################
user='root'
passwd='123.com'
datadir="/usr/local/mysql/data"
backupdir="/opt/database/dailybackup/"
dump_cmd='/usr/local/mysql/bin/mysqlbinlog'
  
nextnum=0        #定义一个初始值为0
backupsum=0
for file in `cat bin_log.index`         #对所有二进制日志文件进行遍历
do
    binlogname=`basename $file`         #获取二进制日志文件名
#如果当前备份的文件数目比总数小(新刷新的二进制文件不需要备份)
    if [ $nextnum -lt $sum ];then   
    [ -f ${backupdir}${binlogname} ] || cp -a ${file} ${backupdir}${binlogname}   #如果备份目录下不存在该二进制文件,则进行copy动作
    let nextnum++      #对备份成功数量进行增加
    fi
done
echo "跳过最新二进制日志文件,备份完成!!!"

(编辑:海洋资讯信息网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!