MySQL到ClickHouse數(shù)據(jù)同步方案
MySQL 同步到 ClickHouse的方案可以看下面的說明,選擇合適最近的同步方法。
1. 對比結(jié)果概述
整體上,NineData(官網(wǎng):www.ninedata.cloud )的數(shù)據(jù)復(fù)制功能在功能、性能表現(xiàn)最突出。其次是 Bifrost 和 ClickHouse 自帶的 MaterializeMySQL。NineData 在增量 DDL 的處理、字段映射的準(zhǔn)確性、無主鍵表、以及功能豐富度上最強(數(shù)據(jù)校驗、過濾、限流等),詳細(xì)的對比如下圖:
2. 結(jié)構(gòu)映射對比
在做了詳細(xì)對比之后,對于基礎(chǔ)類型,只有 NineData 考慮的更加完整,例如 MySQL 的 datetime 需要映射到 ClickHouse的 DateTime64,否則則可能出現(xiàn)數(shù)據(jù)丟失。如果使用 Biforst 或 MaterializeMySQL 等其他產(chǎn)品均映射到 datetime 可能會造成一定程度的數(shù)據(jù)精度丟失。此外,在對比了 MySQL 全部數(shù)據(jù)類型之后,發(fā)現(xiàn) NineData 支持更完整,例如對 JSON 類型、幾何數(shù)據(jù)、地理信息僅 NineData 支持。此外,對于基礎(chǔ)類型,也只有NineData考慮更加細(xì)致,使用 Biforst 或 MaterializeMySQL 等其他產(chǎn)品則可能導(dǎo)致精度丟失,從而造成數(shù)據(jù)丟失。
詳細(xì)的對比如下圖(黃色標(biāo)記為差異):

3.無主鍵表支持
NineData 對記錄做了特殊的標(biāo)記處理,所以很好的支持了無主鍵表的數(shù)據(jù)同步。而 MaterializeMySQL、Biforst 均不支持。詳細(xì)的對比如下圖:

4. 增量DDL
對于數(shù)據(jù)增量同步,支持好各種類型的DDL是保障同步鏈路持續(xù)穩(wěn)定的關(guān)鍵,NineData 在無主鍵表 DDL 支持、字段刪除、字段名修改等特殊操作均做了適配處理,可以很好的保障復(fù)制鏈路的問題。同時,NineData 還提供了可視化的錯誤修復(fù)和跳過功能,可以最大限度的保障鏈路持續(xù)穩(wěn)定。詳細(xì)的對比如下圖:

5. 增量DDL
除了前面介紹的一般功能之外,為了提升數(shù)據(jù)質(zhì)量、保障穩(wěn)定,NineData 還支持了包括數(shù)據(jù)對比、運行中的限流、數(shù)據(jù)過濾等功能。具體的說明如下:
6. 增量DDL
這里使用 sysbench 工具生成了5000萬行記錄進(jìn)行全量性能對比,再生成約1800萬次 DML(約5GB Binlog)進(jìn)行增量性能對比。對比中,全量同步 NineData 性能為36.2W RPS(每秒同步記錄數(shù))為最高;增量同步則是 MaterializeMySQL 最高,需要注意,MaterializeMySQL 在錯誤處理上比較簡單,如果報錯則需要全部重新同步。
全量同步
通過 sysbench 生成10張表,每張表500W記錄(5000W行),數(shù)據(jù)文件大小約為 12G:

增量同步
通過 sysbench 生成 5G 大小的 BinLog 日志(約1800W次DML),再進(jìn)行增量同步:

7. 總結(jié)
NineData(https://www.ninedata.cloud/)在功能上領(lǐng)先其他同步工具,特別是字段類型的全面適配和增量復(fù)制期間 DDL 的支持度,并且在動態(tài)限流、數(shù)據(jù)對比、監(jiān)控等能力上也支持的最完善。
所以,如果想把 MySQL 的數(shù)據(jù)實時同步到 ClickHouse,推薦使用 NineData,不僅使用簡單(SaaS),而且在滿足功能和性能的前提下,還實現(xiàn)了字段類型的無損轉(zhuǎn)換和數(shù)據(jù)的實時復(fù)制,很好的解決 MySQL 同步數(shù)據(jù)到 ClickHouse 的問題。
▋補充說明
當(dāng)前各個云廠商雖然都提供 ClickHouse 托管服務(wù),但是另一方云廠商又都在發(fā)展自己的數(shù)倉產(chǎn)品,在同步功能支持上通常僅對自家的數(shù)倉產(chǎn)品支持比較好,而對 ClickHouse 同步支持都很薄弱。此外,開源工具 Canal 也因為不能很好的支持結(jié)構(gòu)同步,使用和維護起來并不方便。
最后,可以關(guān)注公眾號
,能夠第一時間了解行業(yè)動態(tài)。

浙公網(wǎng)安備 33010602011771號