前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 数据迁移工具

Redis 数据迁移工具

作者头像
用户1278550
发布2023-09-04 12:31:45
8370
发布2023-09-04 12:31:45
举报
文章被收录于专栏:idba

一 简介

Redis Input/Output Tools (RIOT) 工具是一款支持 Redis 和文件,数据库之间进行数据同步的工具,支持全量和增量同步。

2.1 基础原理

RIOT 基于迁移数据的逻辑架构图如下:

RIOT 支持全量和增量迁移,从其逻辑架构图上来看,RIOT 使用生产者和消费者模型,全量迁移是基于 Redis 的 SCAN 功能,变量所有的key,然后获取键值对,放到后面的消费队列里面,写入到下游。

RIOT 工具的增量功能是基于 Redis 的键空间消息提醒(keyspace notification)功能,通过监听 源数据库的键值数据变化事件并解析该事件为对应的命令动作,在目标端执行该命令,以便达到增量迁移 key 的目的。

2.2 安装

需要在测试机器上安装 java-1.8.0-openjdk, 然后上传并解压 RIOT 软件包。

代码语言:javascript
复制
sudo yum install  -y java-1.8.0-openjdk 
unzip riot-3.1.4.zip
cd riot-3.1.4/bin 
./riot --help 
2.3 迁移命令

RIOT 工具支持 Redis 到 Redis ,文件和 Redis, 数据库和 Redis 之间进行数据同步迁移,本文只基于 Redis 之间的数据迁移功能。其他功能大家有兴趣可以自己去探索。

常用参数说明:
代码语言:javascript
复制
Redis connection options
  -a, --pass[=<password>]  # 指定访问 Redis 的密码
  -c, --cluster            # 支持 cluster 模式,如果源或者目标库是 cluster 模式,需要指定该参数
  -h, --hostname=<host>    # 数据库 主机 ip/dns 地址
  -n, --db=<db>            #  同步数据库的编号,默认是 0
      --no-auto-reconnect   Disable auto-reconnect on connection loss.
  -p, --port=<port>        # 实例的端口号
      --timeout=<sec>      # Redis 命令的超时时间
  -u, --user=<name>        # 需要配置用户名和密码
  --batch 指定批量获取 key的数量,默认是50 
  --mode 同步数据的默认,支持全量 和 增量 ,对比功能
  

基础迁移命令

riotreplicate--mode <snapshot|live|compare> [OPTIONS]

./riot -h 源ip -p port replicate -h 目标ip -p port [ --user=user_name --pass=password ] --mode live --progress log

三 迁移测试

代码语言:javascript
复制
SET name aliyun_poc
MSET key1 value1 key2 value2 
SET number 0
INCR number
INCRBY number 10
DECR number
DECRBY number 10
LPUSH k1 v1 k2 v2  k3 v3
HMSET uid:1 name Tom age 15
HMSET uid:2 name Jerry age 13
SADD article:1 uid:1 article:1 uid:2
SADD article:1 uid:3
SREM article:1 uid:1
SMEMBERS article:1
SCARD article:1
ZADD user:score 80 "yangyi" 90 "zhangsan"
ZRANGE user:score 0 -1 WITHSCORES
SETBIT online 1001 1
PFADD user:visit 192.168.0.1 192.168.0.2 192.168.0.3

全量迁移

增量迁移

测试十多种数据类型,都能同步到目标端。

四 小结

  1. RIOT 工具为二进制包,唯一依赖安装机器需要安装 java-1.8.0 软件,总体安装实施门槛非常低。
  2. RIOT 工具支持作为从库实时同步数据,迁移速度还是非常快的,现有的测试环境中迁移速度可达 3w/s ,具体涉及到客户的环境,需要注意出口带宽,避免带宽比较小,导致迁移延迟。
  3. 如果目标端是 5.0 的集群版本且带有密码认证的话会报错 ERR wrong number of arguments for 'AUTH' command。目前测试 6.0/7.0 版本没有问题。
  4. 目标数据库的版本必须大于等于源数据库的版本,否则会出现校验版本的报错。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yangyidba 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 简介
    • 2.1 基础原理
      • 2.2 安装
        • 2.3 迁移命令
          • 常用参数说明:
          • 三 迁移测试
          • 四 小结
          相关产品与服务
          云数据库 Redis®
          腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档