Redis 到 Redis 数据迁移同步

server/2024/12/21 10:22:32/

简述

Redis 是一个开源的高性能内存数据库,支持键值对和多种数据结构(如字符串、列表、集合、哈希等),常用于缓存、实时数据处理和分布式锁。它提供持久化、主从复制和高可用集群功能,适用于高并发低延迟场景。

本文主要介绍如何通过 CloudCanal 实现 Redis 到 Redis 数据迁移同步。

技术点

基于 PSync 协议同步

CloudCanal 基于 PSync 协议实现 Redis 到 Redis 的数据同步,同步流程如下:

  1. CloudCanal 与 Redis Master 建立 Socket 长连接。
  2. 发送 Auth 命令验证身份(如果有)。
  3. CloudCanal 向 Redis Master 发送 PSync 命令,伪装成一个 Redis Slave 节点。
  4. Redis Master 节点持续向 CloudCanal 伪装的 Redis Slave 节点推送 二进制数据流
  5. CloudCanal 将二进制数据流解析为 Redis 命令,发送给目标端执行。
    请添加图片描述

双向同步防循环能力

CloudCanal 采用辅助命令实现 Redis 之间的双向同步防循环。

当收到正常指令,CloudCanal 计算其 hash 值,构建辅助指令 Key,反向查询辅助指令是否存在,如果存在则为循环。随后,CloudCanal 反向删除对应辅助命令,如果删除成功,过滤即可。

对于对端写入以及源端查询辅助指令,CloudCanal 进行了批量和多线程优化,同步性能得到有效提升。

请添加图片描述

过滤超大 Key 能力

在实际的 Redis 业务使用中,由于历史遗留问题或维护不当,可能会出现一些体积过大的 Key。

在数据同步场景下,这些超大 Key 容易引发任务同步异常。CloudCanal 提供了灵活的任务参数配置,支持过滤超出指定大小的 Key。

操作示例

步骤 1: 安装 CloudCanal

请参考 全新安装(Docker Linux/MacOS),下载安装 CloudCanal 私有部署版本。

步骤 2: 添加数据源

登录 CloudCanal 控制台,点击 数据源管理 > 新增数据源

步骤 3: 创建任务

  1. 点击 同步任务 > 创建任务

  2. 配置源和目标数据源。

    1. 选择源和目标实例,并分别点击 测试连接
    2. 在源端实例下方 高级配置 中选择 启用 DB 映射 :是/否。当启用 DB 映射时,需要确保源端 Redis 实例与目标端 Redis 实例 DB 数量相同。
  3. 选择 数据同步 并勾选 全量初始化

  4. 点击 确认创建

    任务创建过程将会进行一系列操作,点击 同步设置 > 异步任务,找到任务的创建记录并点击 详情 即可查看。

    Redis 源端的任务创建会有以下几个步骤:

    • 分配任务执行机器
    • 创建任务状态机
    • 完成任务创建
  5. 等待任务自动流转。

    当任务创建完成,CloudCanal 会自动进行任务流转,其中的步骤包括:

    • 全量数据迁移: 已存在的存量数据将会完整迁移到对端。
    • 增量数据同步: 增量数据将会持续地同步到对端数据库,并且保持实时(秒级别延迟)。

总结

本文简单介绍了如何使用 CloudCanal 进行 Redis 到 Redis 数据迁移同步,打通数据流动的渠道,实现端到端的精准数据传输。


http://www.ppmy.cn/server/151922.html

相关文章

nginx安装教程笔记(包含访问控制)

目录 一、 nginx的安装 二、 访问控制 基于授权访问控制 基于客户端的访问控制 一、 nginx的安装 1. 安装组件 yum -y install pcre-devel zlib-devel gcc gcc-c make 2. 创建用户 useradd -M -s /sbin/nologin nginx 3. 解压源码包并编译安装 tar zxvf nginx-1.12.0…

Redis问题篇

问题 Q1:WRONGTYPE Operation against a key holding the wrong kind of value A1: redis中已经存在同名,但不一样类型的key值

使用pyinstaller打包pyqt的程序,运行后提示ModuleNotFoundError: No module named ‘Ui_main‘

环境:windowpython3.9pyqt6 使用pyqt UI编辑器生成了main.ui ,main.ui编译成了Ui_main.py main.py 使用当前目录下的Ui_main.py。 打包过程没报错,运行报错。 错误如下: 解决方法:pyinstaller -Fw main.py --paths. 使…

SSM 架构中 JAVA 网络直播带货查询系统设计与 JSP 有效实现方法

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网络直播带货网站当然也不能排除在外,随着网络技术的不断成熟,带动了网络直播带货网站,它彻底改变了过…

基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 vivado2019.2 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视…

202411 第十六届蓝桥杯青少组 STEMA 考试真题 汇总

2024年11月 第十六届 蓝桥杯青少组 STEMA测评考试,包含scratch图形化编程,Python,C,microbit,EV3,arduino,计算思维U12,U8,U10等真题汇总。 202411 蓝桥杯青少组 STEMA测评 Scratch 试题 20241…

《梦梁百景图》开机 林墨饰演元气少年胡天乐自带戏腔天赋

12月15日,由炽火(苏州)影视科技有限公司出品的电视剧《梦梁百景图》在江苏昆山开机,该剧讲述一群年轻人为了保护香配方,推广香,仗义出行收获颇丰的故事。 其中,演员林墨饰演“胡天乐”&#xff…

线程知识总结(一)

1、概述 1.1 进程与线程 进程是程序运行时,操作系统进行资源分配的最小单位,包括 CPU、内存空间、磁盘 IO 等。从另一个角度讲,进程是程序在设备(计算机、手机等)上的一次执行活动,或者说是正在运行中的程…