mysql异地备份数据库
前一篇文章《windows服务器应用系统自动备份策略》讲到了mysql数据库本地备份策略,如果觉得备份到服务器上不够安全,防止服务器意外硬件损坏致使备份也丢失。那么可以采取异地备份,网上很多windo...
2024.11.11最近梳理了下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-04backup_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.sqlsqlname2=$dbname2$today.sqlif [ -e /home/scripts/log_function.sh ]thensource /home/scripts/log_function.shelseecho -e “\033[41;37m /home/scripts/log_function.sh is not exist. \033[0m”exit 1fibackup(){log_correct "开始执行备份脚本,删除14天过期备份"#backupmysqldump -h$host -u$user -p$passwd $dbname >$backup_path/$sqlnamemysqldump -h$host -u$user -p$passwd $dbname >$backup_path/$sqlname2}delete(){#delete expired 14 daysfind /data/backup -mtime +14 -type f -name ‘*.sql‘ -exec rm -f {} \;}size(){cd /data/backupdd=`du -sh $sqlname`dd2=`du -sh $sqlname2`if [ -s ./$sqlname ] ; then log_correct ‘fsl_prod备份正常‘ log_correct $ddelse log_error ‘fsl_prod备份失败‘fiif [ -s ./$sqlname2 ] ; then log_correct ‘diaocha_db备份正常‘ log_correct $dd2else log_error ‘diaocha_db备份失败‘fi}backupdeletesize02日志脚本存放位置:/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 ]thenlog_correct “$@ sucessed!”echo -e “\033[32m $@ sucessed. \033[0m”elselog_error “$@ failed!”echo -e “\033[41;37m $@ failed. \033[0m”exitfi}03备份输出输出结果如下:
备份成功:
备份失败:
到这里就基本满足需求,也就不继续做优化了。
脚本其实是写逻辑,只要逻辑通了,一般都可以满足需求,这个脚本大家也可以继续深入优化,时间比较赶,就不继续了。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
前一篇文章《windows服务器应用系统自动备份策略》讲到了mysql数据库本地备份策略,如果觉得备份到服务器上不够安全,防止服务器意外硬件损坏致使备份也丢失。那么可以采取异地备份,网上很多windo...
2024.11.11概述binlog2sql是一个开源的Python开发的MySQL Binlog解析工具,能够将Binlog解析为原始的SQL,也支持将Binlog解析为回滚的SQL,以便做数据恢复。gihub:htt...
2024.11.15概述从MySQL5.6开始,mysqlbinlog支持将远程服务器上的binlog实时复制到本地服务器上。mysqlbinlog的实时二进制复制功能并非简单的将远程服务器的日志复制过来,它是通过MyS...
2024.11.14在当今互联网时代,数据已经成为企业的核心资产。然而,数据的安全性和完整性面临硬件问题、软件故障、人工操作错误等各种威胁。为了保证数据的安全,实时备份已经成为公司必须采取的重要措施之一。下面我们就重...
2024.11.13一个IT从业者,分享IT的各种相关内容。点个关注,不迷路,总有能帮到你的分享内容。什么?帮不到。那谢谢你这么俊/这么美,来关注我!我们为什么需要免密码登录MySQL?比如为了编写脚本的方便。这里分享3...
2024.11.11