1. 程式人生 > >Redis-Migrate-Tool 使用詳解2

Redis-Migrate-Tool 使用詳解2

線上遷移
redis-migrate-tool啟動後模擬成redis slave,請求master的全量資料和增量資料。redis-migrate-tool 收到資料之後解析成redis協議格式的oplog(寫操作),然後傳送給目標叢集。
有兩種請求方式:
1、source_safe: true,對於同一ip上的redis,逐個的請求全量資料(RDB);
2、source_safe: false,並行請求同步全量資料。source_safe: false時,需要注意多個源redis所在的同一主機是否有足夠的記憶體 和 RDB 併發落盤時的 IOPS 效能

RMT配置檔案
RMT的配置主要由三部分組成,資料來源[source],目標叢集[target],通用配置部分[common]。
RMT對源叢集的型別並不敏感,對每個redis節點偽裝成一個slave。因而 twemproxy和cluster叢集,可以使用 single 和 cluster 型別。建議配置成對應的 twemproxy 或者 cluster型別。有兩方面作用:
1)RMT在資料遷移時,可以根據 twemproxy(hash)或者cluster(slots)資料分佈規則,過濾掉原本不屬於該節點的資料;
2)當源叢集型別是cluster時,只用配置一個節點,簡化配置。
目標叢集,因為不同資料分佈規則需要執行不同的寫入邏輯,因而配置非常嚴謹。特別是tw叢集,遷移到目標叢集的server配置需要和twemproxy中保持一致,包括hash演算法、資料分佈演算法、節點的ip和port、權重、節點的名字。
完整配置請參考github(

https://github.com/vipshop/redis-migrate-tool#configuration)。

遷移後業務切換
如果是異構叢集的遷移,更改redis驅動/客戶端和修改程式碼,重新發布是必然的事情。如果是同構叢集,做配置釋出就可以。如果沒有做重啟發布,等待源叢集沒有連線之後,可以關閉REDIS-MIGRATE-TOOL程序(kill)。或者重啟應用,強制斷開長連線。

注意事項:
1、REDIS-MIGRATE-TOOL遷移資料到twemproxy,需要保持rmt.conf 中 [target] hash、distribution、servers 三個引數和目標叢集的twemproxy配置嚴格一致。
2、遷移中和業務切換之前,請反覆觀察”-o redis-migrate-tool.log”日誌資訊,確認是否有異常。
3、業務切換之前,請充分檢查,特別是資料的一致性。
4、REDIS-MIGRATE-TOOL 建議部署在單獨空閒機器上,同目的叢集在同一個網段(跨機房遷移資料,可以提高遷移速度)。千萬不要部署在源叢集所在的機器,防止資源不足,比如記憶體,頻寬,IOPS。
5、注意RDB傳輸是否超時;
6、redis client buf中的slave項,設定足夠大的buffer size和超時時間。
7.執行此工具前,請確認redis源機器是否有足夠的記憶體允許至少生成一個RDB檔案。如果redis源機器有足夠的記憶體允許所有的redis同時生成RDB檔案,可以在配置檔案rmt.conf中的新增配置項source_safe: false
8.以下命令不支援傳播到目標redis組,因為keys使用這些命令可能會跨越不同的目標redis節點:
RENAME,RENAMENX,RPOPLPUSH,BRPOPLPUSH,FLUSHALL,FLUSHDB,BITOP,MOVE,GEORADIUS,GEORADIUSBYMEMBER,EVAL,EVALSHA,SCRIPT,PFMERGE