2011-10-06 253 views
9

目前我們正在將我們的用戶會話存儲在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

回答

3

你最好的選擇是可能添加一些代碼到你的系統中,當用戶訪問,寫會話到兩個新服務器和舊的,然後讓他們在並行的運行一會兒,然後關掉舊的服務器。這樣,您就可以「熱身」新服務器而不需要實際依賴它,然後在大部分會話被移動完之後進行交換。

你仍然會失去一些會話,但最常見的訪問者不會注意到任何事情,因爲他們的會話將被移動。

+0

謝謝琥珀,是一個很好的建議。但我懷疑我們能夠調整我們的代碼在這一點上來實現這一點 – forestclown

+1

然後,可能只是需要將其交換出去Memcache並非設計爲持久存儲 - 最好設計您的網站,以便處理丟失memcache的內容(或者,如果沒有,則運行多機器memcache羣集這樣你就可以在不丟失整個集羣的情況下旋轉單個服務器) – Amber

+1

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

12

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

相關問題