使用redis-sync-manager,您可以将自建Redis集群迁移至云数据库Redis版。
前提条件
- 需要在环境变量$PATH中定义redis-port,因为redis-sync-manager在运行过程中会依赖于redis-port。
- 运行时需要注意集群的基本数据及当前并发度可能会占用的内存。
- 请保证源集群不处于slot迁移的中间态。
迁移工具
- redis-port:用于实现从单个Redis进程到目标集群的数据同步。具体操作请参见使用redis-port进行迁移。
- redis-sync-manager:用于从自建Redis集群到云数据库Redis集群版的数据同步。
工具下载
使用说明
使用redis-sync-manager进行Redis集群迁移上云的命令如下:
./redis-sync-manager --from=src_host:src_port --target=dst_host:dst_port [--password=src_password] [--auth=dst_password] [--filterkey="str1|str2|str3"] [--targetdb=DB] [--rewrite] [--bigkeysize=SIZE] [--logfile=REDISPORT.LOG] [--httpport=HTTPPORT] [--sync-parallel=INT] [--sync-role="master|slave"]
工作原理
redis-sync-manager和src_host:src_port
交互,首先通过cluster nodes
命令获取集群拓扑信息。然后基于--sync-role
参数获得待同步分片的IP:PORT
列表。最后调用redis-port进行数据同步(全量数据同步的并发度依赖--sync-parallel
配置,所有分片的增量数据均会保持同步)。相关参数请参见下表。
参数 | 说明 |
---|---|
src_host | 自建Redis域名(或者IP),指定Redis集群中的一个进程的IP即可。 |
src_port | 自建Redis端口,指定对应src_host的端口。 |
src_password | 自建Redis的密码 |
dst_host | 云数据库Redis版连接地址 |
dst_port | 云数据库Redis版端口 |
dst_password | 云数据库Redis版密码 |
str1|str2|str3 | 过滤具有str1或str2或str3的key。 |
DB | 将同步入云数据库Redis版的目标DB。 |
rewrite | 覆盖已经写入的key。 |
bigkeysize=SIZE | 当写入value大于SIZE时,采用大key写入模式。 |
--logfile=REDISPORT.LOG | 传递日志文件名称,对于不同的分片,程序会自动添加slot后缀。默认为logs/redis-sync-manager.log 。 |
--sync-parallel=INT | 用于支持数据同步的并发度,展示可能占据的内存。默认为1 。 |
--sync-role="master|slave" | 用于指定优先使用源集群的主库进行同步还是用从库进行同步。默认为master 。 |
运行Demo
图片中的标注解释如下:
- 打印每个分片的同步信息和同步状态。
- 根据传递的
--sync-role
参数,为每个分片选择一个IP:Port
,逐一打印出来。 - 打印每个分片的同步状态到日志文件中。