MySQL生产环境备份脚本

全量备份脚本,其中BakDir,ZlbakDir,LogFile需要自己创建

#!/bin/bash
export LANG=en_US.UTF-8# 指定备份目录
BakDir=/root/beifen/data/mysqlbak/data/allbak
# 指定增量备份目录
ZlbakDir=/root/beifen/data/mysqlbak/data/zlbak
# 备份日志位置
LogFile=/root/beifen/data/mysqlbak/log/bak.log# 获取当前时间
CurrentDate=$(date +%Y-%m-%d-%H-%M-%S)
# 脚本执行时间
Begin=$(date +"%Y年%m月%d日 %H:%M:%S")
# 要备份的数据库
Database=a# 进入全备目录
cd $BakDir || exit 1  # 如果目录不存在或无法进入,则退出脚本# 存储即将生成的SQL备份文件名称
DumpFile=$Database-$CurrentDate.sql
# 存储压缩后的名称
GZDumpFile=$Database-$CurrentDate.tar.gz# 使用mysqldump进行备份,--flush-logs会刷新日志,--delete-master-logs会删除旧的二进制日志(注意:这通常在生产环境中使用时需要谨慎),--single-transaction用InnoDB表的一致性备份。
mysqldump -u root -plmx $Database --flush-logs --delete-master-logs --single-transaction > $BakDir/$DumpFile# 用tar命令将SQL备份文件压缩成tar.gz格式
tar -czvf "$GZDumpFile" "$DumpFile"
rm "$DumpFile"# 统计当前目录下.tar.gz文件的数量
count=$(ls -l *.tar.gz 2>/dev/null | wc -l)
if [ $count -ge 2 ]; then# 删除最旧的.tar.gz文件file=$(ls -lt *.tar.gz | head -n 1 | awk '{print $9}')rm -f "$file"
fi# 获取脚本结束时的日期和时间
Last=$(date +"%Y年%m月%d日 %H:%M:%S")# 将备份的开始时间、结束时间和成功生成的压缩文件名追加到日志文件中
echo "开始:$Begin 结束:$Last $GZDumpFile success" >> "$LogFile"# 进入增量备份目录,这里假设您只想清空目录(注意:这可能会删除重要文件)
cd $ZlbakDir || exit 1
rm -f *# 如果需要保留某些文件(如binlog),请修改上面的rm命令以排除这些文件。

成功后会在目录里看到一个tar.gz包,解压之后就可以查看sql文件了
在这里插入图片描述
增量备份脚本
其中BakDir,LogFile需要自己创建,BinDir和BinFile需要自己寻找,如果不知道在那的话登录MySQL输入以下两条命令

MySQL 会自动管理二进制日志索引文件,其名称通常与二进制日志文件的基本名称相同,但扩展名为 .index。在您的配置中,由于 log-bin=mysql-bin,二进制日志索引文件通常会被命名为 mysql-bin.index

#!/bin/bash
# 指定脚本的解释器为Bashexport LANG=en_US.UTF-8
# 设置环境变量LANG为en_US.UTF-8,确保脚本在处理文本时使用UTF-8编码BakDir=/root/beifen/data/mysqlbak/data/zlbak
# 定义备份目录的路径BinDir=/usr/local/mysql/data
# 定义MySQL二进制日志文件的目录路径LogFile=/root/beifen/data/mysqlbak/log/binlog.log
# 定义日志文件的路径,用于记录备份过程中的信息BinFile=/usr/local/mysql/data/mysql-bin.index
# 定义包含二进制日志文件列表的索引文件的路径mysqladmin  -u root -plmx flush-logs
# 使用mysqladmin命令刷新MySQL的日志,包括二进制日志。Counter=$(wc -l $BinFile | awk '{print $1}')
# 计算索引文件($BinFile)中的行数,即二进制日志文件的数量,并将结果存储在变量Counter中NextNum=0
# 初始化NextNum变量为0,用于在后续循环中计数# 这个for循环用于遍历索引文件($BinFile)中的每一行(每个文件路径)
for file in $(cat $BinFile)
dobase=$(basename $file)# 使用basename命令从完整路径中提取文件名(不包含路径)NextNum=$(expr $NextNum + 1)# 将NextNum的值加1if [ $NextNum -eq $Counter ]then# 如果当前文件是索引文件中的最后一个文件echo $base skip! >> $LogFile# 则记录到日志文件中,表示跳过else# 如果不是最后一个文件dest=$BakDir/$base# 定义目标备份文件的完整路径if test -e $destthen# 如果目标备份文件已经存在echo $base exist! >> $LogFile# 则记录到日志文件中,表示文件已存在else# 如果目标文件不存在cp $BinDir/$base $BakDir# 将二进制日志文件从MySQL的日志目录复制到备份目录echo $base copying >> $LogFile# 记录到日志文件中,表示文件正在被复制fifi
done# 记录备份成功的消息到日志文件中,并附带当前日期和时间
echo $(date +"%Y年%m月%d日 %H:%M:%S") Backup success! >> $LogFile

成功后如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP multipart/form-data 请求

序言 最近在写项目的过程中有一个需求是利用 HTTP 协议传输图片和视频,经过查询方法相应的方法发现使用 multipart/form-data 的方式,这是最常见处理二进制文件的表单编码类型。  学习了一下午,现在总结一下使用的方法和相关的知识点&#x…

Linux下redis环境的搭建

1.redis的下载 redis官网下载redis的linux压缩包,官网地址:Redis下载 网盘链接: 通过网盘分享的文件:redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…

day09性能测试(1)——纯理论

