redis集群數據遷移


redis集群數據備份遷移方案

遷移環境描述及分析

當前我們面臨的數據遷移環境是:集群->集群。

源集群:

 

源集群為6節點,3主3備

192.168.112.33:8001

192.168.112.33:8004-8006

192.168.112.33:8002

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集群遷移就到此完成了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM