欧美丝袜一区二区-欧美精品在线观看一区二区-久久精品男人,亚洲乱码中文字幕综合,久久精品手机视频,极度bdsm残忍bdsm变态

沃趣科技產(chǎn)品與技術(shù)資源中心
產(chǎn)品白皮書(shū)丨最佳實(shí)踐合集丨行業(yè)報(bào)告丨技術(shù)文章
資源 > 原理剖析|干貨好文 | 初探MySQL遷移到ClickHouse

原理剖析|干貨好文 | 初探MySQL遷移到ClickHouse

2023年06月13日

前言


ClickHouse無(wú)疑是目前最火的OLAP解決方案,筆者所在的運(yùn)維團(tuán)隊(duì),ClickHouse的數(shù)量近兩年增長(zhǎng)迅猛。 

最近老板安排了一個(gè)任務(wù),要求我調(diào)研現(xiàn)在MySQL到ClickHouse的同步工具,方便后面將線上的在線OLTP數(shù)據(jù)實(shí)時(shí)同步給線下的OLAP ClickHouse,這樣業(yè)務(wù)人員和運(yùn)營(yíng)人員基于它進(jìn)行統(tǒng)計(jì)查詢更直觀快速。

 

目前,市面上的相關(guān)工具和產(chǎn)品,主要分為三類:

  1.  ClickHouse原生提供的MySQL同步工具

  2.  命令行式的MySQL to ClickHouse同步工具

  3. 界面引導(dǎo)式的MySQL to ClickHouse同步工具

 

 

 

01 ClickHouse原生同步工具

ClickHouse 官方提供了MaterializedMySQL的同步復(fù)制工具,它會(huì)獲取MySQL的binlog,并重放DDL和DML。但是這個(gè)特性沒(méi)有release,官方文檔用醒目的字體顯示“This is an experimental feature that should not be used in production.”不能用在生產(chǎn)環(huán)境中,并且看代碼也有一段時(shí)間沒(méi)有更新了。

 

測(cè)試結(jié)果如下:

  • 在MySQL上創(chuàng)建一個(gè)表。


mysql> create database db1;
mysql> create table test1 (a INT PRIMARY KEY, b INT);


  • 在ClickHouse上新建MaterializeMySQL的表。

## 這里要專門設(shè)置以便clickhouse能使用這個(gè)特性
ck> set allow_experimental_database_materialize_mysql=1;   
 
## 這里創(chuàng)建連接到user@192.168.1.17:3306/db1的database連接,命名為db1_ck
ck> CREATE DATABASE db1_ck ENGINE = MaterializeMySQL('192.168.1.17:3306', 'db1', 'user', '***');
 
## 進(jìn)入db1_ck這個(gè)數(shù)據(jù)庫(kù)
ck> use db1_ck;
 
## 查看db1_ck庫(kù)下的表,可以看到test1這個(gè)表
ck> show tables;


  • 查看test1這個(gè)表在ck上的表結(jié)構(gòu)。


ck> show create table test1;
 
CREATE TABLE db1_ck.test1
(
    `a` Int32,
    `b` Nullable(Int32),
    `_sign` Int8 MATERIALIZED 1,
    `_version` UInt64 MATERIALIZED 1,
    INDEX _version _version TYPE minmax GRANULARITY 1
)
ENGINE = ReplacingMergeTree(_version)
PARTITION BY intDiv(a, 4294967)
ORDER BY tuple(a)
SETTINGS index_granularity = 8192



test1表使用的是ReplacingMergeTree引擎,表結(jié)構(gòu)新增了兩個(gè)字段_sign和_version作為隱藏字段,用于標(biāo)識(shí)該行是否刪除和版本號(hào)。這樣將MySQL的update和delete統(tǒng)一轉(zhuǎn)換成insert,充分利用ClickHouse快速導(dǎo)入數(shù)據(jù)、update和delete慢且容易出問(wèn)題的特性。內(nèi)部實(shí)現(xiàn)原理的細(xì)節(jié)和好處,我們將在另外一篇文章里面介紹。

 

 

 

  • 在MySQL上操作,看數(shù)據(jù)會(huì)不會(huì)同步到ClickHouse上。

 


mysql> insert into test1 values (1,11),(2,22),(3,33);
mysql> update test1 set b=77 where a=1;
mysql> delete from test1 where a=2;
 
ck> select * from db1_ck.test1;
┌─a─┬──b─┐
│ 1 │ 77 │
│ 3 │ 33 │
└───┴────┘


可以看到,數(shù)據(jù)基本都正確地同步到ClickHouse上去了。


02  命令行式同步工具

