1、redis数据热迁移,先通过redis-shake工具实现。
2、再通过redis-full-check检查迁移后的数据是否想同。
3、redis-shake版本下载:
https://github.com/tair-opensource/RedisShake/releases4、redis-full-check版本下载:
https://github.com/tair-opensource/RedisFullCheck/releases5、中文资料
https://github.com/tair-opensource/RedisShake/wiki
redis-shake 支持特性:
高性能
.在 Redis 5.0、Redis 6.0 和 Redis 7.0 上测试
.支持使用lua自定义过滤规则
.支持大实例迁移
.支持restore模式和sync模式
.支持阿里云 Redis 和 ElastiCache
1、 安装redis-shake
mkdir -p /data/redis-shake
tar -zxvf redis-shake-linux-amd64.tar.gz -C /data/redis-shake
2、创建配置文件
[root@VM-0012725 redis-shake]# cat redis.toml
###
type = "sync"
[source]
version = 6.2
address = "x.x.x.x:6379"
username = ""
password = "passwd"
tls = false
elasticache_psync = ""
[target]
type = "standalone" # "standalone" or "cluster"
version = 6.2
address = "x.x.x.x:6379"
username = ""
password = "passwd"
tls = false
[advanced]
metrics_port = 9444
3、执行命令
cd /data/redis-shake
./redis-shake redis.toml
说明:
1)以下图所示:同步redis数据成功
1、安装redis-full-check
mkdir -p /data/redis-full-check
tar -zxvf redis-full-check-1.4.10.tar.gz -C /data/redis-full-check
2、参数说明
-s, --source=SOURCE 源redis库地址(ip:port),如果是集群版,那么需要以分号(;)
分割不同的db,只需要配置主或者从的其中之一。例如:
10.1.1.1:1000;10.2.2.2:2000;10.3.3.3:3000。
-p, --sourcepassword=Password 源redis库密码
--sourceauthtype=AUTH-TYPE 源库管理权限,开源reids下此参数无用。
--sourcedbtype= 源库的类别,0:db(standalone单节点、主从),1: cluster
(集群版),2: 阿里云
--sourcedbfilterlist= 源库需要抓取的逻辑db白名单,以分号(;)分割,例如:0;5;15
表示db0,db5和db15都会被抓取
-t, --target=TARGET 目的redis库地址(ip:port)
-a, --targetpassword=Password 目的redis库密码
--targetauthtype=AUTH-TYPE 目的库管理权限,开源reids下此参数无用。
--targetdbtype= 参考sourcedbtype
--targetdbfilterlist= 参考sourcedbfilterlist
-d, --db=Sqlite3-DB-FILE 对于差异的key存储的sqlite3 db的位置,默认result.db
--comparetimes=COUNT 比较轮数
-m, --comparemode= 比较模式,1表示全量比较,2表示只对比value的长度,3只对比
key是否存在,4全量比较的情况下,忽略大key的比较
--id= 用于打metric
--jobid= 用于打metric
--taskid= 用于打metric
-q, --qps= qps限速阈值
--interval=Second 每轮之间的时间间隔
--batchcount=COUNT 批量聚合的数量
--parallel=COUNT 比较的并发协程数,默认5
--log=FILE log文件
--result=FILE 不一致结果记录到result文件中,格式:'db diff-type
key field'
--metric=FILE metric文件
--bigkeythreshold=COUNT 大key拆分的阈值,用于comparemode=4
-f, --filterlist=FILTER 需要比较的key列表,以分号(;)分割。例
如:"abc*|efg|m*"表示对比'abc', 'abc1', 'efg', 'm',
'mxyz',不对比'efgh', 'p'。
-v, --version
3、数据对比
./redis-full-check -s "x.x.x.x:6379" -p "passwd" --sourcedbtype=0 --sourcedbfilterlist=0 -t "x.x.x.x:6379" -a "passwd" --targetdbtype=0
说明:以下图所示,新redis数据库和旧redis数据相同。