MySQL 到 ClickHouse 數(shù)據(jù)同步優(yōu)化(三)

簡述

本文主要介紹 CloudCanal 如何將關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)同步到 ClickHouse缩功,默認(rèn)使用 ReplacingMergeTree 作為 ClickHouse 表引擎,鏈路特點包括:

  • 新增 _version倚聚、_sign 字段给赞,以便 ClickHouse 準(zhǔn)確合并喻喳。
  • DML 操作均以 INSERT 寫入幽污,同步性能良好。
  • 支持 DDL 同步悔橄。

技術(shù)點

結(jié)構(gòu)遷移

以 ClickHouse 為對端的結(jié)構(gòu)遷移绒疗,默認(rèn)選擇 ReplacingMergeTree 作為表引擎侵歇,如果帶有副本,則自動選擇 ReplicatedReplacingMergeTree吓蘑。

ClickHouse 表 sort key 默認(rèn)選擇源端表主鍵字段惕虑,如源端表無主鍵,則選擇 tuple()磨镶。

額外新增 _version溃蔫、_sign 作為合并字段,同步過程中 CloudCanal 根據(jù)數(shù)據(jù)操作自動填充值琳猫,確保鏈路兩端數(shù)據(jù)一致伟叛。

如下示例:

 CREATE TABLE console.worker_stats
(
    `id` Int64,
    `gmt_create` DateTime,
    `worker_id` Int64,
    `cpu_stat` String,
    `mem_stat` String,
    `disk_stat` String,
    `_sign` UInt8 DEFAULT 0,
    `_version` UInt64 DEFAULT 0,
    INDEX `_version_minmax_idx` `_version` TYPE minmax GRANULARITY 1
)
ENGINE = ReplacingMergeTree(`_version`,`_sign`)
ORDER BY id
SETTINGS index_granularity = 8192

數(shù)據(jù)寫入

全量遷移和增量同步所有操作均轉(zhuǎn)換成 INSERT,并以標(biāo)準(zhǔn) batch 寫入脐嫂。

  • _version 字段值按照數(shù)據(jù)變更順序進(jìn)行自增统刮。

  • _sign 字段中 INSERT & UPDATE 操作值為 0紊遵,DELETE 操作值為 1。

新增字段符合 ClickHouse ReplacingMergeTree 定義侥蒙。

操作示例

步驟 1: 安裝 CloudCanal

請參考 全新安裝(Docker Linux/MacOS)暗膜,下載安裝 CloudCanal 私有部署版本

步驟 2: 添加數(shù)據(jù)源

登錄 CloudCanal 控制臺鞭衩,點擊 數(shù)據(jù)源管理 > 新增數(shù)據(jù)源学搜。

步驟 3: 創(chuàng)建任務(wù)

  1. 點擊 同步任務(wù) > 創(chuàng)建任務(wù)
  2. 選擇源和目標(biāo)數(shù)據(jù)源论衍,并分別點擊 測試連接瑞佩。
  3. 目標(biāo)端側(cè)點開 高級選項,選擇表引擎為 ReplacingMergeTree (或 ReplicatedReplacingMergeTree)坯台。
  4. 選擇 數(shù)據(jù)同步 并勾選 全量初始化炬丸。建議規(guī)格至少選擇 1 GB。過小的規(guī)格可能導(dǎo)致任務(wù)運行時內(nèi)存溢出(OOM)捂人。
  5. 選擇需要同步的表御雕、列。
  6. 點擊 確認(rèn)創(chuàng)建滥搭,完成任務(wù)創(chuàng)建。

步驟 4: 驗證數(shù)據(jù)

  1. 停止源端寫入負(fù)載捣鲸,并等待 ClickHouse 合并瑟匆。
    因 ClickHouse 自動合并時機不定,可能會導(dǎo)致數(shù)據(jù)校驗顯示不準(zhǔn)栽惶。
    可執(zhí)行 optimize table xxx final 進(jìn)行手動合并(有一定概率無法成功)愁溜。
    另外也可執(zhí)行 create view xxx_v as select * from xxx final 命令,創(chuàng)建視圖外厂,對視圖進(jìn)行查詢冕象,以確保數(shù)據(jù)完全合并。

  2. 創(chuàng)建一個校驗任務(wù)汁蝶,任務(wù)完成后顯示渐扮,源對端數(shù)據(jù)完全一致。

總結(jié)

本文簡要介紹了 CloudCanal 實現(xiàn) MySQL到 ClickHouse 數(shù)據(jù)遷移同步的能力掖棉,幫助業(yè)務(wù)快速構(gòu)建實時數(shù)據(jù)分析環(huán)境墓律。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市幔亥,隨后出現(xiàn)的幾起案子耻讽,更是在濱河造成了極大的恐慌,老刑警劉巖帕棉,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件针肥,死亡現(xiàn)場離奇詭異饼记,居然都是意外死亡,警方通過查閱死者的電腦和手機慰枕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門握恳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捺僻,你說我怎么就攤上這事乡洼。” “怎么了匕坯?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵束昵,是天一觀的道長。 經(jīng)常有香客問我葛峻,道長锹雏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任术奖,我火速辦了婚禮礁遵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘采记。我一直安慰自己佣耐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布唧龄。 她就那樣靜靜地躺著兼砖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪既棺。 梳的紋絲不亂的頭發(fā)上讽挟,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音丸冕,去河邊找鬼耽梅。 笑死,一個胖子當(dāng)著我的面吹牛胖烛,可吹牛的內(nèi)容都是我干的眼姐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼洪己,長吁一口氣:“原來是場噩夢啊……” “哼妥凳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起答捕,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤逝钥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艘款,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡持际,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哗咆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜘欲。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晌柬,靈堂內(nèi)的尸體忽然破棺而出姥份,到底是詐尸還是另有隱情,我是刑警寧澤年碘,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布澈歉,位于F島的核電站,受9級特大地震影響屿衅,放射性物質(zhì)發(fā)生泄漏埃难。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一涤久、第九天 我趴在偏房一處隱蔽的房頂上張望涡尘。 院中可真熱鬧,春花似錦响迂、人聲如沸考抄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽座泳。三九已至,卻和暖如春幕与,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镇防。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工啦鸣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人来氧。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓诫给,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啦扬。 傳聞我的和親對象是個殘疾皇子中狂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容