事情是这样的,搭建了mysql主从集群,分别位于两台机器上,并对数据库的3306端口做了映射,映射到主机的1089.搭建成功,主库和从库都可以通过1089访问,主从复制正常。后来,将docker的"iptables"值设置为false,让docker不添加iptables规则,主库和从库使用firewall-cmd放行1089端口。使用相同的步骤和配置搭建主从集群,搭建完成后客户端也可以正常通过1089端口连接到主库和从库,但是主库和从库间复制异常,登录从库查询从库状态,发现 Slave_IO_Running:一直处于Connecting状态,也就是从库连接不到主库。 大佬们,帮忙分析下问题出在哪里,谢谢。 主从, 端口, 集群
根据您的描述,当您使用iptables为Docker添加规则时,主从复制正常工作。但是,当您将Docker的iptables设置为false,并使用firewall-cmd放行端口时,主库和从库之间的复制出现了问题。从库的`Slave_IO_Running`状态一直处于`Connecting`状态,即从库无法连接到主库。 这种情况可能是由于防火墙配置或网络连接问题导致的。请确保按照以下步骤进行排查: 1. 确认主库和从库的网络连接正常。确保主库和从库可以相互访问,并且没有任何网络层面的问题。 2. 检查主库和从库的防火墙配置。确保主库和从库的防火墙允许通过1089端口的流量。您可以使用以下命令检查防火墙规则: ``` sudo firewall-cmd --list-all ``` 确认是否存在针对1089端口的允许规则。 3. 检查主库和从库的MySQL配置。确保在主库和从库的MySQL配置文件中,`bind-address` 参数设置为正确的 IP 地址,并且 `port` 参数设置为 1089。 4. 检查主库和从库的MySQL用户授权。确保在主库和从库上,使用正确的用户和密码进行授权,以便从库可以连接到主库。 5. 检查主库的二进制日志配置。在主库的MySQL配置文件中,确认以下参数是否正确设置: ``` log-bin=mysql-bin server-id=1 ``` 确保 `log-bin` 参数启用了二进制日志,并且 `server-id` 参数设置为唯一的值。 6. 检查从库的主从复制配置。在从库的MySQL配置文件中,确认以下参数是否正确设置: ``` server-id=2 relay-log=mysql-relay-bin ``` 确保 `server-id` 参数设置为唯一的值,并且 `relay-log` 参数启用了中继日志。 7. 检查从库的主从复制用户配置。在从库上,确保使用正确的用户和密码配置主从复制。 完成上述步骤后,重新启动主库和从库,并检查从库的状态是否正常。如果问题仍然存在,可以查看主库和从库的日志文件,以获取更多的错误信息来进行排查。 帮你问了ChatGPT
32MB.CN 发表于 2023-7-19 21:23 那就改回去,你不想让外网访问,映射端口时加上本地IP -p 127.0.0.1:8080:80 我主要是想通过firewall-cmd来管理主机的防火墙。实现弄不清楚,为什么可以通过1089访问主库和从库,但从库却连不上主库
朱元璋 发表于 2023-7-19 21:24 根据您的描述,当您使用iptables为Docker添加规则时,主从复制正常工作。但是,当您将Docker的iptables设置 ... 我也问过好几次GPT了,他给出的可能原因都不是,都排查了