在Redis迁移完成后进行数据校验可以检查数据的一致性。
如果Redis迁移的过程出现异常,源端与目的端Redis的数据将会不一致。使用redis-full-check进行校验能够找出异常数据,为数据对齐提供可靠依据。
redis-full-check是阿里云自研的Redis数据校验工具,能够提取源端和目的端的数据进行多轮差异化比较,并将比较结果记录在一个SQLite3数据库中,从而达到全量数据校验的目的。
说明 如需了解更多redis-full-check相关信息,请参见redis-full-check Github主页。tar -xvf redis-full-check.tar.gz
./redis-full-check -s "<Redis集群地址1连接地址:Redis集群地址1端口号;Redis集群地址2连接地址:Redis集群地址2端口号;Redis集群地址3连接地址:Redis集群地址3端口号>" -p <Redis集群密码> -t <Redis连接地址:Redis端口号> -a <Redis密码> --comparemode=1 --comparetimes=1 --qps=10 --batchcount=100 --sourcedbtype=1 --targetdbfilterlist=0
常用选项说明请见下表,如需了解更多选项及说明,请参见RedisFullCheck 配置说明。
选项 | 说明 | 示例值 |
---|---|---|
-s | 源端Redis的连接地址和端口。
说明
|
r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379 "10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003" |
-p | 源端Redis的密码。 | SourcePwd233 |
-t | 目的端Redis的连接地址和端口。
说明
|
r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379 "10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003" |
-a | 目的端Redis的密码。 | TargetPwd233 |
--sourcedbtype | 源库的类别:
|
--sourcedbtype=1 |
--sourcedbfilterlist | 源端Redis指定需要校验的DB。
说明
|
--sourcedbfilterlist=0;1;2 |
--targetdbtype | 目的库的类别:
|
--targetdbtype=0 |
--targetdbfilterlist | 目的端Redis指定需要校验的DB。
说明
|
--targetdbfilterlist=0;1;2 |
-d | 异常数据列表保存的文件名称,默认为result.db。 | xxx.db |
--comparetimes | 校验次数。
|
--comparetimes=1 |
-m | 校验模式。
|
1 |
--qps | 限速阈值。
说明
|
--qps=10 |
--filterlist | 需要比较的key列表,以竖线(|)分割。
说明
|
--filterlist=abc*|efg|m* |
all finish successfully, totally 2 keys or fields conflict
sqlite3 result.db.3
。
说明 异常数据列表默认保存在result.db.3中。
SELECT * FROM key;
。图 1. 查看异常数据列表
说明 SQL3数据库中保存了表key和表field: