mysql数据库定时备份脚本(linux mysql数据库备份脚本)

概述

最近梳理了下Oracle、mysql、sqlserver的一些备份情况,关于mysql之前只做了定期备份的脚本,但是并没有把备份是否正确输出为日志,所以前段时间调整了一下脚本,下面分享一下修改后的备份脚本,主要改了几个方面:

1、增加备份日志输出

2、增加备份是否有效判断

3、定期清理过期备份


01

备份脚本内容

存放位置:/home/scripts/mysql_backup.sh

#!/bin/bash
#this is mysqldump auto full backup script
#Copyright by hwb
#date 2019-06-04
backup_path="/data/backup"
user="root"
passwd="fswl@1234"
dbname="fsl_prod"
host="localhost"
dbname2="diaocha_db"
today=`date +"%Y%m%d-%H%M%S"`
sqlname=$dbname$today.sql
sqlname2=$dbname2$today.sql
if [ -e /home/scripts/log_function.sh ]
then
source /home/scripts/log_function.sh
else
echo -e “33[41;37m /home/scripts/log_function.sh is not exist. 33[0m”
exit 1
fi
backup(){
log_correct "开始执行备份脚本,删除14天过期备份"
#backup
mysqldump -h$host -u$user -p$passwd $dbname >$backup_path/$sqlname
mysqldump -h$host -u$user -p$passwd $dbname >$backup_path/$sqlname2
}
delete(){
#delete expired 14 days
find /data/backup -mtime +14 -type f -name '*.sql' -exec rm -f {} ;
}
size(){
cd /data/backup
dd=`du -sh $sqlname`
dd2=`du -sh $sqlname2`
if [ -s ./$sqlname ] ; then 
 log_correct 'fsl_prod备份正常'
 log_correct $dd
else
 log_error 'fsl_prod备份失败'
fi
if [ -s ./$sqlname2 ] ; then 
 log_correct 'diaocha_db备份正常'
 log_correct $dd2
else
 log_error 'diaocha_db备份失败'
fi
}
backup
delete
size

mysql数据库定时备份脚本(linux mysql数据库备份脚本)

mysql数据库定时备份脚本(linux mysql数据库备份脚本)


02

日志脚本

存放位置:/home/scripts/log_function.sh

#!/bin/bash
#log function
#Copyright by hwb
#date 2019-06-04
####log_correct函数打印正确的输出到日志文件
function log_correct () {
DATE=`date +"%Y%m%d-%H%M%S"` ####显示打印日志的时间
USER=$(whoami) ####那个用户在操作
echo “${DATE} ${USER} execute $0 [INFO] $@” >>/home/scripts/log_info.log ######($0脚本本身,$@将参数作为整体传输调用)
}
#log_error打印shell脚本中错误的输出到日志文件
function log_error ()
{
DATE=`date +"%Y%m%d-%H%M%S"`
USER=$(whoami)
echo “${DATE} ${USER} execute $0 [INFO] $@” >>/home/scripts/log_error.log ######($0脚本本身,$@将参数作为整体传输调用)
}
####fn_log函数 通过if判断执行命令的操作是否正确,并打印出相应的操作输出
function fn_log ()
{
if [ $? -eq 0 ]
then
log_correct “$@ sucessed!”
echo -e “33[32m $@ sucessed. 33[0m”
else
log_error “$@ failed!”
echo -e “33[41;37m $@ failed. 33[0m”
exit
fi
}

mysql数据库定时备份脚本(linux mysql数据库备份脚本)


03

备份输出

输出结果如下:

备份成功:

mysql数据库定时备份脚本(linux mysql数据库备份脚本)

备份失败:

mysql数据库定时备份脚本(linux mysql数据库备份脚本)

到这里就基本满足需求,也就不继续做优化了。


脚本其实是写逻辑,只要逻辑通了,一般都可以满足需求,这个脚本大家也可以继续深入优化,时间比较赶,就不继续了。

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

mysql数据库定时备份脚本(linux mysql数据库备份脚本)

版权声明:本文内容由互联网用户投稿发布,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2211788188@qq.com 举报,一经查实,本站将立刻删除。如需转载请注明出处:https://www.wptmall.com/a/article/18760

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注