【问题标题】:Transfer data from one memcached server to another将数据从一台 memcached 服务器传输到另一台
【发布时间】:2013-06-19 13:39:23
【问题描述】:

目前我们将用户会话存储在 memcached 中,我们的 Web 应用程序使用 PHP 5.3.6 和 Apache 2.2.3 运行。

我们将更换我们的 memcached 服务器,我想知道是否有一种方法可以将数据从一个 memcached 服务器传输到另一个,以便用户会话仍然存在。 (尽量减少停机时间)

虽然我已经阅读了常见问题解答http://code.google.com/p/memcached/wiki/FAQ#How_can_you_dump_data_from_or_load_data_into_memcached?可能不可能做到这一点......但我希望有人有一些工具或解决方法来实现这一点。

谢谢!

最好的问候

【问题讨论】:

  • :( 不确定我是不是发错版块了?

标签: php memcached


【解决方案1】:

使用 memcached-tool 可以实现。

memcached-tool 10.1.2.30:11211 dump | nc 127.0.0.1 11211

【讨论】:

  • 如果您需要找到它,可以在 debian 上的/usr/share/memcached/scripts 中找到 memcached-tool。
  • 我编写了一些脚本来使用 systemd 在启动时自动执行此过程。 github.com/ticpu/tools/tree/master/memcached-replicate
  • 这成功了,我成功地将我的 memcache 数据移动到了新的服务器上,没有任何问题。
  • 在大型 memcached(约 500k 项)上,我不得不转储到一个临时文件并将其注入其他节点。
【解决方案2】:

最好的办法是在系统中添加一些代码,当用户访问时,将会话写入新服务器和旧服务器,然后让它们并行运行一段时间,然后关闭旧服务器。这样,您就可以“预热”新服务器,而无需真正依赖它,然后在大多数会话转移后进行交换。

您仍然会丢失一些会话,但最常访问的访问者不会注意到任何事情,因为他们的会话将被移动。

【讨论】:

  • 谢谢 Amber,这是一个很好的建议。但我怀疑我们现在是否能够调整我们的代码来实现这一点。
  • 那么你可能只需要换掉它。 Memcache 并非设计为持久存储 - 最好设计您的网站,以便您可以处理丢失 memcache 的内容(或者,如果没有,运行多机 memcache 集群,以便您可以轮换单个服务器,而无需丢失整个集群)。
  • 您可能想查看 tcpcopy (code.google.com/p/tcpcopy),它将允许您将 tcp 流拆分到新旧的两个 memcached 服务器。
猜你喜欢
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-04
  • 2015-11-05
相关资源
最近更新 更多