阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

shell脚本案例-mysql备份脚本

95次阅读
没有评论

共计 1416 个字符,预计需要花费 4 分钟才能阅读完成。

案例需求

写一个 mysql binlog 备份脚本,要求每天 0 点 0 分,计算机自动备份前一天的 binlog 日志,打包后发送给备份服务器。

脚本应用场景:

文件备份

解决问题

日常文件备份

日常数据备份

脚本思路

1、确定 binlog 的位置及备份时间间隔 每天

​ 当前要备份的 binlog 是谁

​ 刷新 binlog 日志,生成新的 binlog 用于存储备份节点后的数据

2、打包 binlog 日志 以年 - 月 - 日_binlog.tar.gz 格式

3、生成校验码 md5sum

4、将校验码和压缩包存入到文件夹 文件夹命名 年 - 月 - 日 再次打包

5、使用 scp 拷贝到备份机器

6、备份机器解压收到的目录压缩包 通过校验码 教研 binlog 压缩包是否完整

​ 完整 完成备份 —– 发邮件给管理员,明确备份成功

​ 不完整 报错 —— 发邮件给管理员,要求手动备份

实现代码

#!/bin/bash #Description: #Author: www.zutuanxue.com #Created Time: # 将 mysql 的 binlog 日志备份到备份服务器 ########variables db_user='root' db_password='' log='/var/log/mysql_backup.log' ###main # 获得信息 binlog_dir='/var/lib/mysql' current_binlog=`mysql -u $db_user -e "show master status"|egrep "binlog.[[:digit:]]*"|awk '{print $1}'` date >> $log # 准备备份 #1 刷新 binlog mysql -u $db_user -e "flush logs" #2 打包要备份的 binlog tar czf `date +%F`_binlog.tar.gz $binlog_dir/$current_binlog &>>$log #3 生成校验码 md5sum `date +%F`_binlog.tar.gz > "`date +%F`_md5sum.txt" #4 存入文件夹 [! -d `date +%F`]&&mkdir `date +%F` mv `date +%F`_binlog.tar.gz `date +%F` mv `date +%F`_md5sum.txt `date +%F` # 打包目录 tar czf `date +%F`.tar.gz `date +%F` &>>$log #5 拷贝 # 要求提前做证书信任 scp `date +%F`.tar.gz root@192.168.11.241:/opt/backup &>>$log if [$? -ne 0 ];then echo "ERROR:scp `date +%F`.tar.gz fail" &>>$log exit 1 fi #6 校验 ssh root@192.168.11.241 "tar xf /opt/backup/`date +%F`.tar.gz -C /opt" #ssh root@192.168.11.241 "cd /opt/backup`date +%F`" ssh root@192.168.11.241 "cd /opt/`date +%F`;md5sum -c `date +%F`_md5sum.txt" &>>$log if [$? -eq 0 ];then echo "success" &>>$log ssh root@192.168.11.241 "rm -rf /opt/`date +%F`" else echo "fail" &>>$log fi

案例思考

双机同步实现方式

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-09发表,共计1416字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中