如何将mysql.rds_set_external_master设置为RDS实例?

时间:2019-07-12 21:49:42

标签: mysql amazon-rds database-replication

我正在尝试从一个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

我开始认为第一个链接要求我们做不可能的事情...

2 个答案:

答案 0 :(得分:1)

解决了它。

您需要将内部专用IP用于主实例

  1. 在同一区域中使用ec2实例,运行

    dig <your-master-instance>.rds.amazonaws.com

    (如果您不进行挖掘,也可以使用nslookup。)

  2. 获取生成的内部IP,例如172.31.123.123

  3. 在呼叫

    时使用该IP

    mysql.rds_set_external_master(...)

    ...在新实例上。

请注意,通常不应使用RDS实例的IP连接到RDS实例,因为IP是动态的,并且可以随着自动版本升级等更改。

但是,在这种情况下,内部IP有效,而主机名无效。另外,由于这是一个升级过程,因此新实例最多只需要复制主机几个小时:使用内部IP应该没问题。

在AWS企业支持部门向Aryan喊话。

答案 1 :(得分:0)

当我尝试将主服务器设置为只读副本,将其更改为使用 DNS 的主服务器时,我遇到了类似的问题

相关问题