一 简介
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 软件包。
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
全量迁移
增量迁移
测试十多种数据类型,都能同步到目标端。
四 小结
-
RIOT 工具为二进制包,唯一依赖安装机器需要安装 java-1.8.0 软件,总体安装实施门槛非常低。
-
RIOT 工具支持作为从库实时同步数据,迁移速度还是非常快的,现有的测试环境中迁移速度可达 3w/s ,具体涉及到客户的环境,需要注意出口带宽,避免带宽比较小,导致迁移延迟。
-
如果目标端是 5.0 的集群版本且带有密码认证的话会报错 ERR wrong number of arguments for ‘AUTH’ command。目前测试 6.0/7.0 版本没有问题。
-
目标数据库的版本必须大于等于源数据库的版本,否则会出现校验版本的报错。
原文始发于微信公众号(yangyidba):Redis 数据迁移工具
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/159625.html