在線互相切換Redis主從實(shí)例

在線互相切換Redis主從實(shí)例

由于某些原因,我們可能需要將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視頻教程欄目。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享