由於某些原因,我們可能需要將redis master更換機器,我們可以停機進行更換,但那樣可能會影響使用者體驗。本文簡要操作進行不停機遷移。
(建議:redis影片教學)
系統環境
CentOS 6.3 x64
redis- server 2.6.16
機器兩台s1\s2
操作步驟
1、我們在新redis伺服器上,啟動一個redis實例,設定和master配置一致,不同的是設定檔中修改並啟用slave-read-only no,
讓slave 能寫,因為「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指令查看狀態。
3、s2完全同步s1的資料後,我們修改遊戲app的redis ip,改為s2的ip。
4、查看遊戲是否正常。
5、以上沒有問題後,在s2上執行redis 127.0.0.1:6379> SLAVEOF NO ONE
6、下線s1
PS:
SLAVEOF host port
SLAVEOF 指令用於在Redis 執行時動態地修改複製(replication)功能的行為。
執行 SLAVEOF host port 指令,可以將目前伺服器轉變為指定伺服器的從屬伺服器(slave server)。
如果目前伺服器已經是某個主伺服器(master server)的從屬伺服器,那麼執行SLAVEOF host port 將使目前伺服器停止對舊主伺服器的同步,丟棄舊資料集,轉而開始對新主伺服器進行同步。
另外,對一個從屬伺服器執行指令 SLAVEOF NO ONE 將使得這個從屬伺服器關閉複製功能,並從從屬伺服器轉變回主伺服器,原來同步所得的資料集不會被丟棄。
利用『 SLAVEOF NO ONE 不會丟棄同步所得資料集』這個特性,可以在主伺服器失敗的時候,將從屬伺服器用作新的主伺服器,從而實現無間斷運作。
可用版本:
>= 1.0.0
時間複雜度:
SLAVEOF host port ,O(N), N 為要同步的數據數量。
SLAVEOF NO ONE , O(1) 。
傳回值:
總是傳回 OK 。
更多redis知識請關注redis入門教學欄位。
以上是在線互相切換Redis主從實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!