【Canal源碼分析】TableMetaTSDB
這是Canal在新版本引入的一個內容,主要是為了解決由於歷史的DDL導致表結構與現有表結構不一致,導致的同步失敗的問題。采用的是Druid和Fastsql,來記錄表結構到DB中,如果需要進行回滾時,得從DB中根據時間點去查到對應的庫表結構,然後進行業務的處理。也就是,如果我們想要這樣的效果,需要開啟TSDB的功能,同時要新增庫表來記錄表結構的變更。
這個基本上是在parser啟動時,尋找位點時需要的。當然在系統啟動的時候,會將庫表的信息寫入到DB中,然後定時24小時寫入一次。另外就是在發生了DDL時,會更新表結構。
我們來看下他的類圖。
一張表記錄的是表結構,加上了時間,另一張記錄的是當時的DDL語句。在進行回溯的時候,直接根據時間戳和binlog文件名來進行尋找即可找到。當然這些數據也會在內存中保存一份,加快速度。
具體的介紹可以見這個鏈接https://github.com/alibaba/canal/wiki/TableMetaTSDB。
【Canal源碼分析】TableMetaTSDB
相關推薦
【Canal源碼分析】TableMetaTSDB
啟動 尋找 進行 lib 保存 AD orien strip 介紹 這是Canal在新版本引入的一個內容,主要是為了解決由於歷史的DDL導致表結構與現有表結構不一致,導致的同步失敗的問題。采用的是Druid和Fastsql,來記錄表結構到DB中,如果需要進行回滾時,得從DB
【Canal源碼分析】數據傳輸協議
shutdown nal odi error comm default enc repeated head Canal的數據傳輸有兩塊,一塊是進行binlog訂閱時,binlog轉換為我們所定義的Message,第二塊是client與server進行TCP交互時,傳輸的TC
【MyBatis源碼分析】insert方法、update方法、delete方法處理流程(上篇)
times database connect 環境 enable clas 它的 java對象 ace 打開一個會話Session 前文分析了MyBatis將配置文件轉換為Java對象的流程,本文開始分析一下insert方法、update方法、delete方法處理的流程,至
【JDK源碼分析】通過源碼徹底理解ReentrantLock顯示鎖
線程封裝 rac syn next 之前 線程 vat 喚醒 current 前言ReentrantLock和synchronized一樣是一個可重入的互斥鎖,但ReentrantLock功能更強大,它提供了非公平和公平兩種鎖爭用策略供使用者選擇,而synchronized
【JDK源碼分析】深入源碼分析CountDownLatch
代碼 compare signal views 類繼承 clas ref 關聯 ati 前言 CountDownLatch是一個閉鎖實現,它可以使一個或者多個線程等待一組事件發生。它包含一個計數器,用來表示需要等待的事件數量,coutDown方法用於表示一個事件發生,計數
【MyBatis源碼分析】環境準備
arch 事物 基本 pub 加載 tro 單元測試工具 主鍵 values 前言之前一段時間寫了【Spring源碼分析】系列的文章,感覺對Spring的原理及使用各方面都掌握了不少,趁熱打鐵,開始下一個系列的文章【MyBatis源碼分析】,在【MyBatis源碼分析】文章
【轉】【java源碼分析】Map中的hash算法分析
映射 好的 平衡樹 結果 希望 表數 十進制 name 定義 全網把Map中的hash()分析的最透徹的文章,別無二家。 2018年05月09日 09:08:08 閱讀數:957 你知道HashMap中hash方法的具體實現嗎?你知道HashTable、Con
【spring源碼學習】spring的遠程調用實現源碼分析
數據 編碼方式 ria date 技術 color nbsp mvc err 【一】spring的遠程調用提供的基礎類 (1)org.springframework.remoting.support.RemotingSupport ===>spring提供實現的遠程調
【Spring源碼分析系列】啟動component-scan類掃描加載過程
代碼段 包裝 ole 一次 設定 logs sep 列表 support 原文地址:http://blog.csdn.net/xieyuooo/article/details/9089441/ 在spring 3.0以上大家都一般會配置一個Servelet,如下所示: 1
【spring源碼學習】spring的IOC容器之BeanFactoryPostProcessor接口學習
時機 process roc sta 自動 註解 lis nbsp factor 【一】org.springframework.beans.factory.config.BeanFactoryPostProcessor接口==>該接口實現方法的執行時機:該接口void
【spring源碼學習】spring的AOP面向切面編程的實現解析
內部 遠程調用 關註 add aps 文件 uem 連接 row 一:Advice(通知)(1)定義在連接點做什麽,為切面增強提供織入接口。在spring aop中主要描述圍繞方法調用而註入的切面行為。(2)spring定義了幾個時刻織入增強行為的接口??=>org.
【spring源碼學習】spring配置的事務方式是REQUIRED,但業務層拋出TransactionRequiredException異常問題
uncaught easy lap api tee class odi lose gre (1)spring拋出異常的點:org.springframework.orm.jpa.EntityManagerFactoryUtils public static DataAc
【JUC源碼解析】ConcurrentLinkedQueue
阻塞 操作 turn == 技術 next .com 源碼解析 否則 簡介 ConcurrentLinkedQueue是一個基於鏈表結點的無界線程安全隊列。 概述 隊列順序,為FIFO(first-in-first-out);隊首元素,是當前排隊時間最長的;隊尾元素,
【JUC源碼解析】ConcurrentSkipListMap
sde 空指針 順序 pri 不一致 前驅 values dex warning 簡介 基於跳表,支持並發,有序的哈希表。 跳表 紅色路徑為尋找結點F。 拿空間換時間,時間復雜度,O(nlogn). 源碼分析 內部類 Node 屬性 1
【JUC源碼解析】ScheduledThreadPoolExecutor
技術 inf del timer 默認 執行 task 情況下 多線程 簡介 它是一個線程池執行器(ThreadPoolExecutor),在給定的延遲(delay)後執行。在多線程或者對靈活性有要求的環境下,要優於java.util.Timer。 提交的任務在執行之前
【實戰】Amoeba 代理 MySQL 主從復制 + 讀寫分離 【提供源碼包】
system 導數據 ant 代理服 數據庫實例 切分 creat 生效 啟動服務 目錄簡介: 1· Amoeba 的介紹2· MySQL 主從復制原理3· MySQL 讀寫分離原理4· 實戰案例5· 總結歸納 Amoeba 的介紹 1)Amoeba 是什麽: 1
Memcached 安裝詳解【送源碼包】
ESS directory var code sco dex fire ref .html Memcached簡介 Memcached 是一個高性能的分布式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動
【提供源碼包】高性能存儲對象緩存 之【Memcached】
軟連接 丟失 參數 tst RoCE 內存 顯示 phpize 以及 目錄簡介: 1· Memcached 功能2· Memcached 特征3· Memcached 儲存方式4· 實戰部署 與 Memcached 連接5· 文章總結 Memcached 介紹 1)
【Dubbo 源碼解析】01_Dubbo 設計簡介
toc inf 參數 遠程 lin d-link jpg prot 定義 Dubbo 設計簡介 Dubbo 采用 Microkernel + Plugin (微內核 + 插件)模式,Microkernel 只負責組裝 Plugin,Dubbo 自身的功能也是通過擴展點實現
【Dubbo 源碼解析】06_Dubbo 服務調用
阻塞 發現 cluster iss 長連接 lean NPU void lib Dubbo 服務調用 根據上圖,可以看出,服務調用過程為: Consumer 端的 Proxy 調用 Cluster 層選擇集群中的某一個 Invoker(負載均衡)