凯发k8国际娱乐官网入口-k8凯发> 云数据库 geminidb> > > 自建redis到geminidb redis的迁移
更新时间:2023-11-21 gmt 08:00

自建redis到geminidb redis的迁移-凯发k8国际娱乐官网入口

本章节主要介绍自建redis到geminidb redis的迁移方案。

迁移原理

使用redis-shake迁移工具进行源端redis到目标端geminidb redis的迁移。迁移过程支持全量 增量迁移,支持单机/主从/cluster集群/rdb文件等多种redis数据源。

  • 全量迁移原理:工具模拟源端redis的从节点,通过全量同步获取rdb文件,解析后将数据以命令形式发送给目标端geminidb redis。此外,也可将rdb文件作为数据源,方便地导入某时刻的数据快照。
  • 增量迁移原理:全量迁移完成后,工具继续将增量数据以命令形式发送给目标端geminidb redis,直到手动停止工具。

使用须知

  • 如遇到源端redis同步脱节,此时需要停止迁移工具,清空目标端数据并重新迁移。为避免此场景,建议在写入流量低峰时段迁移,并可适当调大源端client-output-buffer-limit参数,以增大增量同步的环形缓冲区大小。
  • 迁移工具理论上不会对源端数据造成影响,但可能会暂时影响性能。
  • 多db迁移场景,需注意源端与目标端的db映射关系,避免造成非预期的数据覆盖。
  • 暂时不支持stream类型数据的迁移。
  • 保证迁移工具redis-shake、源端redis和目标端geminidb redis网络互通。
  • 如需进行自建redis到geminidb redis的迁移支持,您可以在管理控制台右上角,选择“工单 > 新建工单”,联系凯发k8国际娱乐官网入口的技术支持进行处理。

开源redis单机/主从版在线移到geminidb redis

开源redis单机/主从版除了可以采用上述文件导入方式外,还可以在线迁移到geminidb redis

  1. 部署迁移工具。
    1. 获取开源工具。

      redis-shake工具可下载release版本,解压缩后即可使用。

    2. 修改配置文件“redis-shake.conf”,修改时需要注意以下配置项。

      log.level = info # 默认日志级别,info级别可以打印出相应的迁移进度,可以用来判断迁移是否结束。

      source.address = : # 源端地址,开源redis所在主机及端口。

      source.password_raw = ***** # 源端口令。

      source.type = standalone # 根据源端类型选择。

      target.address = :8635 # 目标端地址。

      target.password_raw = ***** # 目标端口令。

      target.version = 5.0 # 目标端redis版本。

      target.type = standalone # 目标端类型。

      target.db = -1 # 将所有数据迁移到目标端geminidb redis的指定数据库上,若设置为-1,则迁移后的数据库和源实例的db保持相同的映射关系。

    3. 按需选配是否覆盖目标端数据。

      key_exists = none

      当源端和目的端有重复key时需要选配是否覆盖目标端数据,可配置的值为:

      • rewrite:源端覆盖目的端。
      • none:一旦发生进程直接退出。
      • ignore:保留目的端key,忽略源端的同步key。该值在rump模式下不会生效。

      由于本次迁移源端是rdb文件,因此预期无重复数据,建议选择none。如迁移过程异常退出,请联系凯发k8国际娱乐官网入口的技术支持进行处理。

  2. 进行数据迁移。

    启动迁移命令:

    ./redis-shake.linux -conf=redis-shake.conf -type=sync

    • 执行日志中出现如下信息,代表全量数据同步完成,进入增量同步阶段。
      sync rdb done
    • 执行日志出现如下信息时,代表增量同步无新增内容,可以停止程序以中断增量同步。
      sync:   forwardcommands=0       filtercommands=0       writebytes=0
  3. 数据校验。

    使开源redis单机/主从版在线移到geminidb redis用工具进行校验,下载并解压缩后即可使用。

    ./redis-full-check -s source_ip:source_port -p source_pwd -t target_ip:8635 -a target_pwd

    校验完毕出现如下信息表示迁移成功,源端与目的端数据相同。

    all finish successfully, totally 0 key(s) and 0 field(s) conflict

开源redis集群版迁移到geminidb redis

对于开源redis集群版,需要注意配置文件中以下两项:

source.address = :,:,: # 源端各节点所在主机及端口

source.type = cluster # 源端为cluster集群

其他步骤与开源redis单机/主从版在线移到geminidb redis相同。

开源codis集群版迁移到geminidb redis

对于codis集群版,需要获取各个分片所在的主机以及端口,注意配置文件以下两项:

source.address = :,:,: # 源端各节点所在主机及端口

source.type = cluster # 源端为cluster集群

其他步骤与开源redis单机/主从版在线移到geminidb redis相同。

开源redis全量扫描迁移到geminidb redis

如果以上场景都没法实现,可以采用redis-shake的全量扫描(rump)来逐个扫描来进行迁移。

  1. 部署迁移工具。
    1. 获取开源工具。

      redis-shake工具可下载release版本,解压缩后即可使用。

    2. 修改配置文件“redis-shake.conf”,修改时需要注意以下配置项。

      log.level = info # 默认日志级别,info级别可以打印出相应的迁移进度,可以用来判断迁移是否结束。

      source.address = : # 源端地址,开源redis所在主机及端口。

      source.password_raw = ***** # 源端口令。

      source.type = standalone # 根据源端类型选择。

      target.address = :8635 # 目标端地址。

      target.password_raw = ***** # 目标端口令。

      target.version = 5.0 # 目标端redis版本。

      target.type = standalone # 目标端类型。

      target.db = -1 # 将所有数据迁移到目标端geminidb redis的指定数据库上,若设置为-1,则迁移后的数据库和源实例的db保持相同的映射关系。

    3. 按需选配是否覆盖目标端数据。

      key_exists = none

      当源端和目的端有重复key时需要选配是否覆盖目标端数据,可配置的值为:

      • rewrite:源端覆盖目的端。
      • none:一旦发生进程直接退出。
      • ignore:保留目的端key,忽略源端的同步key。该值在rump模式下不会生效。

      由于本次迁移源端是rdb文件,因此预期无重复数据,建议选择none。如迁移过程异常退出,请联系凯发k8国际娱乐官网入口的技术支持进行处理。

  2. 进行数据迁移。

    启动迁移命令:

    ./redis-shake.linux -conf=redis-shake.conf -type=rump

    • 执行日志中出现如下信息,代表全量数据同步完成。
      dbrumper[0] executor[0] finish
  3. 数据校验。

    使用工具进行校验,下载并解压缩后即可使用。

    ./redis-full-check -s source_ip:source_port -p source_pwd -t target_ip:8635 -a target_pwd

    校验完毕出现如下信息表示迁移成功,源端与目的端数据相同。

    all finish successfully, totally 0 key(s) and 0 field(s) conflict

注:使用redis-shake v2迁移过程中,常见问题及解决方法请参考。

分享:
网站地图