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文件,
| master.info |
mysql.slave_master_info |
SHOW SLAVE STATUS Column |
Description |
| 1 |
Number_of_lines |
[None] |
Number of lines in the file |
| 2 |
Master_log_name |
Master_Log_File |
The name of the master binary log currently being read from the master |
| 3 |
Master_log_pos |
Read_Master_Log_Pos |
The current position within the master binary log that have been read from the master |
| 4 |
Host |
Master_Host |
The host name of the master |
| 5 |
User |
Master_User |
The user name used to connect to the master |
| 6 |
User_password |
Password (not shown by SHOW SLAVE STATUS) |
The password used to connect to the master |
| 7 |
Port |
Master_Port |
The network port used to connect to the master |
| 8 |
Connect_retry |
Connect_Retry |
The period (in seconds) that the slave will wait before trying to reconnect to the master |
| 9 |
Enabled_ssl |
Master_SSL_Allowed |
Indicates whether the server supports SSL connections |
| 10 |
Ssl_ca |
Master_SSL_CA_File |
The file used for the Certificate Authority (CA) certificate |
| 11 |
Ssl_capath |
Master_SSL_CA_Path |
The path to the Certificate Authority (CA) certificates |
| 12 |
Ssl_cert |
Master_SSL_Cert |
The name of the SSL certificate file |
| 13 |
Ssl_cipher |
Master_SSL_Cipher |
The list of possible ciphers used in the handshake for the SSL connection |
| 14 |
Ssl_key |
Master_SSL_Key |
The name of the SSL key file |
| 15 |
Ssl_verify_server_cert |
Master_SSL_Verify_Server_Cert |
Whether to verify the server certificate |
| 16 |
Heartbeat |
[None] |
Interval between replication heartbeats, in seconds |
| 17 |
Bind |
Master_Bind |
Which of the slave's network interfaces should be used for connecting to the master |
| 18 |
Ignored_server_ids |
Replicate_Ignore_Server_Ids |
The number of server IDs to be ignored, followed by the actual server IDs |
| 19 |
Uuid |
Master_UUID |
The master's unique ID |
| 20 |
Retry_count |
Master_Retry_Count |
Maximum number of reconnection attempts permitted Added in MySQL 5.6.1) |
?
Slave的SQL线程负责维护relay-log.info文件,在MySQL5.6中relay-log.info包含文件中的记录数和复制延迟的秒数。
| relaylog.info |
sla |