RedisShake基本介绍
RedisShake是一个开源的Redis迁移工具,可以用于在线迁移和离线迁移(通过备份文件导入)。
目前 RedisShake 有三种迁移模式:PSync、RDB 和 SCAN,分别对应 sync_reader、rdb_reader 和 scan_reader。主要有以下三种数据迁移场景:
- 对于从备份rdb中恢复数据的场景,可以使用 rdb_reader。
- 对于数据迁移场景,优先选择 sync_reader。
- 对于全量复制的场景下或者自研集群不支持 PSync 协议情况下,可以使用 scan_reader。
当你需要迁移部署在其他云厂商上的 Redis 集群数据时,如果无法进行在线迁移,你可以选择离线迁移的方式。
离线迁移(备份文件导入)
与在线迁移相比,离线迁移适宜于源实例与目标实例的网络无法连通的场景。
1、在DCS控制台创建缓存实例。
注意新创建的Redis实例容量不能小于源端Redis实例的实际使用容量。
2、准备一台云服务器,并安装RedisShake。
RedisShake既能访问源端缓存实例,也能访问目标端DCS 缓存,需要绑定弹性公网IP
3、导出RDB文件。
使用如下命令导出RDB文件:
./redis-cli -h {redis_address} -p {redis_port} -a {password} --rdb {output.rdb}
执行命令后回显"Transfer finished with success.",表示文件导出成功。
4、将导出的RDB文件(含多个)上传到云服务器上。
5、编辑RedisShake配置文件。
编辑redis-shake工具配置文件shake.toml,补充迁移双方信息,及迁移模式。
[rdb_reader]
filepath = "/tmp/dump.rdb"
[redis_writer]
cluster = false # set to true if target is a redis cluster
address = "ip:port" # when cluster is true, set address to one of the cluster node
username = "" # keep empty if not using ACL
password = "" # keep empty if no authentication is required
tls = false
6、在线迁移,同步数据。
使用如下命令同步源Redis集群和目标Redis集群数据:
./redis-shake shake.toml
执行日志中出现如下信息,代表同步完成:
all done
7、迁移后验证。
数据同步结束后,可使用redis-cli工具连接DCS 实例,通过dbsize查看Key数量,确认数据是否完整导入。
如果数据不完整,可使用flushall或者flushdb命令清理实例中的缓存数据后重新同步。
8、清理RedisShake配置文件。