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