Redis 到 Redis 数据同步
· 阅读需 3 分钟
简述
本文主要介绍如何通过 CloudCanal 实现 Redis 到 Redis 数据迁移同步。
技术点
基于 PSync 协议同步
CloudCanal 基于 PSync 协议实现 Redis 到 Redis 的数据同步,同步流程如下:
- CloudCanal 与 Redis Master 建立 Socket 长连接。
- 发送 Auth 命令验证身份(如果有)。
- CloudCanal 向 Redis Master 发送 PSync 命令,伪装成一个 Redis Slave 节点。
- Redis Master 节点持续向 CloudCanal 伪装的 Redis Slave 节点推送 二进制数据流。
- CloudCanal 将二进制数据流解析为 Redis 命令,发送给目标端执行。

双向同步防循环能力
CloudCanal 采用辅助命令实现 Redis 之间的双向同步防循环。
当收到正常指令,CloudCanal 计算其 hash 值,构建辅助指令 Key,反向查询辅助指令是否存在,如果存在则为循环。随后,CloudCanal 反向删除对应辅 助命令,如果删除成功,过滤即可。
对于对端写入以及源端查询辅助指令,CloudCanal 进行了批量和多线程优化,同步性能得到有效提升。

过滤超大 Key 能力
在实际的 Redis 业务使用中,由于历史遗留问题或维护不当,可能会出现一些体积过大的 Key。
在数据同步场景下,这些超大 Key 容易引发任务同步异常。CloudCanal 提供了灵活的任务参数配置,支持过滤超出指定大小的 Key。
操作示例
步骤 1: 安装 CloudCanal
请参考 全新安装(Docker Linux/MacOS),下载安装 CloudCanal 私有部署版本。