這一類是利用命令行來(lái)實(shí)現(xiàn)MySQL同步到ClickHouse的工具,例如Altinity的clickhouse-mysql-data-reader工具,這個(gè)工具也可以實(shí)現(xiàn)DML的數(shù)據(jù)同步。但是安裝和命令行使用太麻煩,而且這個(gè)工具2020年就不再更新了,所以此次沒(méi)有進(jìn)一步深入研究。





03  界面引導(dǎo)式工具——以DBMotion為例

有獨(dú)立的web界面來(lái)實(shí)現(xiàn)MySQL同步到ClickHouse,用戶體驗(yàn)更方便。類似的國(guó)內(nèi)產(chǎn)品有很多,從簡(jiǎn)單性和穩(wěn)定性來(lái)說(shuō),個(gè)人偏向于DBMotion。下面就以DBMotion的線上版本為例,介紹一下界面引導(dǎo)式MySQL to ClickHouse的遷移。



遷移任務(wù)配置和查看

  • 首先,進(jìn)入DBMotion的頁(yè)面,點(diǎn)擊免費(fèi)使用。

    https://squids.cn/product/dbmotion

1.jpg



  • 登錄DBMotion的任務(wù)列表頁(yè)面。

    https://console.squids.cn/console/transfer

2.jpg




  • 單擊“添加任務(wù)”按鈕,進(jìn)入“源端目標(biāo)庫(kù)配置”。

    為方便展示,這里選擇的是在公網(wǎng)ECS上創(chuàng)建的MySQL和ClickHouse。

3.jpg



注意:這里的源庫(kù)與目標(biāo)庫(kù)的用戶、權(quán)限,建議按照授權(quán)語(yǔ)句的要求,在源庫(kù)和目標(biāo)庫(kù)新建用戶,否則后面的預(yù)檢查和遷移有可能會(huì)失敗。遷移完成后,就可以將源端和目標(biāo)端的用戶刪除。 

4.jpg



  • 點(diǎn)擊“測(cè)試連接以進(jìn)行下一步”,進(jìn)入“遷移選項(xiàng)配置”頁(yè)。

    這里可以展開(kāi)選擇你要同步的表,選擇并發(fā)數(shù)和遷移哪些MySQL的表到目標(biāo)端。 

5.jpg



  • 最后,用戶確認(rèn)配置并進(jìn)行預(yù)檢查

    這一步可以看到用戶選擇的是哪些內(nèi)容,而且預(yù)檢查會(huì)提前發(fā)現(xiàn)一些可能導(dǎo)致遷移失敗的問(wèn)題 。

6.jpg



這個(gè)確認(rèn)頁(yè)面內(nèi)容豐富,涵蓋了源庫(kù)、目標(biāo)庫(kù)和要遷移的對(duì)象的信息。還會(huì)主動(dòng)預(yù)檢查所有可能導(dǎo)致遷移失敗的點(diǎn),出現(xiàn)問(wèn)題時(shí)會(huì)發(fā)出提醒,并給出修復(fù)建議,是一個(gè)比較方便的功能。


  • 能看到新建任務(wù)成功,點(diǎn)擊任務(wù)就可以進(jìn)入任務(wù)詳情頁(yè)面 。

7.jpg




  • 在任務(wù)配置頁(yè)面,可以看到這次遷移同步任務(wù)的源庫(kù)、目標(biāo)庫(kù)和遷移對(duì)象信息,之前的預(yù)檢查信息也可以在這里回顧。

8.jpg




遷移詳情主要包括“對(duì)象遷移”、“全量遷移”、“增量遷移”和“數(shù)據(jù)校驗(yàn)”。



  • 對(duì)象遷移。

    以這兩個(gè)測(cè)試表為例,將對(duì)象同步過(guò)去的速度是比較快的。對(duì)象遷移,DBMotion具體同步的內(nèi)容,我們看目標(biāo)庫(kù)上的表和數(shù)據(jù)的時(shí)候可以看到。

9.jpg



  • 全量遷移。

    兩個(gè)表的數(shù)據(jù)不多,同步的速度較快。

10.jpg

這里每個(gè)步驟都有遷移進(jìn)度、遷移速度、已遷移時(shí)間、預(yù)計(jì)剩余時(shí)間,對(duì)于遷移的進(jìn)展和大概需要多少時(shí)間,一目了然。



  • 增量遷移

    記錄了同步的binlog位點(diǎn)信息。

11.jpg




  • 數(shù)據(jù)校驗(yàn)

    這個(gè)功能是其他相關(guān)產(chǎn)品沒(méi)有的功能,會(huì)校驗(yàn)MySQL和ClickHouse的表和數(shù)據(jù)。對(duì)于需要精確匹配的遷移來(lái)說(shuō),是一個(gè)很實(shí)用的功能。

