首先是max_connect_errors和connect_timeout。
mysql有这样的行为:
如果客户端连接Mysql失败,服务器就会在等候connect_timeout秒之后放弃等候,并且增加连接错误的计数器。
然后,当值达到了max_connect_errors的时候,服务器会将这个客户端锁住。
直到服务器执行了FLUSH HOSTS命令。
所以当mysql偶然出现网络间断的时候,就很有可能出现连接错误计数器超过max_connect_errors的情况。
所以有几个方法:
1 将max_connect_errors调整成一个很大的数
2 调高connect_timeout的值(默认值为5,建议调高为15或20,也不是越高越好,要考虑到thread_cache_size的控制)
mysql默认会对每个连接使用DNS逆向查询。不管这个过程怎么样,其实这个过程其实是不必要的。
为了提高性能,也为了降低connect_timeout超时的概率,所以应该在my.cnf中加入
skip-name-resolve来跳过这个环节。
slave_net_timeout这个字段是设置主从服务器发生意外连接失败的时候,从服务器等候多少时间才会意识到连接失败
,从而执行重连操作。
mysql默认设置是3600秒,竟然是整整一个小时,作者认为这是不合理的,毕竟没人希望当两个服务器意外连接
失败的时候,过了一个小时从服务器才知道连接失败。所以作者建议这个属性应该调小到30s左右。