CentOS7下MySQL8主从复制Last_IO_Error连接主库报错113如何解决
MySQL 8 CentOS 7主从复制连接错误113排查解决思路
错误码113对应网络层无法到达目标主库的3306端口,即使已确认端口开放也需要按以下步骤逐一校验:
1. 基础网络连通性排查
- 从库服务器执行
ping xx.xx.xx.xx(替换为主库实际IP),确认ICMP连通性。若ping不通,检查主从服务器的路由规则、网关配置、物理网络链路是否正常。 - 从库执行
nc -zv xx.xx.xx.xx 3306或telnet xx.xx.xx.xx 3306验证端口连通性,若返回连接失败,说明端口开放配置存在疏漏。
2. 防火墙与访问控制规则排查
- 主库执行
firewall-cmd --list-all,检查firewalld规则中3306端口是否明确允许从库IP访问,排除高优先级拒绝规则覆盖开放规则的情况。 - 从库执行
firewall-cmd --list-all --zone=public,检查是否存在出站3306端口的限制规则。 - 若为云服务器,确认主库安全组入方向开放3306端口给从库IP,从库安全组出方向开放3306端口到主库IP。
3. 主库MySQL配置排查
- 主库执行
show variables like 'bind_address';,确认绑定地址不是127.0.0.1,需配置为0.0.0.0或主库实际对外服务IP,修改后需重启MySQL服务生效。 - 主库执行
show grants for 'replica'@'从库实际IP';,确认复制账号replica拥有REPLICATION SLAVE权限,且授权主机地址与从库实际IP严格匹配。 - 主库执行
select user,host,plugin from mysql.user where user='replica';,确认复制账号的认证插件为mysql_native_password,MySQL8默认的caching_sha2_password插件会导致从库连接认证失败。
4. SELinux策略排查
CentOS7默认开启SELinux,可能限制MySQL网络连接:
- 主库执行
sestatus查看SELinux运行状态,若为Enforcing模式,执行getsebool -a | grep mysql确认mysql_connect_any参数为on。 - 若参数为
off,执行setsebool -P mysql_connect_any 1开启权限。
配置修改后验证步骤
- 从库执行
stop slave;停止原有同步进程。 - 重新配置主库同步参数:
change master to master_host='xx.xx.xx.xx',master_user='replica',master_password='复制账号密码',master_log_file='主库当前binlog文件名',master_log_pos=主库当前binlog偏移量; - 执行
start slave;启动同步。 - 执行
show slave status\G查看状态,Slave_IO_Running和Slave_SQL_Running均为Yes即为配置成功。
内容的提问来源于stack exchange,提问作者tkdhanasekar
相关产品推荐
相关产品推荐