12.jpg



  • 結(jié)束遷移

    結(jié)束遷移是為了關(guān)閉增量,保證遷移完成以后,就可以結(jié)束遷移了。

13.jpg




  • 任務(wù)日志

    在遷移報(bào)錯(cuò)的時(shí)候,用來(lái)檢查到底是哪個(gè)環(huán)節(jié)出現(xiàn)了問(wèn)題。

14.jpg




總體來(lái)看,這個(gè)操作是比較簡(jiǎn)單的。只需要配置好源端、目標(biāo)端和遷移對(duì)象,它就會(huì)幫你創(chuàng)建好遷移任務(wù)。任務(wù)展示頁(yè)面也比較清晰明了,同步了哪些內(nèi)容,數(shù)據(jù)是否一致都有比較好的展現(xiàn)。



實(shí)際遷移結(jié)果

接下來(lái),我們來(lái)看它的實(shí)際遷移結(jié)果。


全量遷移

  • 源庫(kù)表結(jié)構(gòu)。

    源庫(kù)上test_grant1.test1表的表結(jié)構(gòu)如下:

15.jpg



  • 目標(biāo)庫(kù)結(jié)構(gòu)。

    遷移完成后,在目標(biāo)庫(kù)里看,DBMotion新建了兩個(gè)schema,test_grant1和test_grant1_ck,并分別在這兩個(gè)schema下新建了test1_ck表和test1表,對(duì)應(yīng)的表結(jié)構(gòu)如下:

16.jpg
17.jpg




這一步,DBMotion應(yīng)該是參考ClickHouse原生解決方案MaterializedMySQL來(lái)實(shí)現(xiàn)的。解釋一下:

  • test_grant1_ck.test1_ck是ReplacingMergeTree的表,除了a、b兩列以外,還有__version@@和__event_type@@,對(duì)應(yīng)version和sign兩個(gè)字段。

  • 為了方便用戶使用,在目標(biāo)庫(kù)上專門新建了test_grant1.test1的視圖,讓用戶查詢的時(shí)候,看到的數(shù)據(jù)和源庫(kù)一致。



增量遷移。

我們測(cè)試了一下在源庫(kù)上做增刪改的操作,在目標(biāo)庫(kù)上查看同步效果,發(fā)現(xiàn)同步延遲基本在秒級(jí)別,同步的數(shù)據(jù)也完全一致

  • 源庫(kù)增刪改查。

18.jpg



  • 目標(biāo)庫(kù)查看數(shù)據(jù)。

19.jpg
20.jpg

這里可以明顯看到,test_grant1_ck.test1_ck中記錄的是源庫(kù)做的所有DML操作,通過(guò)視圖合并后,test_grant1.test1查詢出來(lái)的數(shù)據(jù)跟源庫(kù)一模一樣。


PS:B站上有一個(gè)DBMotion的介紹視頻,不喜歡看文字的,可以看這個(gè)視頻了解一下它的安裝和使用方式。




總結(jié)


  • MySQL to Clickhouse,目前有ClickHouse原生提供的同步工具、命令行同步工具和界面指引型同步工具。原生的工具暫時(shí)不能用在生產(chǎn)環(huán)境命令行工具使用起來(lái)比較繁瑣界面型相對(duì)簡(jiǎn)單易用

  • 界面型同步工具中,DBMotion相對(duì)比較直觀簡(jiǎn)單。

  • 這些工具對(duì)DDL、無(wú)主鍵表都有一些限制,這些問(wèn)題我將在另外一篇文章里面詳細(xì)描述。


讓數(shù)據(jù)庫(kù)基礎(chǔ)設(shè)施更簡(jiǎn)單
加速企業(yè)數(shù)字化轉(zhuǎn)型建設(shè)及落地
立即咨詢

沃趣科技

中立的企業(yè)級(jí)數(shù)據(jù)庫(kù)云
十年磨一劍十年來(lái)始終如一的專注數(shù)據(jù)庫(kù)生態(tài)領(lǐng)域
夯實(shí)技術(shù)底蘊(yùn)打造最適合時(shí)代的數(shù)據(jù)庫(kù)基礎(chǔ)設(shè)施
業(yè)績(jī)持續(xù)領(lǐng)先目前已累計(jì)服務(wù)超3000家企業(yè)客戶

留言咨詢

完善信息,我們第一時(shí)間跟您聯(lián)系
姓名
手機(jī)
公司
所在地區(qū)
咨詢問(wèn)題