【问题标题】:persistently replicating RDS MySQL database to external slave将 RDS MySQL 数据库持久复制到外部从站
【发布时间】:2014-11-03 15:18:35
【问题描述】:
【问题讨论】:
标签:
mysql
amazon-web-services
amazon-rds
database-administration
【解决方案1】:
除了您引用的声明之外,亚马逊似乎没有明确说明为什么他们不支持持续复制。根据我的经验,如果 AWS 没有明确记录他们为什么做某事的原因,那么除非他们决定稍后记录,否则您不太可能发现。
我的猜测是它与 Amazon 实例的动态特性以及它们在 RDS 中的运行方式有关。 RDS 实例的 IP 地址可能会在没有警告的情况下突然更改。我们在运行的 RDS 实例中不止一次遇到过这种情况。根据 RDS Best Practices 指南:
如果您的客户端应用程序正在缓存您的数据库实例的 DNS 数据,请将 TTL 设置为小于 30 秒。由于数据库实例的底层 IP 地址在故障转移后可能会发生变化,如果您的应用程序尝试连接到不再使用的 IP 地址,那么长时间缓存 DNS 数据可能会导致连接失败。
鉴于 RDS 实例可以并且确实会不时更改其 IP 地址,我的猜测是,他们只是想避免不得不支持那些设置外部复制的人的可能性,但如果/当 RDS 突然中断时实例被分配了一个新的 IP 地址。除非您将复制用户和保护您的外部 mysql 服务器的任何防火墙设置为非常开放,否则如果 RDS 主服务器因任何原因(维护、硬件故障等)重新启动,复制可能会突然停止。从安全的角度来看,像这样打开复制用户和防火墙端口并不是一个好主意。