【MySQL】如何快速执行 binlog
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,【背景】维护mysql的时候,总会遇到数据库恢复的例子。如果把备份集恢复出来相对比较简单。然而如果遇到恢复到时间点的例子,把一个MySQL实例恢复出来之后,需要执行binlog做增量恢复。【方法一】常
千家信息网最后更新 2025年12月02日【MySQL】如何快速执行 binlog【背景】
维护mysql的时候,总会遇到数据库恢复的例子。如果把备份集恢复出来相对比较简单。然而如果遇到恢复到时间点的例子,把一个MySQL实例恢复出来之后,需要执行binlog做增量恢复。
【方法一】
常见的办法是用mysqlbinlog解析binlog,将解析出来的内容重定向到mysql命令行执行。
#start是mysql-bin后面的数字
1. 如果解析出来的binlog在执行的过程中报错,如何处理?直接加 -f 强制执行吗?
2. 执行中途如何停下来,下次接着跑? 比如我想调整一下MySQL的参数(需要重启)后继续跑?
3. 只能单线程执行。而且mysqlbinlog解析再通过管道执行,有比较高的性能开销。
鉴于上面的缺点 下面隆重推出执行大量binlog的另外一种方法
【方法二】
我们都知道relay-log的内容和binlog的内容其实都是一样的,那么我是否能把binlog作为relay-log来执行呢?
答案是肯定的,屡试不爽。
详细的步骤:
0. 先把实例正常shutdown
1. 把binlog上传到mysql服务器本地磁盘,放到一个固定的目录,如/home/mysql/restore_1031
2. 如果是M-S 架构,则需要修改master.info,写入如下内容
3. 修改slave-relay-log.info, 把$STAET, $START_BINLOG_POS替换成你需要开始执行的binlog的文件名和start-position
使用方法二的好处:
解决了上面用mysqlbinlog解析再管道给mysql执行的各个缺陷。
1 可以随时stop slave,调整一些参数,再start slave。
2 可以选择忽略一些slave执行报错。
3 如果你的mysql版本支持多线程复制,你还可以使用它 start slave multi_sql_thread 而且这么做性能更好,在一个数据恢复的场景中,
性能对比:
使用mysqlbinlog 加管道的方式,每秒只能执行3000不到IUD,
使用mysql原生slave执行的方式,每秒可以执行8000 IUD。
缺点:修改master.info slave-relay-log.info等文件,需要重启实例才会生效。
下一次,如果你需要恢复大量binlog,你会选择哪种方式?
维护mysql的时候,总会遇到数据库恢复的例子。如果把备份集恢复出来相对比较简单。然而如果遇到恢复到时间点的例子,把一个MySQL实例恢复出来之后,需要执行binlog做增量恢复。
【方法一】
常见的办法是用mysqlbinlog解析binlog,将解析出来的内容重定向到mysql命令行执行。
#start是mysql-bin后面的数字
点击(此处)折叠或打开
- i=start
- while [ $i -lt end ]
- do
- mysqlbinlog mysql-bin.$i | mysql -h 127.0.0.1 -P 4001 -uroot > 0550.log 2>&1
- done
1. 如果解析出来的binlog在执行的过程中报错,如何处理?直接加 -f 强制执行吗?
2. 执行中途如何停下来,下次接着跑? 比如我想调整一下MySQL的参数(需要重启)后继续跑?
3. 只能单线程执行。而且mysqlbinlog解析再通过管道执行,有比较高的性能开销。
鉴于上面的缺点 下面隆重推出执行大量binlog的另外一种方法
【方法二】
我们都知道relay-log的内容和binlog的内容其实都是一样的,那么我是否能把binlog作为relay-log来执行呢?
答案是肯定的,屡试不爽。
详细的步骤:
0. 先把实例正常shutdown
1. 把binlog上传到mysql服务器本地磁盘,放到一个固定的目录,如/home/mysql/restore_1031
2. 如果是M-S 架构,则需要修改master.info,写入如下内容
点击(此处)折叠或打开
- cat > $BINLOG_DIR/master.info<
- 18
- dummy.binlog
- 0
- dummy.host
- repl
- repl
- 3306
- 60
- 0
- 0
- 0.000
- 0
- EOF
3. 修改slave-relay-log.info, 把$STAET, $START_BINLOG_POS替换成你需要开始执行的binlog的文件名和start-position
点击(此处)折叠或打开
- cat > $BINLOG_DIR/relay-log.info <<EOF
- /home/mysql/restore_1031/mysql-bin.$STAET
- $START_BINLOG_POS
- dummy-binlog.1
- 0
- EOF
点击(此处)折叠或打开
- #head slave-relay-log.index
- /home/mysql/restore_1031/mysql-bin.000588
- /home/mysql/restore_1031/mysql-bin.000589
- /home/mysql/restore_1031/mysql-bin.000590
- /home/mysql/restore_1031/mysql-bin.000591
- /home/mysql/restore_1031/mysql-bin.000592
使用方法二的好处:
解决了上面用mysqlbinlog解析再管道给mysql执行的各个缺陷。
1 可以随时stop slave,调整一些参数,再start slave。
2 可以选择忽略一些slave执行报错。
3 如果你的mysql版本支持多线程复制,你还可以使用它 start slave multi_sql_thread 而且这么做性能更好,在一个数据恢复的场景中,
性能对比:
使用mysqlbinlog 加管道的方式,每秒只能执行3000不到IUD,
使用mysql原生slave执行的方式,每秒可以执行8000 IUD。
缺点:修改master.info slave-relay-log.info等文件,需要重启实例才会生效。
下一次,如果你需要恢复大量binlog,你会选择哪种方式?
内容
实例
方式
方法
性能
管道
缺点
例子
参数
数据
文件
线程
调整
选择
屡试不爽
中报
使用方法
到时
办法
可以通过
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库ide
网络安全法谈个人信息
国 网络技术有限公司
女生网络安全教育ppt
服务器加cdn
易云服务器
菜鸟教程网络安全
服务器数量的大规模增长
怎么彻底卸载db2数据库
百度网讯网络技术公司
wingy服务器
数据库运维专家证难吗
项目数据库设计报告
中控考勤机怎么搭考勤服务器
武汉鹏洋网络技术有限公司
软件开发技术服务费人工费
数据库调度需要写脚本吗
网络安全法由什么机构制定
软件开发cf和bf
海淀区专业软件开发要求
软件开发公司有培训费
研究美股的主要数据库
无锡java软件开发价格
ldap服务器管理电脑
不同数据库的表如何关联查询
南宁良庆区软件开发
怎样应对网络安全人才短缺
一周网络安全案例
云服务器可以绑定多少域名
数据库给一个无序字段编号