故障背景: 现有一套数据量较大的mysql主从环境,主从与两日前出现主从故障,导致主从数据不一致。
排查过程:
(1)在主库执行show slave hosts;结果不显示从库信息。
(2)在从库执行show slave status\G;结果显示如图:

从库io线程一直处于‘connection’状态,导致io状态异常的原因一般有:
a. 连接信息有误
b. 网络故障
c. 防火墙
d. 最大连接数上线
(3) 查看mysql数据库error日志

(4) 在从库上用复制用户远程连接数据库,出现 error 1129 Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts’报错。

(5) 查看主从服务器上的连接参数大小。

由结果分析出主从故障是因为数据库内产生太多(超过mysql数据库max_connection_errors的最大值)中断的连接而导致的阻塞;
解决措施:
(1) 停止从库 stop slave;
(2) 进入Mysql数据库查看max_connection_errors及max_connection: show variables like ‘%max_connection%’;
(3) 参数修改
修改max_connection_errors的数量为10000: set global max_connect_errors = 10000
修改max_connection的数量为1000: set global max_connect = 1000;
(4) 使用mysqladmin flush-hosts 命令清理一下hosts文件,主从数据库都要执行。
执行/usr/bin/mysqladmin flush-hosts -uroot -p密码
(5) 启动从库查看主从状态 start slave;show slave status\G;

主从状态恢复正常。




