redis集羣數據遷移

redis集羣數據備份遷移方案

遷移環境描述及分析redis

當前咱們面臨的數據遷移環境是:集羣->集羣。shell

源集羣:app

 

源集羣爲6節點,3主3備測試

ui

搜索引擎

192.168.112.33:8001spa

192.168.112.33:8004-8006索引

192.168.112.33:8002ci

同步

192.168.112.33:8003

值得注意的是:全部的槽位都分配在192.168.112.33:8001節點上,這樣更方便咱們遷移。

目標集羣:

 

也是6節點,3主3備

192.168.112.33:6001

192.168.112.34:6002

192.168.112.33:6005

192.168.112.33:6000

192.168.112.33:6004

192.168.112.34:6003

選擇合適的遷移方法

1.  使用shell腳本+redis命令

2.  使用dump.rdb或appendonly.aof文件

第一種適用於數據量少,只遷移部分數據的狀況。第二種適用於咱們當下的狀況。

遷移步驟

前期準備:

1) 停掉全部節點(先備後主),而後刪除全部節點下的appendonly.aof和dump.rdb文件,再動全部主節點,停掉全部節點(有密碼的話,最好先不要用密碼)

2) 肯定目標庫全部節點appendonly爲yes,將全部槽位分配到一個主節點

3) 停掉擁有全部槽位的那個節點,等待appendonly.aof文件

停業務遷移:

4) 停業務,此時能夠同步對全部應用修改redis配置(釘釘,管理門戶,搜索引擎)

5) 源庫手動觸發bgrewriteaof            源端(2分鐘)

6) 複製發送備份appendonly.aof            源端,目標端(5分鐘)

7) 啓動目標節點                        目標端(5分鐘)

8) reshared槽位,啓動備節點,設置密碼  目標端(5分鐘)

恢復應用:

9) 啓動全部應用,並驗證

遷移測試實施

如下是遷移步驟的整個實施過程:

 

目標端停集羣(先備後主):

 

 

 

 

清除appendonly.aof和dump.rdb

 

 

 

 

啓動全部主節點

 

 

 

 

 

轉移槽位到192.168.112.36:6004節點

./redis-trib.rb reshard --from bdd63e1f522d78eb1bb2574b2461a7302e14944a  --to 1d204c88a14a76dc30abb05025135f7e850f2a5d  --slots 5461 --yes 192.168.112.36:6004

./redis-trib.rb reshard --from be5b41880afac9c41b09e0d4e3be1ce1eb00959a  --to 1d204c88a14a76dc30abb05025135f7e850f2a5d  --slots 5462 --yes 192.168.112.36:6004

 

改配置文件,並停掉節點

 

 

原端集羣,停業務備份數據

 

 

copy文件appendonly.aof到目標庫分配了全部槽位的那個節點指定的appendonly.aof路徑下,並啓動節點。

 

再從新分配槽位,使槽位平均分配到各主節點。

 

 

 

而後啓動全部的備節點,並設置密碼,

redis-cli -c -h 192.168.112.33 -p 6000 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.33 -p 6000 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.33 -p 6000 config rewrite

 

redis-cli -c -h 192.168.112.33 -p 6001 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.33 -p 6001 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.33 -p 6001 config rewrite

 

redis-cli -c -h 192.168.112.34 -p 6002 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.34 -p 6002 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.34 -p 6002 config rewrite

 

redis-cli -c -h 192.168.112.34 -p 6003 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.34 -p 6003 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.34 -p 6003 config rewrite

 

redis-cli -c -h 192.168.112.36 -p 6004 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.36 -p 6004 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.36 -p 6004 config rewrite

 

redis-cli -c -h 192.168.112.36 -p 6005 config set masterauth Woread#2018

redis-cli -c -h 192.168.112.36 -p 6005 config set requirepass Woread#2018

redis-cli -c -h 192.168.112.36 -p 6005 config rewrite

 

redis集羣遷移就到此完成了。

相關文章
相關標籤/搜索