mysql主从复制配置心跳功能介绍
在MySQL的复制协议,从发送com_binlog_dump命令后,它是由主推完全,和主人和奴隶不再需要互动。如果主人没有更新,就没有数据流,和Slave将不会收到任何数据包。如果因为某些原因主是无法发送数据的奴隶,例如,有一个网络故障或其他原因在掌握TCP连接的TCP协议的特点,输了,Slave没有机会被通知,所以不知道能不能从主接收数据没有更新或因故障。
幸运的是,MySQL 5.5开始添加一个复制心跳的函数。
作为
复制代码代码如下所示:
停止奴隶;
改变主master_heartbeat_period = 10;
设置全局slave_net_timeout = 25;
开始的奴隶;
主机发送一个心跳每10秒时没有数据。所以奴隶可以知道主人是normal.slave_net_timeout将考虑网络超时后多久没有收到,然后从IO线程将重新掌握。这两个设置的组合可以避免由于网络问题,复制延迟。的master_heartbeat_period单元是一个二,它可以是一个小数目,如10.5.the最高精度为1毫秒。
对slave_net_timeout默认为3600,即一个小时,在前面的情况下,从不会尝试重新连接后1小时的延迟。当master_heartbeat_period没有设定,对slave_net_timeout短集将导致主没有数据更新的时候不更新。
奇怪的是,目前的master_heartbeat_period价值无法通过显示从现状看,但应检查显示状态slave_heartbeat_period。此外,状态变量slave_last_heartbeat代表接收心跳的最后一次,和slave_received_heartbeats代表心跳总接待人数。
如:
复制代码代码如下所示:
MySQL >显示状态like'slave %;
---------------------------- --------------------- + + +
| variable_name |价值|
---------------------------- --------------------- + + +
| slave_heartbeat_period | 5 |
slave_last_heartbeat 2014-05-08 11:48:57 | | |
| slave_open_temp_tables | 0 |
| slave_received_heartbeats | 1645 |
| slave_retried_transactions | 0 |
| slave_running |在|
---------------------------- --------------------- + + +
6行(0秒)