乐趣区

关于redis:Redis双向数据同步

简述

本文次要介绍 CloudCanal 如何做 Redis 双向同步并防循环, 计划特点包含:

  • 反对 Redis 单节点、主备、分片集群
  • 反对数据初始化防循环
  • 反对防循环辅助指令超时或永不超时设置

技术点

防循环事件

CloudCanal Redis 双向同步采纳辅助指令进行循环断定,当收到失常指令,计算其 hash 值,构建辅助指令 key,反向查问辅助指令是否存在,如果存在则为循环,过滤即可。

对于辅助指令对端写入以及源端查问,CloudCanal 进行了批量和多线程优化,同步性能失去无效晋升。

防循环兼容 分片集群、单节点、主备节点任意组合之间的数据迁徙同步。

单任务多节点事件订阅

Redis 集群广泛具备多个节点,为了简化工作配置,CloudCanal 采纳单任务多 Redis 节点订阅形式,实现数据迁徙和同步,整个过程更加便当牢靠。

操作示例

筹备 CloudCanal

  • 下载安装 CloudCanal 公有部署版本

增加数据源

  • 本案例采纳 阿里云云市场购买的 2 个 Redis 集群, 均位于杭州区域
  • 登录 CloudCanal 平台,数据源治理 -> 增加数据源 , 增加 2 个 Redis 集群
  • 倡议对数据源进行形容批改,避免配置正反链路时,辨认错数据库

创立正向同步工作

  • 工作治理 -> 新建工作
  • 双向同步中,正向工作个别指源端有数据,指标端无数据的链路,波及对端数据初始化
  • 第一个页面,抉择源端和指标端数据源和相干信息,点击 下一步

  • 第二个页面

    • 抉择 数据同步 ,并且勾选 全量数据初始化
    • 置灰主动启动,以便创立工作后设置双向同步参数
    • 点击 下一步
  • 第三个页面, 点击 确认创立
  • 工作详情 -> 参数设置

    • 设置源端数据源配置 deCycle 参数为 true
    • 设置源端数据源配置 deCycleEventExpireSec 参数为 1200 秒 (防循环辅助指令超时事件,超过后防循环即有效)
    • 失效配置并启动
  • 期待正向同步工作初始化完数据并失常同步

    此处不倡议在正向同步工作创立后立刻创立反向工作,波及到 repl-backlog-size 设置有余时,反向工作启动强制走 FULL SYNC 导致新数据被老数据笼罩问题

创立反向同步工作

  • 工作治理 -> 新建工作
  • 第一个页面,抉择源端和指标端抉择数据源(请和正向工作所选数据源对调 )和相干信息,点击 下一步

  • 第二个页面

    • 抉择 数据同步 ,并去除 全量数据初始化 勾选
    • 置灰主动启动,以便创立工作后设置双向同步参数
    • 点击 下一步
  • 第三个页面,点击 确认创立
  • 工作详情 -> 参数设置

    • 设置源端数据源配置 deCycle 参数为 true , deCycleEventExpireSec 参数为 1200 秒
    • 失效配置并启动
  • 工作失常运行

测试

  • 源端数据库做数据变更,正向工作监控有变更,反向工作没有(即无循环)

  • 指标端数据库做数据变更,反向工作监控有变更,正向工作没有(即无循环)

  • 期待两边防循环辅助指令过期,检查数据统一

    • 源端
    • 指标端

常见问题

目前遗留的问题

  • 对于主备切换或者位点过老导致 FULL SYNC 管制还不够精准,存在因全量迁徙导致老数据笼罩新数据问题
  • 防循环指令目前较无限: FULL DUMP、SET、HSET、DEL,后续须要丰盛常见指令防循环

总结

本文简略介绍了如何应用 CloudCanal 构建 Redis 双向同步,助力用户实现异地多活、灾备业务指标。

退出移动版