下载
下载 RedisShake
:RedisShake
(图1
)
解压后,得到 redis-shake
执行程序和 shake.toml
配置文件。windows
系统自行将 redis-shake
加 .exe
后缀。
编辑 shake.toml 文件
其中 reader
用来对接不同的源端
- 对于从备份中恢复数据的场景,可以使用
rdb_reader
。
- 对于数据迁移场景,优先选择
sync_reader
。一些云厂商没有提供 PSync
协议支持,可以选择 scan_reader
。
rdb 迁移
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# 全局配置
log_file = "shake.log" # 日志文件路径
log_level = "info" # 日志级别:info
# 源数据
[rdb_reader]
filepath = "D:/develop/Redis-x64-3.2.100/dump.rdb" # 你的rdb文件位置
# 目标 Redis 配置
# 目标redis
[redis_writer]
cluster = false # false就是单例, true是集群
address = "192.168.230.131:6379" # 如果cluster为true, 只需要填集群中的任意一个节点地址即可同步到整个集群
username = "" # 开了ACL写用户名 没开空着
password = "123456" # 如果有密码,开没开ACL都写 否则空着
tls = false
# 高级配置
[advanced]
pipeline_count_limit = 1024 # 默认管道大小
rdb_restore_command_behavior = "rewrite" # 遇到重复键时覆盖
|
sync Reader
当源端数据库兼容 PSync
协议时,推荐使用 sync_reader
。
优势:数据一致性最佳,对源库影响小,可以实现不停机的切换。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 全局配置
log_file = "shake.log" # 日志文件路径
log_level = "info" # 日志级别:info
# 源数据
[sync_reader]
cluster = false # set to true if source is a redis cluster
address = "127.0.0.1:6379" # 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
sync_rdb = true # 是否同步 RDB,设置为 false 时,RedisShake 会跳过全量同步阶段
sync_aof = true # 是否同步 AOF,设置为 false 时,RedisShake 会跳过增量同步阶段,此时 RedisShake 会在全量同步阶段结束后退出
# 目标redis
[redis_writer]
cluster = false # false就是单例, true是集群
address = "192.168.230.131:6379" # 如果cluster为true, 只需要填集群中的任意一个节点地址即可同步到整个集群
username = "" # 开了ACL写用户名 没开空着
password = "123456" # 如果有密码,开没开ACL都写 否则空着
tls = false
# 高级配置
[advanced]
pipeline_count_limit = 1024 # 默认管道大小
rdb_restore_command_behavior = "rewrite" # 遇到重复键时覆盖
|
可选项
RedisShake
提供了多种内置的过滤规则,用户可以根据需要选择合适的规则。
如果不设置这些选项,默认允许所有键。
1
2
3
4
5
6
7
8
9
|
[filter]
allow_keys = ["user:1001", "product:2001"] # 允许的键名
allow_key_prefix = ["user:", "product:"] # 允许的键名前缀
allow_key_suffix = [":active", ":valid"] # 允许的键名后缀
allow_key_regex = [":\\d{11}:"] # 允许的键名正则,11位手机号
block_keys = ["temp:1001", "cache:2001"] # 阻止的键名
block_key_prefix = ["temp:", "cache:"] # 阻止的键名前缀
block_key_suffix = [":tmp", ":old"] # 阻止的键名后缀
block_key_regex = [":test:\\d{11}:"] # 阻止的键名正则,11位手机号,前缀为test
|
也可以指定迁移具体的库或者阻止具体的库,不写则默认所有库进行迁移。
1
2
3
|
[filter]
allow_db = [0, 1, 2]
block_db = [3, 4, 5]
|
执行 redis-shake
(图2
)
若显示 redis-shake source db is not doing bgsave! continue
,表示迁移成功。
提示
若没有迁移过去,可以考虑从过滤项入手看一下,将过滤项的 allow_db
删掉后,再次尝试。