我想在我的计算机 (MASTER) 上的 VM 上创建托管数据库的副本到 AWS 云 (SLAVE)。
我可以从 EC2 实例连接到 2 DB。
我使用 AWS 脚本设置参数:
mysql> CALL mysql.rds_set_external_master ('<MY.PUBLIC.IP>', 3306, '<username>', '<password>', 'mysqld-bin.0000013', 343, 0);
(当然我的IP,用户名和密码都隐藏在这里)
但是当启动复制(使用 AWS 脚本)时,它一直卡在:
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: <MY-PUBLIC-IP> (censored here)
Master_User: slaveuser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.0000013
Read_Master_Log_Pos: 343
Relay_Log_File: relaylog.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysqld-bin.0000013
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
我在 RDS 的安全组中添加了我的公共 IP 和 MYSQL 端口(没有更改它,仍然是 3306)但没有任何反应,没有特别的错误(Last_errno:0 等...)
我错过了什么?
答案1
您的主数据库虚拟机是否位于 NAT 后面?如果是,您是否获得了MySQL 端口转发从外部到 VM?
您的 RDS 是否位于其所属的子网中可以访问外部? 即在连接 IGW 的公共子网中,以及公共 IP或者在具有 NAT 网关的私有子网中?
如果您想从 RDS 连接到您的 VM,则这两个条件必须都成立。
希望有帮助:)
答案2
感谢您的回答 :)
它位于 NAT 后面,但 3306 已转发到它。它可以通过 WAN 访问,我是从 EC2 实例连接的
你可能是对的,它给了我一个想法,尝试从虚拟机连接到 RDS DB,但是...我不能(连接超时)我不明白为什么,RDS 是公共的 RDS 位于安全组中,接受我的公共 IP 用于 MYSQL 流量
找到了,我修改了我的路线表,一切正常!
谢谢你让我走上正确的道路