来源:自学PHP网 时间:2015-04-16 10:51 作者: 阅读:次
[导读] 1 1 1 If a crash happens thisconfiguration does not guarantee that the relay log info will be consistent【环境描述】msyql5 6 14【报错信息】mysql的slave启动时,error log中出现W...
1.1.1. If a crash happens thisconfiguration does not guarantee that the relay log info will be consistent 【环境描述】 msyql5.6.14 【报错信息】 mysql的slave启动时,error.log中出现Warning警告: [Warning] Slave SQL: If a crash happensthis configuration does not guarantee that the relay log info will beconsistent, Error_code: 0 这条Warning信息对Mysql和MySQL复制功能没有任何影响。 【报错原因】 MySQL5.6版本开始支持把master.info和relay-log.info的内容写入到mysql库的表中, master.info--> mysql.slave_master_info relay-log.info--> mysql. slave_relay_log_info 同时在MySQL5.6版本中,增加了 Slave crash-safe replication功能,为了保证mysql的replication能够crash-safe,slave_master_info和slave_relay_log_info表必须使用事务型的存储引擎(InnoDB),不要尝试去手动修改这两张表的内容。同时,Slave还要开启relay_log_recovery功能。 【解决方法】 设置master_info_repository和relay_log_info_repository的值为TABLE,同时开启relay_log_recovery功能。 修改/etc/my.cnf配置文件,添加以下3项: master-info-repository=table # 可以使用set global 动态修改 relay-log-info-repository=table # 可以使用setglobal 动态修改 relay-log-recovery=1 # 只读参数,必须修改my.cnf重启mysql 然后重启mysql实例。 【参考资料】 l master.info和relay-log.info日志 在复制的Slave节点上会创建两个日志,分别是master.infor和relay-log.info,位于datadir目录中。在MySQL5.6和后续的版本中,可以通过设置master-info-file和relay-log-info-file参数来指定写入到mysql的表中或者写入文件。 这两个文件中包含一些类似showslave status输出的信息,当slave启动的时候会读取master.info和relay-log.info文件来确定从master读取binary log和读取relay log的信息。 Slave的I/O线程负责更新维护master.info文件,
Slave的SQL线程负责维护relay-log.info文件,在MySQL5.6中relay-log.info包含文件中的记录数和复制延迟的秒数。
设置master_info_repository和relay_log_info_repository参数: SQL> stop slave; SQL> set global master_info_repository=table; SQL> set global relay_log_info_repository=table; SQL> show variables like '%repository'; +--------------------------------------+---------+ | Variable_name | Value | +--------------------------------------+---------+ | master_info_repository | TABLE | | relay_log_info_repository | TABLE | +--------------------------------------+----------+ 查看向Master读取日志的情况: SQL> select * from slave_master_info; 查看Slave的Relay日志应用情况: SQL> select * from slave_relay_log_info; 注意: l master-info-repository master-info-repository={ FILE | TABLE },默认值是FILE,这个参数用于设置Slave节点上把master的信息写入到物理文件中还是写入到mysql. slave_master_info表中。 如果设置为FILE,也是mysql的默认设置,Slave会在datadir/master.info文件中记录master的信息,从MySQL5.6版本开始,建议使用TABLE模式。 l relay-log-info-reposity relay-log-info-reposity=file|table,默认值是FILE,这个参数用于设置slave节点上把relay-log.info的信息写入到datadir/relay-log.info文件或者mysql. slave_relay_log_info表。 如果设置为FILE,也是mysql的默认设置,Slave会在datadir/master.info文件中记录master的信息,从MySQL5.6版本开始,建议使用TABLE模式。 l relay-log-recovery relay-log-recover=0|1,默认值是0不开启,该参数用于设置是否开启relay log的自动恢复功能。当开启relay_log_recovery功能,slave数据库在启动的时候,会忽略未被执行的relay log,它会重新连接master获取relay log来进行恢复。 当slave发生宕机的时候,建议开启该功能,可以有效避免slave执行了relay log里面的讹误记录。 如果开启relay_log_recovery功能,必须同时把relay_log_info_reposity设置为TABLE模式。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com