码迷,mamicode.com
首页 > 数据库 > 详细

mysql 主从复制参数slave_net_timeout

时间:2018-12-30 20:39:22      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:地址   try   时间   nlog   rtb   tables   主从   开启   tput   

slave_net_timeout

slave_net_timeout表示slave在slave_net_timeout时间之内没有收到master的任何数据(包括binlog,heartbeat),slave认为连接断开,会进行重连。

超时后,立刻重连,后续重连的时间间隔由 CHANGE MASTER TO 命令的MASTER_CONNECT_RETRY 参数指定。

重连次数上限由--master-retry-count 命令行参数指定. 默认值3600s.

查看和修改

mysql >show variables like ‘slave_net_timeout‘;
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| slave_net_timeout | 60    |
+-------------------+-------+
1 row in set (0.00 sec) 

将slave_net_timeout修改为6000

mysql >set global slave_net_timeout=6000;

mysql >show variables like ‘slave_net_timeout‘; 
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| slave_net_timeout | 6000  |
+-------------------+-------+
1 row in set (0.00 sec)

测试

一个master,一个slave,都已经正常启动。

首先,在slave上做如下操作:

  1. 设置slave_net_timeout为6000
  2. 执行stop slave停止复制
  3. 使用change master to 将heartbeat修改为180s,connect_retry修改为50s
    sql change master to MASTER_CONNECT_RETRY=50,MASTER_HEARTBEAT_PERIOD=180;
  4. 执行start slave开启复制

在slave上使用show processlist,确认I/O线程,SQl线程已经启动成功。
在master上同样使用show processlist,确认Binlog Dump进程已启动成功。

接着,在master上做如下操作:

  1. 清除iptables所有规则,排除干扰

     iptables -F 
  2. 设置iptables规则,禁止发送数据到slave

    iptables -A OUTPUT -p tcp -d 192.4.222.202 -j DROP

    其中,192.4.222.202是slave的IP地址。这条规则的含义表示丢弃所有master发往slave的数据包,确保没有任何数据(binlog和heartbeat)从master发送给slave。

这样,slave应该在超过slave_net_timeout的时间后,开始重连master。
但是从slave打印的错误日志看,却是在master开启iptables后47s,就开始重连,这个值跟slave_net_timeout设置的6000s没有对应关系。

这是个奇怪的问题。

参考

16.1.6.3 Replication Slave Options and Variables

mysql 主从复制参数slave_net_timeout

标签:地址   try   时间   nlog   rtb   tables   主从   开启   tput   

原文地址:https://www.cnblogs.com/lanyangsh/p/10200278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!