ClickHouse 數(shù)據(jù)遷移[remote表、clickhouse-copier]

一全闷、 clickhouse-copier

1叉寂、what's this?

clickhouse-copier是官方出的用來(lái)同步數(shù)據(jù)的工具总珠,依賴zk來(lái)滿足跨集群同步數(shù)據(jù)的場(chǎng)景屏鳍。

2勘纯、how to use?

假設(shè)我們要從cluster1[IP1,IP2,IP3]集群中拷貝table_dis到cluster2[IP4,IP5]中钓瞭。table_dis是distributed table驳遵,對(duì)應(yīng)的mergetree表為table_local

(1)zk.xml

<yandex>
    <logger>
        <level>trace</level>
        <size>100M</size>
        <count>3</count>
    </logger>

    <zookeeper>
        <node index="1">
            <host>[ZK-IP]</host>
            <port>[ZK-PORT]</port>
        </node>
    </zookeeper>
</yandex>

創(chuàng)建zk.xml文件,用于copy時(shí)候使用降淮。

(2)schema.xml
用括號(hào)標(biāo)注的變量需要根據(jù)實(shí)際情況更換超埋。

<yandex>
    <!-- Configuration of clusters as in an ordinary server config -->
    <remote_servers>
        <source_cluster>
            <shard>
                <internal_replication>false</internal_replication>
                <replica>
                    <host>[IP1]</host>
                    <port>[TCP PORT]</port>
                </replica>
            </shard>
        </source_cluster>
        <destination_cluster>
            <shard>
                <internal_replication>false</internal_replication>
                <replica>
                    <host>[IP4]</host>
                    <port>[TCP PORT]</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>false</internal_replication>
                <replica>
                    <host>[IP5]</host>
                    <port>[TCP PORT]</port>
                </replica>
            </shard>
        </destination_cluster>
    </remote_servers>
    <max_workers>2</max_workers>
    <settings_pull>
        <readonly>1</readonly>
    </settings_pull>
    <settings_push>
        <readonly>0</readonly>
    </settings_push>
    <settings>
        <connect_timeout>3</connect_timeout>
        <!-- Sync insert is set forcibly, leave it here just in case. -->
        <insert_distributed_sync>1</insert_distributed_sync>
    </settings>
    <!-- Copying tasks description.
         You could specify several table task in the same task description (in the same ZooKeeper node), they will be performed
         sequentially.
    -->
    <tables>
        <!-- A table task, copies one table. -->
        <table_hits>
            <!-- Source cluster name (from <remote_servers/> section) and tables in it that should be copied -->
            <!-- cluster_pull、cluster_push不需要變動(dòng)-->
            <cluster_pull>source_cluster</cluster_pull>
            <database_pull>[DATABASE]</database_pull>
            <table_pull>[table_dis]</table_pull>
            <!-- Destination cluster name and tables in which the data should be inserted -->
            <cluster_push>destination_cluster</cluster_push>
            <database_push>[DATABASE]</database_push>
            <table_push>[table_local]</table_push>
            <!-- Sharding key used to insert data to destination cluster -->
            <sharding_key>rand()</sharding_key>
            <engine>[ENGINE SYNTAX]</engine>
        </table_hits>
    </tables>
</yandex>
  • [IP1] & [table_dis]:我們選擇在IP1上運(yùn)行clickhouse-copier程序佳鳖,所以指定IP1。在source_cluster中只指定了一臺(tái)服務(wù)器媒惕,所以直接會(huì)用分布式表做query系吩。也有一種方案是在source_cluster中配置全I(xiàn)P1、IP2妒蔚、IP3穿挨,再在table_pull的tag中使用table_local表。
  • 我們?cè)赿estination_cluster中配置全了cluster中的所以節(jié)點(diǎn)肴盏,并且table_push指定的是local表科盛,這樣子從IP1的分布式表查出來(lái)的數(shù)據(jù)就會(huì)分散寫入cluster2中的節(jié)點(diǎn)中。
  • [ENGINE SYNTAX]:實(shí)測(cè)我們需要在目標(biāo)集群中都手動(dòng)建立起來(lái)需要的表菜皂,并且engine也需要指定贞绵。應(yīng)該是個(gè)bug
  • 其余參數(shù)可以根據(jù)描寫按實(shí)際需要修改恍飘,提高并行度榨崩。

3、execute

在IP1中執(zhí)行:

clickhouse-copier copier --daemon --config zk.xml --task-path /[ZK-CLICKHOUSE-PATH/NODE] --base-dir /[PATH] --task-upload-force true --task-file schema.xml

參數(shù) 含義
--daemon 后臺(tái)運(yùn)行
/ZK-CLICKHOUSE-PATH/NODE 在zk上使用的節(jié)點(diǎn)章母。ZK-CLICKHOUSE-PATH 這個(gè)節(jié)點(diǎn)需要先手動(dòng)創(chuàng)建母蛛,NODE不需要
PATH 本機(jī)的一個(gè)路徑,用于記錄日志
--task-upload-force 是否每次都更新schema.xml到zk節(jié)點(diǎn)上乳怎,默認(rèn)false

4彩郊、性能

測(cè)試在3臺(tái)的集群1000w條的數(shù)據(jù),寫入2臺(tái)的集群中蚪缀,耗時(shí)在30s

二秫逝、remote table

INSERT INTO TABLE SELECT * FROM remote('remote-table-ip','origin-table-name','user','passwd')

三、對(duì)比

  • remote表的方式較簡(jiǎn)單椿胯,copier的方式需要依賴zk筷登,并且配置較為麻煩。
  • copier的方式支持多進(jìn)程復(fù)制哩盲,能提高復(fù)制的效率前方。
  • copier表支持origin表平均狈醉、hash等方式寫入多個(gè)節(jié)點(diǎn),remote表只能一對(duì)一惠险。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苗傅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子班巩,更是在濱河造成了極大的恐慌渣慕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抱慌,死亡現(xiàn)場(chǎng)離奇詭異逊桦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)抑进,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門强经,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人寺渗,你說(shuō)我怎么就攤上這事匿情。” “怎么了信殊?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵炬称,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涡拘,道長(zhǎng)玲躯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任鲸伴,我火速辦了婚禮府蔗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汞窗。我一直安慰自己姓赤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布仲吏。 她就那樣靜靜地躺著不铆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裹唆。 梳的紋絲不亂的頭發(fā)上誓斥,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音许帐,去河邊找鬼劳坑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛成畦,可吹牛的內(nèi)容都是我干的距芬。 我是一名探鬼主播涝开,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼框仔!你這毒婦竟也來(lái)了舀武?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤离斩,失蹤者是張志新(化名)和其女友劉穎银舱,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體跛梗,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寻馏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了核偿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片操软。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宪祥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情家乘,我是刑警寧澤蝗羊,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站仁锯,受9級(jí)特大地震影響耀找,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜业崖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一野芒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧双炕,春花似錦狞悲、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至站超,卻和暖如春荸恕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背死相。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工融求, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人算撮。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓生宛,卻偏偏與公主長(zhǎng)得像县昂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茅糜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345