当前位置: 首页 > news >正文

04_Redis与mysql数据双写一致性案例

04——redis与mysql数据双写一致性

一、canal

  1. 是什么

    canal[ka’nel,中文翻译为水道/管道/沟渠/运河,主要用途是用于MySQL数据库增量日志数据的订阅、消费和解析,是阿里巴巴开发并开源的,采用Java语言开发;

    历史背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房数据同步的业务需求,实现方式主要是基野业务tig9er(触发器)获取增量变更。从2010年开始,阿里巴巴逐步尝试采用解析数据库日志获取增量变更进行同步,由此衍生出了canal 项目;

  2. 能干嘛

    1. 数据库镜像

    2. 数据库实时备份

    3. 索引构建和实时维护(拆分异构索引、倒排索引等)

    4. 业务cache刷新

    5. 带业务逻辑的增量数据处理

  3. 下载地址

二、工作原理

  1. 传统mysql主从复制工作原理

    image-20230308221044481

    MySQL的主从复制将经过如下步骤:

    1、当master主服务器上的数据发生改变时,则将其改变写入二进制事件日志文件中;

    2、salve从服务器会在一定时间间隔内对master主服务器上的二进制日志进行探测,探测其是否发生过改变,

    如果探测到master主服务器的二进制事件日志发生了改变,则开始一个/O Thread请求master二进制事件日志;

    3、同时master主服务器为每个l/O Thread启动一个dump Thread,用于向其发送二进制事件日志;

    4、slve从服务器将接收到的二进制事件日志保存至自己本地的中继日志文件中;

    S、save从服务器将启动SQL Thread从中继日志中读取二进制日志,在本地重放,使得其数据和主服务器保持一致;

    6、最后l/O Thread和SQL Thread将进入睡眠状态,等待下一次被唤醒;

  2. canal工作原理

    image-20230308221329535

    canal模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议

    1. MySQL master收到dump请求,开始推送binary log给slave(即canal)

    2. canal解析binary log对象(原始为byte流)

三、mysql-canal-redis双写一致性

http://www.lryc.cn/news/132292.html

相关文章:

  • vue的开发者工具下载『保姆级别』
  • vue的scrollTop手机环境设置值失效,本地正常可以赋值
  • [前端系列第7弹]Vue:一个渐进式的 JavaScript 框架
  • C#键盘按键对应Keys类大全
  • SpringBoot 学习(03): 弱语言的注解和SpringBoot注解的异同
  • CloudQuery:更好地管理你的 OceanBase 数据库
  • php的password_verify 和 password_hash密码验证
  • JAVA免杀学习与实验
  • Apche Kafka + Spring的消息监听容器
  • [JavaWeb]【五】web后端开发-Tomcat SpringBoot解析
  • css 用过渡实现,鼠标离开li时,背景色缓慢消息的样式
  • pytorch 线性层Linear详解
  • LeetCode 833. 字符串中的查找与替换
  • Oracle故障案例之-19C时区补丁DSTV38更新
  • 设计模式之组合模式(Composite)的C++实现
  • mongo的include方法踩坑
  • 阿里云无影云电脑/云桌面收费价格表_使用申请方法
  • jvm内存溢出排查(使用idea自带的内存泄漏分析工具)
  • JS内存泄漏
  • 线程和进程同步互斥你真的掌握了吗?(同步互斥机制保姆级讲解与应用)
  • Android 9.0 Vold挂载流程解析(上)
  • 界面组件Telerik UI for WinForms R2 2023——拥有VS2022暗黑主题
  • vue+elementui 实现文本超出长度显示省略号,鼠标移上悬浮展示全部内容
  • 【STM32RT-Thread零基础入门】 5. 线程创建应用(线程创建、删除、初始化、脱离、启动、睡眠)
  • 计算机竞赛 python+深度学习+opencv实现植物识别算法系统
  • 深度探索ChatGPT:如何进行专业提问以获取精确答案
  • 1.vue3+vite开发中axios使用及跨域问题解决
  • 【LangChain】P1 LangChain 应用程序的核心构建模块 LLMChain 以及其三大部分
  • 关于查看处理端口号和进程[linux]
  • C 语言的 strcat() 函数和 strncat() 函数