我在多个 Memcached 服务器上运行着大约 100GB 的数据,但我们正在将所有基础设施迁移到 Amazon AWS,因此我想找到一种方法来在这些新服务器上复制这些信息。
我现在遇到的问题是,要将所有信息提交到数据库,我需要大约 12-14 个小时,而在此期间应用程序必须关闭(我们获得的数据/时间单位比我们可以保存到数据库的数据更多)。
我们主要关心的是应用程序在此期间能否保持活动状态,因此我想知道您是否可以推荐任何工具,让我们能够将数据从一个 memcached 服务器复制到另一个 memcached 服务器,而无需关闭服务器或担心手动执行此操作。
答案1
请参阅此链接:
http://horicky.blogspot.com/2009/10/notes-on-memcached.html
其中写道:
当其中一台服务器崩溃时,该服务器拥有的所有条目都会丢失。通过在不同的服务器中存储数据的冗余副本可以实现更高的弹性。Memcached 不支持数据复制。这必须由应用程序(或客户端库)处理。
请注意,默认的服务器哈希算法不能很好地处理服务器数量的增长和减少。当服务器数量发生变化时,所有权方程 (key mod N) 将完全错误。换句话说,如果需要从池中取出崩溃的服务器,服务器总数将减少一个,并且所有现有条目都需要重新分配到不同的服务器。实际上,即使只有一台服务器崩溃,整个缓存(在所有服务器中)也会失效。
有“repcached”:
http://repcached.lab.klab.org/
但这是针对 memcached 的补丁集。我认为针对您的生产应用程序实施该补丁集会比较棘手。