【Canal源码分析】TableMetaTSDB
2019独角兽企业重金招聘Python工程师标准>>>
这是Canal在新版本引入的一个内容,主要是为了解决由于历史的DDL导致表结构与现有表结构不一致,导致的同步失败的问题。采用的是Druid和Fastsql,来记录表结构到DB中,如果需要进行回滚时,得从DB中根据时间点去查到对应的库表结构,然后进行业务的处理。也就是,如果我们想要这样的效果,需要开启TSDB的功能,同时要新增库表来记录表结构的变更。
这个基本上是在parser启动时,寻找位点时需要的。当然在系统启动的时候,会将库表的信息写入到DB中,然后定时24小时写入一次。另外就是在发生了DDL时,会更新表结构。
我们来看下他的类图。
一张表记录的是表结构,加上了时间,另一张记录的是当时的DDL语句。在进行回溯的时候,直接根据时间戳和binlog文件名来进行寻找即可找到。当然这些数据也会在内存中保存一份,加快速度。
具体的介绍可以见这个链接https://github.com/alibaba/canal/wiki/TableMetaTSDB。
转载于:https://my.oschina.net/nuaazhaofeng/blog/1821761
【Canal源码分析】TableMetaTSDB相关推荐
- Canal源码分析deployer模块
canal有两种使用方式:1.独立部署 2.内嵌到应用中. deployer模块主要用于独立部署canal server.关于这两种方式的区别,请参见server模块源码分析.deployer模块源码 ...
- 【转】canal源码分析
canal源码分析,canal server源码分析,canal deployer源码分析.转载保留记录.当做笔记.侵权告知. 以下为转载内容 早期,阿里巴巴 B2B 公司因为存在杭州和美国双机房部署 ...
- 【Canal源码分析】Sink及Store工作过程
一.序列图 二.源码分析 2.1 Sink Sink阶段所做的事情,就是根据一定的规则,对binlog数据进行一定的过滤.我们之前跟踪过parser过程的代码,发现在parser完成后,会把数据放到一 ...
- Redis分布式锁解析源码分析
Redis分布式锁解析&源码分析 概述 实战 简单的分布式锁 Redisson实现分布式锁 Redission源码分析 构造方法 获取锁lock 解锁 锁失效 红锁 案例分析 原始的写法 进化 ...
- 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...
- SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...
- SpringBoot-web开发(二): 页面和图标定制(源码分析)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) 目录 一.首页 1. 源码分析 2. 访问首页测试 二.动态页面 1. 动态资源目录t ...
- SpringBoot-web开发(一): 静态资源的导入(源码分析)
目录 方式一:通过WebJars 1. 什么是webjars? 2. webjars的使用 3. webjars结构 4. 解析源码 5. 测试访问 方式二:放入静态资源目录 1. 源码分析 2. 测 ...
- Yolov3Yolov4网络结构与源码分析
Yolov3&Yolov4网络结构与源码分析 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗. 文章目录 论文汇总 ...
最新文章
- 未来几年自动驾驶预测(下)
- 汉语是世界上唯一一种面向对象的高级语言
- 第 21 章 radiusd - Authentication, Authorization and Accounting server
- 如何用babel将ES6转换
- Octave matlab中运行.m文件方式对比
- python可以调用windows资源吗_如何在Windows上用Python调用WinRar?还有问题吗
- 数理思维这样培养才有效,从小就赢在方法上,每本不足3元!!
- 记录关于vs2008 和vs2015 的报错问题
- nodejs的mysql初始化
- 使用UrlRewriteFilter对url进行更替
- UIScrollerView ,UIPageControl混搭使用,添加定时器,无限循环滚动
- 【5G会话管理】UE IP地址的管理
- postgresql中recovery.conf分析
- 解决kubernetes启动容器时,容器一直是ContainerCreating不能running
- java上传文件怎么设置成777权限_777权限是什么意思?文件夹权限为777如何修改设置?...
- Python实现视频转 gif 动图
- Win32 游戏开发:贪吃蛇 上篇
- 黄金分割法python实现
- 上古卷轴5mo初始化python失败_《上古卷轴5》MO管理器设置方法初级教程 MO管理器怎么设置...
- spooling 技术工作原理
热门文章
- android日志收集存入mysql_rsyslog+analyzer+mysql实现日志收集展示
- python将一组数据转化为列表_python如何将一个全部为int的列表,转化为全部为str的列表...
- 上面两点下面一个三角形_这种胖胖的圆角三角形,在PPT里居然有这么多种画法!...
- 求栈中元素个数算法_每日算法系列【LeetCode 315】计算右侧小于当前元素的个数...
- 图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID
- 【完结】12篇GAN的优化文章大盘点,浓浓的数学味儿
- 【图像分类】从数据集和经典网络开始
- 【AI-1000问】为什么深度学习图像分类的输入多是224*224
- WINDOWS 逻辑坐标 设备坐标 屏幕坐标 客户区坐标
- CMDB收集资产脚本