我的阅读密集型应用程序需要水平缩放。它将由各种客户端使用亚马逊EC2进行部署。我最初的想法是,基本设置将使用一个RDS实例和一个EC2实例。EC2 (c1.media)实例将运行一个RDS服务器和一个RDS服务器的本地MySQL读取副本。应用程序被配置为使用RDS服务器进行写操作,使用localhost进行读取。使用自动标度组,会根据加载启动更多c1.media EC2实例。每个新的EC2实例都有自己的本地mysql复制数据供读取。
现在的问题是:我可以连接到RDS来创建本地读取副本吗?
显而易见的替代方法是使用RDS启动额外的官方读取副本节点,但我不喜欢这样做,因为那样的话,我需要按2台机器的步骤进行扩展,而不是1台,这要花费更多。另外,由于延迟,我更喜欢让mysql在本地读取查询。
发布于 2012-02-03 14:05:11
虽然我已经用两种方式解释了关于非RDS到RDS复制的链接和引用AWS论坛的响应(否则他们可能提到了另一种方法),但是一个明确地询问使用RDS作为复制母版的相关问题到今天也没有得到解决。
不幸的是,亚马逊RDS仍然不支持这一点,请参阅drcursor对类似问题是否可以将EC2RDS MySQL实例用作外部主服务器的从属程序?的回答:
截至2011年2月,这仍然不受支持,作为复制从节点的RDS实例:非RDS到RDS复制目前不支持...。然而,我们将记录您对我们未来路线图规划的兴趣。
发布于 2012-02-03 14:03:31
为什么不简单地使用RDS读取副本来设置较小的实例来执行您的读取,并将主RDS留给写操作呢?看来您的系统已经开发出来来处理这个问题了。要设置RDS实例的复制,而不执行重复的mysqldumps,然后在本地重新导入,并不是一种简单的方法。如果您的应用程序在内部进行适当的数据缓存,那么它就不必对读取副本进行1:1的缩放。如果应用程序中的数据缓存非常糟糕,那么您必须拥有比我更多的1:1比例,然后再重新整理应用程序,或者考虑使用memcache (ElastiCache)来中间存储来自RDS读取的缓存数据。
https://serverfault.com/questions/356536
复制相似问题