使用 redis-port 工具
工具介绍
redis-port 是一款开源的数据批量传输工具,主要用于 Redis 节点间的数据同步。更多 redis-port 介绍可参考官方文档。
约束限制
由于 redis-port 暂不仅支持 RDB Version 9。故 redis-port 仅适用于源集群版本为 Redis 4.x 及以前版本的数据迁移。
前提条件
-
Redis Standalone 集群状态为
活跃。 -
已获取远端 Redis 数据库信息。
操作步骤
步骤一:安装 redis-port
-
确保安装 redis-port 的客户端服务器与 Redis Standalone 集群之间网络通畅。
-
在客户端服务器上下载并安装 redis_port。
-
Linux 操作系统,可执行以下命令行。
wget https://github.com/CodisLabs/redis-port/releases/download/v2.0-beta/redis-port-v2.0-beta-go1.10.1-linux.tar.gz tar -xvf redis-port-v2.0-beta-go1.10.1-linux.tar.gz -
Windowx 操作系统,可从官网下载安装。
-
-
该工具下载解压后,即可直接使用,无需编译。
步骤二:使用 redis-port
-
集群间数据同步
用户可以使用 redis-port 将源 Redis Standalone 的数据迁移至目标 Redis Standalone。
注意 确保源 Redis Standalone 集群与目标 Redis Standalone 集群之间的网络通畅。
-
在安装有 redis-port 的服务器上,执行如下命令行。
./redis-sync -m <password>@<源 Redis 地址:端口号> -t <目标 Redis 地址:端口号>命令行参数说明
参数 说明 <password>
源 Redis Standalone 集群
default用户密码,若没有配置,可不输入。<源 Redis 地址:端口号>
填写源 Redis Standalone 集群的访问地址与端口号,可参考前文步骤进行查询。
<目标 Redis 地址:端口号>
填写目标 Redis Standalone 集群的访问地址与端口号,可参考前文步骤进行查询。
-
命令行输出结果如下所示,当迁移提示完成
100%,表示数据同步完成,可终止程序。$ ./redis-sync -m 172.22.4.7:6379-t 172.22.4.16:6379 2022/01/13 11:54:52 sync.go:76: [INFO] sync: master = "172.22.4.7:6379", target = "172.22.4.16:6379" 2022/01/13 11:54:52 sync.go:103: [INFO] + 2022/01/13 11:54:53 sync.go:105: [INFO] - 2022/01/13 11:54:53 sync.go:103: [INFO] + 2022/01/13 11:54:54 sync.go:109: [INFO] sync: runid = "628f499fa08c5575a36e96e360ba9785df907fba", offset = 167408 2022/01/13 11:54:54 sync.go:110: [INFO] sync: rdb file = 44980187 (42.90mb) 2022/01/13 11:54:54 sync.go:208: [INFO] sync: (r/f,s/f,s) = (read,rdb.forward,rdb.skip/rdb.forward,rdb.skip) 2022/01/13 11:54:55 sync.go:250: [INFO] sync: rdb = 44980187 - [ 28.66%] (r/f,s/f,s)=(4525564/101216,0/0,0) ~ (4.32mb/-,-/-,-) ~ speed=(4.32mb/101216,0/0,0) 2022/01/13 11:54:56 sync.go:250: [INFO] sync: rdb = 44980187 - [ 39.44%] (r/f,s/f,s)=(9375228/212349,0/0,0) ~ (8.94mb/-,-/-,-) ~ speed=(4.62mb/111133,0/0,0) 2022/01/13 11:54:57 sync.go:250: [INFO] sync: rdb = 44980187 - [ 49.64%] (r/f,s/f,s)=(13962748/317799,0/0,0) ~ (13.32mb/-,-/-,-) ~ speed=(4.38mb/105450,0/0,0) 2022/01/13 11:54:58 sync.go:250: [INFO] sync: rdb = 44980187 - [ 61.01%] (r/f,s/f,s)=(19074556/431463,0/0,0) ~ (18.19mb/-,-/-,-) ~ speed=(4.88mb/113664,0/0,0) 2022/01/13 11:54:59 sync.go:250: [INFO] sync: rdb = 44980187 - [ 73.24%] (r/f,s/f,s)=(24579580/557670,0/0,0) ~ (23.44mb/-,-/-,-) ~ speed=(5.25mb/126207,0/0,0) 2022/01/13 11:55:00 sync.go:250: [INFO] sync: rdb = 44980187 - [ 81.99%] (r/f,s/f,s)=(28511740/648490,0/0,0) ~ (27.19mb/-,-/-,-) ~ speed=(3.75mb/90820,0/0,0) 2022/01/13 11:55:01 sync.go:250: [INFO] sync: rdb = 44980187 - [ 92.77%] (r/f,s/f,s)=(33361404/757012,0/0,0) ~ (31.82mb/-,-/-,-) ~ speed=(4.62mb/108522,0/0,0) 2022/01/13 11:55:02 sync.go:250: [INFO] sync: rdb = 44980187 - [100.00%] (r/f,s/f,s)=(38079996/864711,0/0,0) ~ (36.32mb/-,-/-,-) ~ speed=(4.50mb/107699,0/0,0) 2022/01/13 11:55:03 sync.go:250: [INFO] sync: rdb = 44980187 - [100.00%] (r/f,s/f,s)=(42929660/976820,0/0,0) ~ (40.94mb/-,-/-,-) ~ speed=(4.62mb/112109,0/0,0)
-
-
导出集群的 RDB 文件
执行如下命令,可导出 Redis Standalone 集群的 RDB 文件。
./redis-dump -n 3 -m <password>@<Redis 地址:端口号> -o <xxx-file.rdb>命令行参数说明
参数 说明 <password>
Redis Standalone 集群
default用户密码,若没有配置,可不输入。<Redis 地址:端口号>
填写 Redis Standalone 集群的访问地址与端口号,可参考前文步骤进行查询。
<xxx-file.rdb>
导出后文件名。
-n
表示允许多个 CPU 并行处理数据导入。
-
通过 RDB 文件恢复集群
执行如下命令,使用 RDB 文件恢复 Redis Standalone 集群。
./redis-restore -n 3 -i <xxx-file.rdb> -t <password>@<Redis 地址:端口> [--db={DB_number}]命令行参数说明
参数 说明 <password>
Redis Standalone 集群
default用户密码,若没有配置,可不输入。<Redis 地址:端口号>
填写待导入 RDB 文件的 Redis Standalone 集群的访问地址与端口号,可参考前文步骤进行查询。
<xxx-file.rdb>
导入的 RDB 文件名。
[--db={DB_number}]
为可选参数,表示可以单独导入文件中的指定 DB 编号里的缓存数据。
-n
表示允许多个 CPU 并行处理数据导入。