Redis数据迁移

RedisShake是一款开源的Redis迁移工具,支持Cluster集群的在线迁移与离线迁移(备份文件导入)。DCS Cluster集群与Redis Cluster集群设计一致,数据可平滑迁移。

官方GitHub地址:https://github.com/alibaba/RedisShake

本文以Centos7系统环境为例,介绍如何使用Redis-Shake工具进行Cluster集群数据迁移。

cluster到cluster的数据迁移

准备一台服务器,并安装RedisShake,Redis-Shake工具可下载release版本,解压缩后即可使用。

下载工具并解压

1
2
3
4
5
6
$ wget https://oss.putianhui.cn/software/redis-shake.tar.gz
$ tar xzvf redis-shake.tar.gz
$ ll |grep redis-shake
-rwxr-xr-x 1 1320024 users 10851553 5月 26 2019 redis-shake
-rw-r--r-- 1 1320024 users 8541 2月 28 15:46 redis-shake.conf
-rw-r--r-- 1 root root 3801776 2月 28 15:30 redis-shake.tar.gz

查看源集群和目标集群的master地址及端口号

1
> cluster nodes

源集群

目标集群

修改redis-shake.conf配置文件,添加源cluster到目标cluster的配置信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 源redis类型
source.type = cluster
# 源redis的集群master地址
source.address = 192.168.99.62:7000;192.168.99.62:7001;192.168.99.62:7002
# 源redis集群的认证
source.password_raw = test-redis123
source.auth_type = auth
source.tls_enable = false
# 目标redis类型
target.type = cluster
# 目标redis的集群master地址
target.address = 192.168.99.60:7000;192.168.99.60:7001;192.168.99.60:7002
# 目标redis集群的认证
target.password_raw =test123456
target.auth_type = auth
# 目标redis的数据库编号,集群模式用-1,单机可以指定你的redis数据库编号
target.db = -1
target.tls_enable = false

运行脚本执行迁移动作

1
./redis-shake -type sync -conf redis-shake.conf

执行日志中出现如下信息,代表全量数据同步完成,进入增量同步阶段:

1
sync rdb done.

执行日志出现如下信息时,代表增量同步无新增内容,可手动停止同步(Ctrl + C):

1
sync:  +forwardCommands=0  +filterCommands=0  +writeBytes=0

cluster到单机的数据迁移

修改redis-shake.conf配置文件,添加源cluster到目标单redis节点的配置信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 源集群信息及集群地址
source.type = cluster
source.address = 192.168.99.62:7000;192.168.99.62:7001;192.168.99.62:7002
source.password_raw = test-redis123
source.auth_type = auth
source.tls_enable = false

# 目标类型及目标地址
target.type = standalone
target.address = 192.168.99.62:6379
target.password_raw =test123456
target.auth_type = auth
target.db = 3 # 这里数据迁移后
target.tls_enable = false

运行脚本执行迁移动作

1
./redis-shake -type sync -conf redis-shake.conf

执行日志中出现如下信息,代表全量数据同步完成,进入增量同步阶段:

1
sync rdb done.

执行日志出现如下信息时,代表增量同步无新增内容,可手动停止同步(Ctrl + C):

1
sync:  +forwardCommands=0  +filterCommands=0  +writeBytes=0