-
Notifications
You must be signed in to change notification settings - Fork 55
relay_log_recovery
xiaoboluo768 edited this page Jun 14, 2020
·
2 revisions
- 控制从库挂掉之后如何恢复复制及其relay log
- 当开启时,从库重启或者崩溃恢复时,将读取SQL线程重放对应的主库binlog的位置,把当前没有重放完的relay log全部清理掉,以这个位置为准重新连接主库并把这个位置之后的binlog从主库上拉过来重新创建relay log。这样就可以忽略sync_master_info参数的设置,而只需要把sync_relay_log_info参数设置为1即可(即只需要保证SQL线程重放每个事务或每个events时实时把SQL线程的信息保存到磁盘即可,IO线程的位置信息是否存盘无需关注,因为重新生成relay log时,IO线程的位置自然就有了)
- 当关闭时,要保证主从数据的一致性,建议设置sync_master_info=1、sync_relay_log_info=1把IO线程和SQL线程的信息在每个事务(或者events)写入relay log、从relay log中重放时实时落盘,但这样做会导致频繁刷盘消耗磁盘IO能力
- 全局变量,只读变量(5.6.6开始的5.6.x版本为只读,5.6.6之前的5.6.x版本可以动态修改,在5.7.x版本中为只读变量),默认值为false,布尔型
- 注意:
- 当开启GTID复制时,如果使用了master_auto_positon=1,则其他与崩溃主备数据一致性相关的参数不管如何设置都不会影响到从库的崩溃恢复保障性,当没有开启GTID复制时,需要设置sync_relay_log=1,relay_log_info_repository=TABLE,relay_log_recovery=1(从库使用单线程复制时,可以忽略sync_relay_log参数设置,多线程复制在不使用GTID复制时,必须设置为1,否则OS挂掉之后不保证从库崩溃恢复安全性)
- 当relay_log_recovery启用并且同时启用了多线程模式,在运行时遇到的错误而停止了从库复制时,如果日志中存在任何间隙,则无法重新执行CHANGE MASTER TO。 从MySQL 5.6.6开始,可以使用START SLAVE UNTIL SQL_AFTER_MTS_GAPS语句来切换回单线程模式,启动复制处理完所有的间隙之后,再执行stop slave;CHANGE MASTER TO..;start slave语句。另外,要注意,SQL_AFTER_MTS_GAPS语句对IO线程没有影响,该语句也不能与IO_THREAD一起使用。
- 参考链接:https://dev.mysql.com/doc/refman/5.6/en/start-slave.html
START SLAVE UNTIL SQL_AFTER_MTS_GAPS;
SET @@GLOBAL.slave_parallel_workers = 0; #设置为单线程
START SLAVE SQL_THREAD;
stop slave;
SET @@GLOBAL.slave_parallel_workers = number; # 设置为多线程
change master to ...
start slave;
上一篇:sync_relay_log_info | 下一篇:sync_binlog
-
本 WIKI 包含了《千金良方--MySQL 性能优化金字塔法则》一书的代码段加粗命令行命令和SQL语句文本、以及4个附录内容,其中:
- 代码段和高清图单独整理为一个系列文档,如下:
- 每个附录都各自整理成了一个小系列文档,如下:
-
《千金良方--MySQL 性能优化金字塔法则》 一书的作者信息如下:
- 李春、罗小波、董红禹
-
联系人QQ:309969177
-
提示:
-
郑重声明:本WIKI仓库中的资料为电子工业出版社与本书的三位作者共同授权开源,为了在方便大家的同时,避免不必要的纠葛,任何商业与非商业的引用、转载,麻烦大家注明出处,谢谢配合!