【MySQL】如何快速执行 binlog
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,【背景】维护mysql的时候,总会遇到数据库恢复的例子。如果把备份集恢复出来相对比较简单。然而如果遇到恢复到时间点的例子,把一个MySQL实例恢复出来之后,需要执行binlog做增量恢复。【方法一】常
千家信息网最后更新 2024年11月19日【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安全错误
数据库的锁怎样保障安全
花都软件开发商
网络安全法有修改吗
apex怎么看玩的什么服务器
我的世界如何制作服务器
数据库应用怎么创建
网络安全工程师和软件测试
石家庄商城软件开发价格
网络安全信息小组组长名单
服务器断电挂载磁盘错误
软件开发出来是卡磁带光盘吗
德惠品质网络技术咨询诚信合作
魔兽世界多少个服务器
计算机网络技术中专试卷
你眼中的软件开发
网络技术服务公司管理制度
特斯拉应用服务器中断原因
网络安全日志在哪看
信息指南数据库
百万钱包登陆显示服务器异常
投入品数据库
按键精如何搭建数据库
软件开发开公司技术培训
电子科技大学互联网暑期实践队
用友怎么用数据库账号登录
穿越火线指定服务器是什么意思
晋中软件开发价格多少
网络安全教育的
更换本地号码标记数据库什么意思
国内服务器试用
软件开发项目验收通知书