? ? ? ?MySQL Binary Log Origin通過MySQL服務(wù)器提供的binary logs處理CDC。
? ? ? ?MySQL Binary Log Origin充當(dāng)MySQL復(fù)制的從服務(wù)器厘熟。MySQL復(fù)制允許您通過將數(shù)據(jù)從主服務(wù)器復(fù)制到從服務(wù)器來維護MySQL數(shù)據(jù)的多個副本拒啰。origin使用復(fù)制過程從MySQL主數(shù)據(jù)庫捕獲更改扎附,然后將更改的數(shù)據(jù)傳遞到數(shù)據(jù)收集器管道膨处。
? ? ? ?Origin可以從啟用或禁用全局事務(wù)標(biāo)識符(GTID)的MySQL服務(wù)器處理binary logs健爬。GTID是分配給MySQL服務(wù)器數(shù)據(jù)庫中發(fā)生的每個事務(wù)的惟一事務(wù)ID。
? ? ? ?MySQL Binary Log只處理變化數(shù)據(jù)幔欧。它為INSERT罪治、UPDATE丽声、和DELETE操作創(chuàng)建記錄。它為binary logs中記錄的每個更改生成一條記錄觉义。
? ? ? ?生成的記錄包括CDC信息字段的映射雁社。它還在記錄頭屬性中包含CRUD操作類型,這樣生成的記錄可以由啟用CRUD的destinations輕松處理晒骇。
? ? ? ?如果需要的話霉撵,可以在使用MySQL Binary Log Origin啟動pipeline之前,在單獨的pipeline中使用JDBC Multitable Consumer或JDBC Query Consumer從MySQL數(shù)據(jù)庫讀取現(xiàn)有數(shù)據(jù)厉碟。必要時喊巍,還應(yīng)該配置MySQL Binary Log pipeline來修改生成的記錄屠缭。
? ? ? ?在配置origin之前箍鼓,必須完成幾個先決條件,其中包括(1)為MySQL服務(wù)器配置row-based logging韵卤;(2)安裝JDBC驅(qū)動程序殊橙。
? ? ? ?在配置MySQL Binary Log時退盯,需要配置用于讀取日志文件的數(shù)據(jù)庫服務(wù)器☆硌辏可以配置Origin從頭讀取二進制日志文件,也可以指定偏移量來確定Origin從何處開始讀取數(shù)據(jù)跨新。
一.先決條件
? ? ? ?在讀取MySQL二進制日志以生成更改數(shù)據(jù)捕獲記錄之前富腊,必須完成以下先決條件:
(1)配置MySQL服務(wù)器使用row-based logging。
(2)安裝MySQL JDBC Driver域帐。
1.配置MySQL服務(wù)器使用row-based logging赘被。
? ? ? ?Mysql的binlog有三種格式,分別是Statement肖揣、Row以及Mixed民假。下面介紹Row格式:
? ? ? ?Row模式下的binlog不記錄sql語句上下文相關(guān)信息,僅保存哪條記錄被修改龙优。其缺點是可能會產(chǎn)生大量日志內(nèi)容羊异,比如一條update語句,修改多條記錄彤断,則binlog中每一條修改都會有記錄野舶,這樣造成binlog日志量會很大,特別是當(dāng)執(zhí)行alter table之類的語句的時候宰衙,由于表結(jié)構(gòu)修改筒愚,每條記錄都發(fā)生改變,那么該表每一條記錄都會記錄到日志中菩浙。
2.安裝JDBC驅(qū)動
? ? ? ?MySQL JDBC驅(qū)動必須位于外部目錄的MySQL Binary Log子目錄中巢掺。例如:/opt/sdc-extras/streamsets-datacollector-mysql-binlog-lib/lib/句伶。
二.Initial Offset(初始偏移量)
? ? ? ?可以配置Origin從文件的開頭或文件中的初始偏移量開始讀取二進制日志文件。
? ? ? ?初始偏移量是二進制日志文件中希望開始處理的點陆淀。啟動pipeline時考余,MySQL Binary Logs Origin從初始偏移量開始處理,并一直持續(xù)到停止管道轧苫。
? ? ? ?用于配置初始偏移量的格式取決于MySQL服務(wù)器是否啟用全局事務(wù)標(biāo)識符(GTID):
GTID enabled:
MySQL Binary Logs Origin要求初始偏移量包含GTID楚堤,格式如下:
<source_id>:<transaction_id>
例如:
8720bebf-bb38-11e6-97b1-0242ac110004:7066
GTID disabled:
MySQL Binary Logs Origin要求初始偏移量包含二進制日志文件名和文件中的位置,格式如下:
<binary log file name>:<position>
例如:
mysql-bin.000004:587
三.Generated Records(產(chǎn)生記錄)
? ? ? ?MySQL Binary Logs Origin為二進制日志中記錄的每個事務(wù)生成一條記錄含懊。記錄包括字段和記錄頭屬性身冬,其中包含包含操作類型、變化數(shù)據(jù)捕獲信息和變化數(shù)據(jù)岔乔。其詳細(xì)格式如下:
(1)CRUD operation type
? ? ? ?CRUD操作存儲在TYPE字段中酥筝,也包含在記錄頭屬性的sdc.operation.type中。
(2)Change data capture information
? ? ? ?有以下字段:
- BinLogFilename - when GTID is disabled
- BinLogPosition- when GTID is disabled
- SeqNo - when GTID is enabled
- GTID - when GTID is enabled
- Table
- ServerId
- Database
- Timestamp
- Offset
(3)new data
? ? ? ?插入或更新的新數(shù)據(jù)出現(xiàn)在data map字段中雏门。
(4)changed data
? ? ? ?被更新的老數(shù)據(jù)或刪除的記錄出現(xiàn)在olddata map字段中嘿歌。
? ? ? ?如下圖所示: