n 遷移環境描述及分析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 |
n 選擇合適的遷移方法
1. 使用shell腳本+redis命令
2. 使用dump.rdb或appendonly.aof文件
第一種適用於數據量少,只遷移部分數據的狀況。第二種適用於咱們當下的狀況。
n 遷移步驟
前期準備:
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) 啓動全部應用,並驗證
n 遷移測試實施
如下是遷移步驟的整個實施過程:
目標端停集羣(先備後主):
清除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集羣遷移就到此完成了。