mysql 5.6 replicate-db-table,MySql 5.6关于replicate secure加强

【测试版本】 Mysql 5.6.28

【报错信息】 [Warning] Slave SQL: If a crash happens this configuration does not guarantee that the relay log info will be consistent, Error_code: 0

注:这条Warning信息对Mysql和MySQL复制功能没有任何影响,只是对数据库复制出现文件crash时的保证。

【报错原因】

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实例。

【参考资料】 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文件, master.info

9c4307e8f0cd8c4307b6f5c9f7da2ac7.png

Slave的SQL线程负责维护relay-log.info文件,在MySQL5.6中relay-log.info包含文件中的记录数和复制延迟的秒数。

ab359ec672b6977a4b443080dfc0b32a.png

设置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;

注意: master.info和relay-log.info内的数据会有一定的延迟,取决于mysql把slave信息刷到硬盘的时间,如果要获得slave的实时信息,可以查询slave_master_info和slave_relay_log_info表,或者执行show slave status查看。

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模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值