名称
redis-sync
介绍 目的 实现
方便从 Redis 迁移数据到 Tendis存储版
。redis-sync
是负责将 Redis 数据同步到 Tendis存储版
, 自动 从 Redis 接收 RDB+AOF 将数据以普通命令的形式(Set, Lpush, Sadd, Zadd 等)并行发送到 Tendis存储版
。
使用方式
配置参数
配置文件以 Section 区分,目前有三个Section:server 、source、remote 。
server section
redis-sync
支持 Redis 的一些配置参数, 同时也可以使用 redis-cli 来与 redis-sync
进行交互。下面介绍的配置主要包含redis-server和 redis-sync
全局配置。
参数
新增的配置选项:
threads sync 分发线程数,目前限制与下文[remote]个数相同
skip-start 默认值为
yes
,表示拉起sync时,不建立与redis的连接。当需要用户手动连sync,输入syncadmin start
命令启动与redis的连接。如果设置为no
表示 拉起 sync 时,尝试建立与 redis 的连接。tendis-cluster-enable
当Tendis存储版
节点为 cluster 集群, 需要设置为yes
, 否则设置为no
。当开启时,
redis-sync
会开启一个定时任务,周期性的(默认 1 秒一次)向后端Tendis存储版
节点发送cluster nodes
获取后端所有Tendis存储版
节点的信息,并且更新槽到节点的映射。这样就可以正确的将 Redis 的数据同步到 负责该 Slot 的Tendis存储版
节点。redis-cluster-enable
前端 Redis 节点是否为 cluster 集群,yes
为开启,no
关闭。同
tendis-cluster-enable
。 当开启时,周期性更新 Redis 的槽到节点的映射。
与原生 Redis 相同语义的配置项:
bind
redis-sync
绑定 ip, 默认值127.0.0.1port
redis-sync
绑定端口,默认值6473number
RPUSH,HMSET,SADD,ZADD
的元素很多时,redis-sync 分批将其发送给Tendis存储版
。number为每次能发送的最大元素个数,默认为1。size 与 number 类似,size 为每次能发送的所有元素的总大小,默认为20MB。
idletime 与 redis timeout 相同,默认值0永不断开
tcp-backlog 与 redis tcp-backlog 相同,默认值100
tcp-keepalive 与 redis tcp-keepalive 相同,默认值300
hz 与redis hz相同,默认值10
epoll_event redis-sync 中跟踪的最大fd数,与redis maxclients相同,默认值10000
protected-mode 与redis protected-mode相同,默认值 yes
pidfile 记录pid的文件的路径,与redis pidfile相同
logfile 日志文件路径,与redis logfile 相同
requirepass 配置 sync 的密码,与redis 的配置功能相同。
source section
source 指 redis-sync
需要同步的 redis 节点的配置。Redis 和 redis-sync
比例是1:1, 参考配置格式如下:
格式:
[host]:[port]|[auth]
例:127.0.0.1:6379|password
remote section
remote 指redis 对应的 tendis存储版
,该 section 中配置的数目应该与 server 中的 threads 相同。参考配置格式如下:
格式:[host]:[port]|[auth]
例:当 thread=4 时
127.0.0.1:20100|password 127.0.0.1:20101|password 127.0.0.1:20102|password 127.0.0.1:20103|password
运行使用
推荐的配置如下所示:
[server]
threads=1
port=21213
sync-tick=10
tendis-cluster-enable=yes
skip-start=no
loglevel=notice
[source]
127.0.0.1:21212|
[remote]
127.0.0.1:20121|
127.0.0.1:20122|
127.0.0.1:20123|
127.0.0.1:20121|
./redis-sync -f [配置文件路径]
此时 redis-sync
会自动与 redis、tendis存储版
连接,接收 RDB 和 AOF 并转换为 redis 协议的命令发送到后端 tendis存储版
。