将数据从一台memcached服务器传输到另一台memcached服务器

将数据从一台memcached服务器传输到另一台memcached服务器

问题描述:

目前我们正在将我们的用户会话存储在memcached中,我们的Web应用程序使用PHP 5.3.6和Apache 2.2.3运行。将数据从一台memcached服务器传输到另一台memcached服务器

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

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

谢谢!

问候

+0

为什么这么多downvotes? –

+0

:(不知道是否我发布了这个错误的部分? – forestclown

+2

+1好问题 – servermanfail

你最好的选择是可能添加一些代码到你的系统中,当用户访问,写会话到两个新服务器和旧的,然后让他们在并行的运行一会儿,然后关掉旧的服务器。这样,您就可以“热身”新服务器而不需要实际依赖它,然后在大部分会话被移动完之后进行交换。

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

+0

谢谢琥珀,是一个很好的建议。但我怀疑我们能够调整我们的代码在这一点上来实现这一点 – forestclown

+1

然后,可能只是需要将其交换出去Memcache并非设计为持久存储 - 最好设计您的网站,以便处理丢失memcache的内容(或者,如果没有,则运行多机器memcache群集这样你就可以在不丢失整个集群的情况下旋转单个服务器) – Amber

+1

你可能想要查看tcpcopy(http://code.google.com/p/tcpcopy/)它可以让你分割一个tcp流到新的和旧的memcached服务器 – mikewied

memcached工具是可能的。

memcached-tool 10.1.2.30:11211 dump | nc 127.0.0.1 11211 
+1

如果你需要找到它,memcached工具可以在Debian的'/ usr/share/memcached/scripts'找到。 – phirschybar

+0

我写了一些sc ripts使用systemd在启动时自动执行此过程。 https://github.com/ticpu/tools/tree/master/memcached-replicate – TiCPU

+0

这工作,我成功地将我的memcache数据移动到一个新的服务器没有任何问题。 – rayhan