我正在尝试从一个RDS MySql实例(名为Original)手动复制到另一个RDS MySql实例(名为New)。我基本上是按照此处概述的步骤操作:https://aws.amazon.com/premiumsupport/knowledge-center/rds-encrypt-instance-mysql-mariadb/
我被困在步骤11-13的周围。我使用原始只读副本吐出的IP地址运行call mysql.rds_set_external_master
。但是当我随后运行SHOW SLAVE STATUS\G;
时,我看到它卡在Slave_IO_State: Connecting to master
上,并且日志显示:
[ERROR] [MY-010584] [Repl] Slave I/O for channel '': error connecting to master '[email protected]:3306' - retry-time: 60 retries: 1, Error_code: MY-002003
我仔细检查了安全组和VPC设置,一切正常。
AWS documentation on rds_set_external_master没有提到能够将RDS实例设置为复制主机。它具体指出Configures a MySQL DB instance to be a Read Replica of an instance of MySQL running external to Amazon RDS
我开始认为第一个链接正在要求我们做不可能的事情...
已解决。
您需要使用主实例的内部专用IP。
在同一区域中使用ec2实例,运行
dig <your-master-instance>.rds.amazonaws.com
((如果您没有挖洞,也可以使用nslookup。)
获取结果内部IP,例如172.31.123.123
[在呼叫时使用该IP
mysql.rds_set_external_master(...)
...在新实例上。
请注意,由于IP是动态的并且可以通过自动版本升级等更改,因此通常不应使用其IP连接到RDS实例。>
但是,在这种情况下,内部IP有效,而主机名无效。另外,由于这是一个升级过程,因此新实例最多只需要复制主机几个小时:使用内部IP应该可以。
在AWS企业支持处向Aryan喊话。