Kvrocks是一款開源的兼容Redis生態的NoSQL key-value數據庫,底層基于RocksDB實現,并提供namespace功能支持數據分區。Kvrocks集群管理功能相對薄弱,自建集群時需要與外部組件配合,Kvrocks支持的redis命令還不夠全面,例如缺少在消息流和統計場景經常使用的stream及hyperloglog數據結構。
GeminiDB Redis是一款兼容Redis生態的云原生NoSQL數據庫,基于共享存儲池的多副本強一致機制,保證數據的安全可靠。GeminiDB Redis具有高兼容、高性價比、高可靠、彈性伸縮、高可用、無損擴容等特點。不亞于RedisCluster的兼容度,使用戶在應用時無需修改代碼,可直接使用,100%兼容原生接口。GeminiDB Redis在適配Kvrocks業務的同時,還能克服器管理能力弱、對Redis兼容度不高等缺點。
遷移原理
使用開源工具kvrocks2redis進行Kvrocks到GeminiDB Redis的遷移,在此基礎上,從GeminiDB Redis源碼層面對Kvrocks的namespace功能進行適配。
遷移過程分為全量和增量兩個階段:遷移開始后,先進行全量遷移,此時對kvrocks打快照,并記錄對應的數據版本(seq)。然后解析全量數據文件成redis命令寫入GeminiDB Redis。全量遷移完成后進入持續的增量遷移過程,遷移工具循環給Kvrocks發送PSYNC命令,將獲取到的增量數據不斷轉發給GeminiDB Redis,完成增量遷移 。
使用須知
kvrocks2redis需要從Kvrocks提取數據到本地文件,并從中解析出命令發送到目標端GeminiDB Redis ,該過程中可能影響源端性能,但理論上不會有數據受損風險。
遷移工具運行過程中,若出現問題,遷移工具會自動停止,方便問題定位。
GeminiDB Redis從安全性角度出發,不提供清庫語義命令,因此要在遷移開始前確保無數據。
前提條件
部署kvrocks2redis到獨立主機。
確保源端、目標端、遷移工具之間網絡互通。
源端Kvrocks實例提前做好數據備份。
目標端GeminiDB Redis實例清空全部數據。
操作步驟
如需進行Redis到GeminiDB Redis的遷移,您可以在管理控制臺右上角,選擇“工單 > 新建工單”,聯系技術支持進行處理。