Redis 数据迁移工具

一 简介

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

Redis 数据迁移工具

2.1 基础原理

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


Redis 数据迁移工具


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

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

2.2 安装

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

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 之间的数据迁移功能。其他功能大家有兴趣可以自己去探索。

常用参数说明:

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

三 迁移测试

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


全量迁移

Redis 数据迁移工具


增量迁移

Redis 数据迁移工具


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

四 小结

  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. 目标数据库的版本必须大于等于源数据库的版本,否则会出现校验版本的报错。


原文始发于微信公众号(yangyidba):Redis 数据迁移工具

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/159625.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!