【MySQL】如何快速执行 binlog
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,【背景】维护mysql的时候,总会遇到数据库恢复的例子。如果把备份集恢复出来相对比较简单。然而如果遇到恢复到时间点的例子,把一个MySQL实例恢复出来之后,需要执行binlog做增量恢复。【方法一】常
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
云之行互联网科技
互联网科技有限公司经营范围
金诺互联网科技
互联网 科技公司
奇酷互联网科技公司
浩特互联网科技
深圳齐家互联网科技
互联网科技宣传片
哈尔滨秒房互联网科技有限公司
广州慧亚互联网科技怎么样
中国互联网有什么科技含量
北京华百购互联网科技有限公司
互联网经济与金融科技
互联网科技公司实习生
工业互联网等科技实现智能化赋能
美国互联网科技实力
美国互联网科技公司
厦门江牛科技互联网
银川新华互联网科技学校是国营吗
互联网科技博主张洲
互联网络科技
苏州找大状互联网科技有限公司
圆梦互联网科技
有马互联网科技
爱医互联网络科技
唐山双旺合互联网科技产业园
深圳互联网科技园地址
陕西彩京云互联网科技有限公司
上海旺乐尼互联网科技有限公司
颐高云石互联网科技