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

问题描述 投票:1回答:1

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

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

mysql amazon-rds database-replication
1个回答
0
投票

已解决。

您需要使用主实例的内部专用IP

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

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

    ((如果您没有挖洞,也可以使用nslookup。)

  2. 获取结果内部IP,例如172.31.123.123

  3. [在呼叫时使用该IP

    mysql.rds_set_external_master(...)

    ...在新实例上。

请注意,由于IP是动态的并且可以通过自动版本升级等更改,因此通常不应使用其IP连接到RDS实例。>

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

在AWS企业支持处向Aryan喊话。

© www.soinside.com 2019 - 2024. All rights reserved.