ClickHouse副本機(jī)制簡(jiǎn)介

      網(wǎng)友投稿 1109 2022-05-29

      ClickHouse副本機(jī)制簡(jiǎn)介

      Clickhouse 副本節(jié)點(diǎn)之間通過(guò)Zookeeper 的log數(shù)據(jù)和其他控制信息,實(shí)現(xiàn)了副本間數(shù)據(jù)的異步同步。本文中簡(jiǎn)單介紹插入數(shù)據(jù)后副本之間同步流程。

      副本表Zookeeper目錄結(jié)構(gòu)

      創(chuàng)建副本表,并插入數(shù)據(jù),在Zookeeper上可以看到表目錄下主要包含下列目錄信息,

      ReplicatedMergeTree(’/clickhouse/tables/{shard}/tbl_replicated’, ‘{replica}’)

      tbl_replicated:

      | —— block_numbers

      |all

      | —— blocks

      | —— columns 列信息

      | —— leader_election

      | —— leader_election-0000000000 主信息,副本節(jié)點(diǎn)(multiple leaders ok)

      | —— log

      | —— log-0000000000 part名稱以及相關(guān)的塊信息,創(chuàng)建時(shí)間,source replica, part_type

      | —— metadata 元數(shù)據(jù)信息 (未變化)

      | —— mutations 空 (未變化)合并場(chǎng)景,alter table的場(chǎng)景

      | —— nonincrement_block_numbers 空 (未變化)

      | —— quorum    ----> 默認(rèn)情況下,INSERT 語(yǔ)句僅等待一個(gè)副本寫(xiě)入成功后返回。

      如果數(shù)據(jù)只成功寫(xiě)入一個(gè)副本后該副本所在的服務(wù)器不再存在,

      則存儲(chǔ)的數(shù)據(jù)會(huì)丟失。

      要啟用數(shù)據(jù)寫(xiě)入多個(gè)副本才確認(rèn)返回,使用 insert_quorum 選項(xiàng)。

      | —— failed_parts

      | —— last_part

      | —— parallel

      | —— replicas

      | —— 1 、2

      | —— columns 列信息

      | —— flags

      | —— host 當(dāng)前副本的主機(jī)信息,端口號(hào)

      | —— is_active 副本節(jié)點(diǎn)ClickHouseServer進(jìn)程PID

      | —— is_lost

      | —— log_pointer ===》 1

      | —— max_processed_insert_time

      | —— metadata 元數(shù)據(jù)信息

      | —— metadata_version

      | —— min_unprocessed_insert_time

      | —— mutation_pointer

      | —— parts 副本包含的part 信息

      | —— queue 副本節(jié)執(zhí)行操作的隊(duì)列

      同步流程

      數(shù)據(jù)插入,流程如下:

      1、在其中2副本節(jié)點(diǎn)插入數(shù)據(jù)時(shí),如果數(shù)據(jù)只存在1個(gè)partition的數(shù)據(jù),則在該副本節(jié)點(diǎn)產(chǎn)生1個(gè)part。

      2、ClickHouse Server從tbl_replicated/block_numbers/all(all是分區(qū)名,沒(méi)有分區(qū)的情況下是all) 獲取新產(chǎn)生part的下標(biāo),該下標(biāo)是遞增的。使用獲取的part 下標(biāo)產(chǎn)生對(duì)應(yīng)的part 名。比如,首次插入數(shù)據(jù)從tbl_replicated/block_numbers/all獲取到的下標(biāo)是0, 則產(chǎn)生all_0_0_0 的part名。下次插入時(shí),從tbl_replicated/block_numbers/all獲取到的下標(biāo)是1,產(chǎn)生的part 名是all_1_1_0;

      3、用這個(gè)part 名生成寫(xiě)入磁盤(pán)后,在zookeeper副本表目錄下產(chǎn)生part 信息node

      ClickHouse副本機(jī)制簡(jiǎn)介

      tbl_replicated/replicas/2/parts/all_0_0_0

      在tbl_replicated/replicas/2/part/all_0_0_0在tbl_replicated/log目錄產(chǎn)生log-0000000000 日志信息:

      [zk: 8.5.131.220:24002(CONNECTED) 11] get /clickhouse/tables/17/tbl_replicated/log/log-0000000000 format version: 4 create_time: 2021-11-20 14:27:00 source replica: 2 block_id: all_3218416765532976388_2128470793510818708 get all_0_0_0 part_type: Compact

      source replica: 2 表明該part 是從副本2產(chǎn)生的

      副本同步流程

      1、副本節(jié)點(diǎn)1 定時(shí)讀取tbl_replicated/log 目錄,讀取到新的log后,將log同步到本副本節(jié)點(diǎn)的tbl_replicated/replicas/1/queue/queue-00000000000, 然后更本節(jié)點(diǎn)的tbl_replicated/replicas/1/log_pointer 值為0,表明本副本已經(jīng)執(zhí)行到log-0000000000,后續(xù)執(zhí)行l(wèi)og-0000000001(包含)之后的log

      2、內(nèi)核中副本表的定時(shí)任務(wù)從tbl_replicated/replicas/1/queue消費(fèi)節(jié)點(diǎn),讀取到log-0000000000的內(nèi)容時(shí),需要從source replica: 2 拉取part ,副本2對(duì)應(yīng)的主機(jī)節(jié)點(diǎn)host 從znode 節(jié)點(diǎn)/clickhouse/tables/17/tbl_replicated/replicas/2/host獲取:

      host: 8-5-131-220 port: 21429 tcp_port: 9000 database: db_test table: tbl_replicated scheme: https

      拉取到part后,副本1也寫(xiě)入tbl_replicated/replicas/1/parts/all_0_0_0的znode ,表明本副本節(jié)點(diǎn)有這個(gè)part數(shù)據(jù)。

      在副本消費(fèi)queue的過(guò)程中,并不是嚴(yán)格先入先出的順序。如果看到log 的類(lèi)型是merge 而不是get ,則考慮優(yōu)先去拉取merge后的part 數(shù)據(jù),而不是直接拉取原始的part

      3、log 清除邏輯。當(dāng)log_xxxxxxx下標(biāo)已經(jīng)小于所有有副本的log_pointer ,且log 目錄下的數(shù)量已經(jīng)大于指定閾值,則會(huì)清除該log節(jié)點(diǎn)。

      EI企業(yè)智能 FusionInsight

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:學(xué)習(xí)C++:輸入輸出流cout與cin
      下一篇:Hive快速入門(mén)系列(9) | Hive表中數(shù)據(jù)的加載與導(dǎo)出
      相關(guān)文章
      亚洲成人高清在线| 日本亚洲色大成网站www久久| 亚洲日本一线产区和二线产区对比| 久久青草亚洲AV无码麻豆| 亚洲午夜国产片在线观看| 亚洲av无码成人精品国产| 亚洲色www永久网站| 国产午夜亚洲精品国产| 亚洲人成日本在线观看| 亚洲成a人片在线观看中文!!! | 亚洲欧洲日本在线| 色婷婷六月亚洲综合香蕉| 亚洲精品无码不卡在线播放| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲一区二区三区在线观看网站| 亚洲xxxxxx| 国产精品亚洲一区二区麻豆| 亚洲性无码一区二区三区| 亚洲国产美女精品久久久| 亚洲AV无码成人精品区狼人影院| 综合一区自拍亚洲综合图区| 亚洲成a人片在线观看日本麻豆| 亚洲人成人网站在线观看| 国产福利电影一区二区三区,亚洲国模精品一区| 国产区图片区小说区亚洲区| 亚洲国产午夜中文字幕精品黄网站| 亚洲精品成人在线| 久久亚洲高清综合| 亚洲中文久久精品无码ww16| 亚洲成AV人片在WWW色猫咪| 亚洲色欲色欲综合网站| 亚洲男女一区二区三区| 亚洲色欲色欲www| 亚洲国产成人手机在线观看| 妇女自拍偷自拍亚洲精品| 亚洲欧洲自拍拍偷精品 美利坚 | 亚洲中文字幕在线无码一区二区| 亚洲国产最大av| 亚洲av永久无码| 亚洲一级片内射网站在线观看| 伊伊人成亚洲综合人网7777|