如何安全地复制 Memcached 数据?

如何安全地复制 Memcached 数据?

我在多个 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 的补丁集。我认为针对您的生产应用程序实施该补丁集会比较棘手。

答案2

我使用 haproxy +微型路由器+麦克斯德实现高可用性。

Haproxy 将客户端连接到可用的服务器。Mcrouter 负责将写入复制到多台机器,而 Mcseed 会从幸存的节点中预填充新节点。

在此处输入图片描述

相关内容