我已经在单独的 AWS EC2 实例上成功设置了 MySQL 主从情况。从站正在运行并成功复制主站。
到目前为止,一切都很好。
现在我希望能够查询从属设备(用于分析等),但我找不到能够将查询从主设备发送到从设备的正确配置。
我得到的错误(取决于我的 AWS 安全配置文件设置)是“连接被拒绝”或“连接超时”
在从属服务器上,我有一个 EC2 安全组允许主 IP 块用于连接到端口 3306,并且我在主服务器的连接配置中使用了从属服务器的 IP 地址。
当我尝试从主服务器查询从服务器时,导致“连接被拒绝”错误。
在主服务器上,我运行“显示完整进程列表”并看到从属主机是 AWS EC2 主机名,而不是 IP,并且端口 44508 被添加到最后,所以我将主服务器上的连接信息更改为使用从属主机名称而不是 IP 地址,以及从站上的安全组设置以允许来自端口 44508 而不是 3306 上的主站的流量。
这导致了“连接超时”错误。
我尝试了从属安全组中的 IP/主机名/端口的组合,但只是得到了这两个错误之一,任意组合。
任何人都可以提供有关如何配置事物的提示,以便我可以从该主计算机上运行(只读)查询,并将结果返回给主计算机?TIA。
两个系统的设置相同,除了 master 也在运行 Codeigniter4,这是我设置连接配置的地方:
Ubuntu 20.04.3 LTS 和 MySQL 8.0.26-0
在这样的设置中,您的客户端(应用程序、软件)应连接到从属服务器并仅运行 SELECT 查询(如果您需要运行写入查询 - 它们应该仅在主服务器上完成)。
你应该检查:
已解决:在从站的 /etc/mysql/mysql.conf.d/mysqld.cnf 中,我需要注释掉“bind-address”和“mysqlx-bind-address”行,停止从站,重新启动 mysqld 并启动从站.
拥有'bind-address = 127.0.0.1'会阻止来自其他任何地方的连接。注释掉它允许从所有来源访问,而不仅仅是本地主机。EC2 安全组限制对端口 3306 的访问仅限于主服务器。
现在工作得很好。再次感谢您的关注。