对于自建的 redis, 我们可以将 rdb/aof 文件拷贝到目的 redis, 启动恢复, 但是云 redis 或者某些特殊情况, 比如没有云平台的权限等等情况, 可以使用工具来进行迁移.

RedisShake 是阿里云 Tair 团队 积极维护的一个项目。它的演变可以追溯到其初始版本,该版本是从 redis-port 分支出来的。官方文档https://tair-opensource.github.io/RedisShake/zh/guide/introduction.html

安装

1
2
wget https://github.com/tair-opensource/RedisShake/releases/download/v4.0.0/redis-shake-linux-amd64.tar.gz
tar xf redis-shake-linux-amd64.tar.gz

同步迁移

创建一个配置文件 redis_sync.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
[sync_reader]
cluster = false # 是否为集群
address = "127.0.0.1:6379"
username = "" # keep empty if not using ACL
password = "" # keep empty if no authentication is required
tls = false

[redis_writer]
cluster = false
address = "127.0.0.1:6380"
username = "" # keep empty if not using ACL
password = "" # keep empty if no authentication is required
tls = false

执行迁移操作, 命令会在后台进行监听, 同步 redis 的变化, 迁移完成再关闭此服务.

1
./redis-shake ./redis_sync.toml

使用 RDB 文件迁移

先在源 redis 导出 rdb 文件, 上传到一台 linux 机器 (可以访问目标 redis), 然后执行迁移.

配置文件:

1
2
3
4
5
6
7
8
9
[rdb_reader]
filepath = "/tmp/dump.rdb"

[redis_writer]
cluster = false
address = "127.0.0.1:6380"
username = "" # keep empty if not using ACL
password = "" # keep empty if no authentication is required
tls = false

执行迁移操作:

1
./redis-shake ./redis_sync.toml