document.querySelector(video).playbackRate 2.5 //可以写任何数字 【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、性能测试概念 2、功能测试 vs 性能测试 3、小结(习题) 4、性能测试的策略 4.1 基准测试 4.2 负载测试 …

内部类和Object类

匿名对象 格式: 匿名对象只可以调用一次成员 : 1. 调用一次成员变量 : new 类名(实参).成员变量名; 2.调用一次成员方法: new 类名(实参).成员方法名(实参); 匿名对象存在的必要:为了提高…

Python的3D可视化库vedo 1-3 (visual模块)网格对象的线和面、图片的属性

文章目录 4 MeshVisual4.1 线条4.1.1 线宽和颜色4.1.2 线条渲染为管 4.2 曲面4.2.1 物体展示为实心或框架4.2.2 曲面插值4.2.3 面的剔除 4.3 纹理4.4 相机跟随 5 ImageVisual5.1 图片属性5.1.1 占用内存大小5.1.2 颜色标量范围 5.2 渲染属性5.2.1 透明度5.2.2 亮度5.2.3 对比度…

基于JAVA的旅游网站系统设计

摘要 随着信息技术和网络技术的迅速发展,人们的生活质量和观念也在发生着改变,各地争相发展旅游业,传统的 旅游社已经无法满足人们的需求,旅游网站将突破传统在时间和地域的限制,成为方便、快捷、安全、可靠的旅游 方…

H5游戏出海如何获得更多增长机会?

海外H5小游戏的崛起给了国内众多中小厂商出海发展的机会,开发者如何在海外市场获得更多的增长机会?#APP出海# H5游戏如何在海外获得核心用户? HTML5游戏的开发与运营者们首先可以利用量多质高的HTML5游戏,维持海外用户粘性&…

国际荐酒师Peter助力第六届地博会,推动地理标志产品国际化发展

国际荐酒师Peter Lisicky助力第六届知交会暨地博会,推动地理标志产品国际化发展 第六届粤港澳大湾区知识产权交易博览会暨国际地理标志产品交易博览会于2024年12月9日至11日在中新广州知识城盛大举行,吸引了全球众多行业专家、企业代表及相关机构齐聚一…

2024 亚马逊云科技re:Invent:Werner Vogels架构哲学,大道至简 六大经验助力架构优化

在2024亚马逊云科技re:Invent全球大会第四天的主题演讲中,亚马逊副总裁兼CTO Dr.Werner Vogels分享了 The Way of Simplexity,繁简之道,浓缩了Werner在亚马逊20年构建架构的经验。 Werner表示,复杂性总是会“悄无声息”地渗透进来…

ThinkPHP框架审计--基础

基础入门 搭建好thinkphp 查看版本方法,全局搜version 根据开发手册可以大致了解该框架的路由 例如访问url http://127.0.0.1:8094/index.php/index/index/index 对应代码位置 例如在代码下面添加新方法 那么访问这个方法的url就是 http://127.0.0.1:8094/index.…

如何在vue中使用ECharts

一. 打开ECharts官网,点击快速入门 下面是ECharts官网的链接 https://echarts.apache.org/ 二.在vue中使用 1.首先先引入Echarts js文件 如下图,下面的第一张图片是官网的实现,第二章图片是我根据官网的实现 2.给ECharts 创建一个DOM容器 3. 使用ec…

网络原理之 IP 协议

目录 1. IP 协议报文格式 2. 网段划分 3. 地址管理 1) 动态分配 2) NAT 机制 (网络地址转换) 3) IPv6 4. 路由选择 1. IP 协议报文格式 IP 协议是网络层的重点协议。 网络层要做的事情,主要就是两方面: 1) 地址管理 制定一系列的规则&#xff…

HyperMesh CFD功能详解:后处理功能Part 2

Clips Clips 按钮包含两个工具。Box Clip用于空间上的裁剪,Scalar Clip可以根据物理量的范围裁剪。 示例:Box Clips 裁剪 示例:Scalar Clips 裁剪 通过裁剪,仅显示density范围是10~20的等值面 示例:显示效果控制 部分透…

Java项目实战II基于微信小程序的跑腿系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在快节奏的现代生活中&…

【机器学习与数据挖掘实战案例01】基于支持向量回归的市财政收入分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…

JavaEE 【知识改变命运】03 多线程(3)

文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因:1.线程是抢占式的2. 多线程修改同一个变量(程序的要求)3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…

【力扣】409.最长回文串

问题描述 思路解析 因为同时包含大小写字母,直接创建个ASCII表大小的桶来标记又因为是要回文子串,所以偶数个数的一定可以那么同时,对于出现奇数次数的,我没需要他们的次数-1,变为偶数,并且可以标记出现过…

计算机视觉在科学研究(数字化)中的实际应用

计算机视觉是一种利用计算机技术来解析和理解图像和视频的方法。.随着计算机技术的不断发展,计算机视觉被广泛应用于科学研究领域,为科学家提供了无限的可能。 一、生命科学领域 在生命科学领域,计算机视觉被广泛用于图像识别、分类和测量等…

springboot381银行客户管理系统(论文+源码)_kaic

摘 要 伴随着信息技术与互联网技术的不断发展,人们进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须,提升管理高效率,各种各样管理管理体系应时而生,各个领域陆续进到…

软件漏洞印象

软件漏洞印象 软件安全性检测 软件安全静态分析:学术界一度十分热衷的偏理论性方法软件漏洞动态挖掘,工程界普遍采用动态漏洞挖掘方式,即Fuzz技术,也称为模糊测试 漏洞利用 vs. 漏洞修复 对于已发现的软件漏洞 黑客会基于Meta…