-
Notifications
You must be signed in to change notification settings - Fork 698
快速开始:数据迁移
suxb201 edited this page Nov 9, 2022
·
7 revisions
这里我们举几个例子,演示使用 redis-shake 来迁移数据。
- 地址:r-aaaaa.redis.zhangbei.rds.aliyuncs.com
- 端口:6379
- 密码:r-aaaaa:xxxxx
- 地址:r-bbbbb.redis.zhangbei.rds.aliyuncs.com
- 端口:6379
- 无密码
- 地址:
- 192.168.0.1:6379
- 192.168.0.2:6379
- 192.168.0.3:6379
- 192.168.0.4:6379
- 密码:r-ccccc:xxxxx
- 地址:
- 192.168.1.1:6379
- 192.168.1.2:6379
- 192.168.1.3:6379
- 192.168.1.4:6379
- 192.168.1.5:6379
- 192.168.1.6:6379
- 密码:r-ddddd:xxxxx
修改 sync.toml
,改为如下配置:
[source]
address = "r-aaaaa.redis.zhangbei.rds.aliyuncs.com:6379"
password = ""
[target]
type = "standalone"
address = "r-bbbbb.redis.zhangbei.rds.aliyuncs.com:6379"
password = "r-bbbbb:xxxxx"
启动 redis-shake:
./redis-shake sync.toml
修改 sync.toml
,改为如下配置:
[source]
address = "r-aaaaa.redis.zhangbei.rds.aliyuncs.com:6379"
password = "r-aaaaa:xxxxx"
[target]
type = "cluster"
address = "192.168.0.1:6379" # 这里写集群中的任意一个节点的地址即可
password = "r-ccccc:xxxxx"
启动 redis-shake:
./redis-shake sync.toml
集群 C 有四个节点:
- 192.168.0.1:6379
- 192.168.0.2:6379
- 192.168.0.3:6379
- 192.168.0.4:6379
把 4 个节点当成 4 个单机实例,参照 单机到集群 部署 4 个 redis-shake 进行数据同步。
脚本 cluster_helper.py
可以方便启动多个 redis-shake 从集群迁移数据,效果等同于方法1。
- 源端有多少个分片,cluster_helper.py 就会起多少个 redis-shake 进程,所以如果源端分片数较多的时候,需要评估当前机器是否可以承担这么多进程。
- cluster_helper.py 异常退出的时候,可能没有正常退出 redis-shake 进程,需要
ps aux | grep redis-shake
检查。 - 每个 redis-shake 进程的执行日志记录在
RedisShake/cluster_helper/data/xxxxx
中,反馈问题请提供相关日志。
Python 需要 python3.6 及以上版本,安装 Python 依赖:
cd RedisShake/cluster_helper
pip3 install -r requirements.txt
修改 sync.toml
:
type = "sync"
[source]
address = "192.168.0.1:6379" # 集群 C 中任意一个节点地址
password = "r-ccccc:xxxxx"
[target]
type = "cluster"
address = "192.168.1.1:6380" # 集群 D 中任意一个节点地址
password = "r-ddddd:xxxxx"
cd RedisShake/cluster_helper
python3 cluster_helper.py ../redis-shake ../sync.toml
- 参数 1 是 redis-shake 可执行程序的路径
- 参数 2 是配置文件路径
运行效果类似:
忽略 sentinel 节点,将哨兵拓扑当成普通的主从节点即可,参照 单机到单机:A->B 配置文件:
- source 的 address 写源端的 master 或 slave 节点地址,推荐 slave 节点。
- target 的 address 些目的端的 master 节点地址。