当前位置: 首页 > news >正文

【shell脚本速成】mysql备份脚本

在这里插入图片描述

文章目录

    • 案例需求
    • 脚本应用场景:
    • 解决问题
    • 脚本思路
    • 实现代码

🌈你好呀!我是 山顶风景独好
🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊
🌸愿您在此停留的每一刻,都沐浴在轻松愉悦的氛围中。
📖这里不仅有丰富的知识和趣味横生的内容等您来探索,更是一个自由交流的平台,期待您留下独特的思考与见解。🌟
🚀让我们一起踏上这段探索与成长的旅程,携手挖掘更多可能,共同进步!💪✨

案例需求

写一个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 ];thenecho "ERROR:scp `date +%F`.tar.gz fail" &>>$logexit 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 ];thenecho "success" &>>$logssh root@192.168.11.241 "rm -rf /opt/`date +%F`"
elseecho "fail" &>>$log
fi

✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍

http://www.lryc.cn/news/380122.html

相关文章:

  • 高考志愿填报,理科生如何分析选专业?
  • qt 简单实验 json格式的文件写入配置文件
  • 将WIN10的wifi上网分享给以太网接口
  • 在 iPhone 上恢复已删除联系人的 5 种简便方法
  • 小白指南:前端使用javascript如何判断集合是不是空集合?
  • 人力资源招聘社会校企类型招聘系统校园招聘小程序
  • docker重要操作与直连方法
  • Windows环境利用 OpenCV 中 CascadeClassifier 分类器识别人眼 c++
  • Golang | Leetcode Golang题解之第167题两数之和II-输入有序数组
  • 【软件工程】【23.04】p2
  • Java多线程编程与并发控制策略
  • Java爬虫(一)
  • element-plus form表单组件之el-date-picker日期选择器组件
  • 如何与情绪好好相处,真正成为情绪的主人
  • RK3588/算能/Nvidia智能盒子:[AI智慧油站」,以安全为基,赋能精准经营
  • 【眼在手外D435相机支架】
  • js组合继承
  • Spring-kafka消费者消费的一些问题
  • 【自我提升】提升能量书籍
  • python图像处理库-PIL(Pillow)
  • 【2024】kafka streams的详细使用与案例练习(2)
  • qt 简单实验 读取json格式的配置文件
  • Docker常用命令与实战示例
  • 数据结构(基础知识)
  • 计算机网络:网络层 - 路由选择协议
  • JupyterLab使用指南(六):JupyterLab的 Widget 控件
  • OpenCV 特征点检测与匹配
  • css布局之flex应用
  • 树莓派4B设置AP热点步骤
  • Java程序之百鸡百钱问题