持久地将RDS MySQL数据库复制到外部从属服务器

时间:2014-11-03 15:18:36

标签: mysql amazon-web-services amazon-rds database-administration

AWS现在允许您to replicate data from an RDS instance to an external MySQL database

然而,根据文件:

  

只有在从MySQL数据库实例导出数据库所需的时间内,才支持复制到在Amazon RDS外部运行的MySQL实例。导出数据并且应用程序可以开始访问外部实例时,应终止复制。

这有什么理由吗?如果我希望复制是持久且永久的,我可以选择忽略它吗?或者AWS是否以某种方式强制执行此操作?如果是这样,有没有解决方法?

1 个答案:

答案 0 :(得分:3)

除了您引用的声明之外,亚马逊没有明确说明为什么他们不支持正在进行的复制。根据我的经验,如果AWS没有明确说明他们为什么要做某事的原因,那么除非他们决定稍后将其记录下来,否则你不可能发现它。

我的猜测是它与Amazon实例的动态特性以及它们在RDS中的运行方式有关。 RDS实例可以在没有警告的情况下突然更改其IP地址。我们在不止一次的情况下遇到过我们运行的RDS实例。根据RDS Best Practices指南:

  

如果您的客户端应用程序正在缓存数据库实例的DNS数据,请设置小于30秒的TTL。由于数据库实例的基础IP地址可能在故障转移后发生更改,因此如果应用程序尝试连接到不再使用的IP地址,则将DNS数据缓存较长时间可能会导致连接失败。

鉴于RDS实例可以并且确实会不时地更改其IP地址,我的猜测是他们只是想避免不得不支持设置外部复制的人只有在RDS突然中断时才可能实例获得一个新的IP地址。除非您将复制用户和保护外部mysql服务器的任何防火墙设置为相当广泛,否则如果RDS主服务器因任何原因(维护,硬件故障等)重新启动,则复制可能会突然停止。从安全角度来看,打开复制用户和防火墙端口并不是一个好主意。