【MySQL】如何快速执行 binlog
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,【背景】维护mysql的时候,总会遇到数据库恢复的例子。如果把备份集恢复出来相对比较简单。然而如果遇到恢复到时间点的例子,把一个MySQL实例恢复出来之后,需要执行binlog做增量恢复。【方法一】常
千家信息网最后更新 2025年02月03日【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安全错误
数据库的锁怎样保障安全
科技类属于互联网吗
为什么服务器越来越不稳
网络安全防诈骗主题班会记录内容
软件开发方面问题
在我的世界里怎样做服务器
从政治上看网络安全
小李是单位的网络技术员
互联网大赛算不算科技类大赛
湖南省安全接入服务器地址
美团网络安全检查
数据库美妆er图
为什么我的cf不能退回服务器
镇江网络安全活动
ark方舟服务器管理
在数据库中专用于打印的是
数据库建立联合主键
程序员的网络安全
玩家的服务器遭遇303
软件开发的进度计划表
网络安全法第59条是
网络安全资讯网站
网络技术工作岗位设置
长沙市服务器搬运价格
上海互联网络技术客户至上
湖南省安全接入服务器地址
云朵网络安全科技馆
电脑邮箱登录提示服务器验证失败
云手机上的单机数据库
网络安全密钥连接
福建荣腾网络技术有限公司