更新时间:2024-10-30 GMT+08:00

Kvrocks到GeminiDB Redis的迁移

Kvrocks是一款开源的兼容Redis生态的NoSQL key-value数据库,底层基于RocksDB实现,并提供namespace功能支持数据分区。Kvrocks集群管理功能相对薄弱,自建集群时需要与外部组件配合,Kvrocks支持的redis命令还不够全面,例如缺少在消息流和统计场景经常使用的stream及hyperloglog数据结构。

GeminiDB Redis接口是一款兼容Redis生态的云原生NoSQL数据库,基于共享存储池的多副本强一致机制,保证数据的安全可靠。GeminiDB Redis接口具有高兼容、高性价比、高可靠、弹性伸缩、高可用、无损扩容等特点。不亚于RedisCluster的兼容度,使用户在应用时无需修改代码,可直接使用,100%兼容原生接口。GeminiDB Redis接口在适配Kvrocks业务的同时,还能克服管理能力弱、对Redis兼容度不高等缺点。

本章节主要介绍Kvrocks到GeminiDB 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实例清空全部数据。

操作步骤

如需进行Kvrocks到GeminiDB Redis的迁移,您可以在管理控制台右上角,选择“工单 > 新建工单”,联系客服进行处理。