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的迁移,您可以在管理控制台右上角,选择“工单 > 新建工单”,联系技术支持进行处理。