名称

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-enableTendis存储版 节点为 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.1

  • port redis-sync 绑定端口,默认值6473

  • number 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

运行使用

推荐的配置如下所示:

  1. [server]
  2. threads=1
  3. port=21213
  4. sync-tick=10
  5. tendis-cluster-enable=yes
  6. skip-start=no
  7. loglevel=notice
  8. [source]
  9. 127.0.0.1:21212|
  10. [remote]
  11. 127.0.0.1:20121|
  12. 127.0.0.1:20122|
  13. 127.0.0.1:20123|
  14. 127.0.0.1:20121|

./redis-sync -f [配置文件路径]

此时 redis-sync 会自动与 redis、tendis存储版连接,接收 RDB 和 AOF 并转换为 redis 协议的命令发送到后端 tendis存储版