由于某些原因,我們可能需要將redis?master更換機(jī)器,我們可以停機(jī)進(jìn)行更換,但是那樣可能影響到用戶體驗(yàn)。本文簡要操作進(jìn)行不停機(jī)遷移。
(推薦:redis視頻教程)
系統(tǒng)環(huán)境
CentOS 6.3 x64
redis-server 2.6.16
機(jī)器兩臺s1s2
操作步驟
1、我們在新redis服務(wù)器上,啟動一個redis實(shí)例,配置和master配置一致,不同的是配置文件中修改并啟用 slave-read-only no,
讓slave 能寫,因?yàn)?“Since Redis 2.6 by default slaves are read-only.”
2、讓新redis成為slave:redis 127.0.0.1:6379>SLAVEOF s1 6379
然后可以查看s2上的log,會有大量的同步信息,也可以使用info命令查看狀態(tài)。
3、s2完全同步s1的數(shù)據(jù)后,我們修改游戲app的redis ip,改為s2的ip。
4、查看游戲是否正常。
5、以上沒有問題后,在s2上執(zhí)行 redis 127.0.0.1:6379> SLAVEOF NO ONE
6、下線s1
PS:
SLAVEOF host port
SLAVEOF 命令用于在 Redis 運(yùn)行時動態(tài)地修改復(fù)制(replication)功能的行為。
通過執(zhí)行 SLAVEOF host port 命令,可以將當(dāng)前服務(wù)器轉(zhuǎn)變?yōu)橹付ǚ?wù)器的從屬服務(wù)器(slave server)。
如果當(dāng)前服務(wù)器已經(jīng)是某個主服務(wù)器(master server)的從屬服務(wù)器,那么執(zhí)行 SLAVEOF host port 將使當(dāng)前服務(wù)器停止對舊主服務(wù)器的同步,丟棄舊數(shù)據(jù)集,轉(zhuǎn)而開始對新主服務(wù)器進(jìn)行同步。
另外,對一個從屬服務(wù)器執(zhí)行命令 SLAVEOF NO ONE 將使得這個從屬服務(wù)器關(guān)閉復(fù)制功能,并從從屬服務(wù)器轉(zhuǎn)變回主服務(wù)器,原來同步所得的數(shù)據(jù)集不會被丟棄。
利用『 SLAVEOF NO ONE 不會丟棄同步所得數(shù)據(jù)集』這個特性,可以在主服務(wù)器失敗的時候,將從屬服務(wù)器用作新的主服務(wù)器,從而實(shí)現(xiàn)無間斷運(yùn)行。
可用版本:
>= 1.0.0
時間復(fù)雜度:
SLAVEOF host port ,O(N), N 為要同步的數(shù)據(jù)數(shù)量。
SLAVEOF NO ONE , O(1) 。
返回值:
總是返回 OK 。
更多redis知識請關(guān)注redis視頻教程欄目。