天天看點

DataX在資料遷移中的應用

DataX在資料遷移中的應用

1. DataX定義

首先簡單介紹下datax是什麼。

DataX是阿裡巴巴集團内被廣泛使用的離線資料同步工具/平台,實作包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構資料源之間高效的資料同步功能。

2. DataX 商業版本

阿裡雲DataWorks資料內建是DataX團隊在阿裡雲上的商業化産品,緻力于提供複雜網絡環境下、豐富的異構資料源之間高速穩定的資料移動能力,以及繁雜業務背景下的資料同步解決方案。目前已經支援雲上近3000家客戶,單日同步資料超過3萬億條。DataWorks資料內建目前支援離線50+種資料源,可以進行整庫遷移、批量上雲、增量同步、分庫分表等各類同步解決方案。2020年更新實時同步能力,支援10+種資料源的讀寫任意組合。提供MySQL,Oracle等多種資料源到阿裡雲MaxCompute,Hologres等大資料引擎的一鍵全增量同步解決方案。

關于datax的git位址,可參考文後資料[1]了解詳情。

2.1 應用案例

接下來介紹下我們在兩個項目上的應用案例。

2.1.1 案例一 通過datax協助分析資料同步鍊路

客戶某oracle資料庫在遷移上雲過程中,使用了某封裝好的産品,但是傳輸效率一直很低,隻有6M/s。客戶一直懷疑是雲内vpc網絡瓶頸或rds資料庫瓶頸導緻,但是實際上,雲内網絡以及資料庫整體處于非常低的負載狀态。

由于客戶側的傳輸工具我們不友善直接拿來測試,是以在ecs上臨時部署了datax,來做分析和對照測試;

測試結果如下圖所示。

DataX在資料遷移中的應用
DataX在資料遷移中的應用

常用的優化參數介紹如下:

1.通道(channel)--并發

  • 通過測試可知,channel的設定對傳輸效率的影響較為明顯,上述實驗中,所有設定為1的,即沒有并發的情況下,同步速度均為8.9M/s;将該設定調高之後,速率明顯倍增,但增大到一定程度後,瓶頸點就轉到其他配置了;

2.切片(splitpk)

Git官方介紹如下:

  • 描述:MysqlReader進行資料抽取時,如果指定splitPk,表示使用者希望使用splitPk代表的字段進行資料分片,Datax是以會啟動并發任務進行資料同步,這樣可以大大提高資料同步的效能。

    推薦splitPk使用者使用表主鍵,因為表主鍵通常情況下比較均勻,是以切分出來的分片也不容易出現資料熱點。

    目前splitPk僅支援整形資料切分,不支援浮點、字元串、日期等其他類型。如果使用者指定其他非支援類型,MysqlReader将報錯。

    如果splitPk不填寫,包括不提供splitPk或者splitPk值為空,DataX視作使用單通道同步該表資料。

  • 必選:否
  • 預設值:空

實際上,由測試結果可知,切片是要配合channel來使用的,如果隻開了splitpk,但是channel的配置為1,同樣不會有并發的效果;

3.Batchsize

  • 描述:一次性批量送出的記錄數大小,該值可以極大減少DataX與Mysql的網絡互動次數,并提升整體吞吐量。但是該值設定過大可能會造成DataX運作程序OOM情況。
  • 預設值:1024

現場的實際測試效果不明顯,主要原因是資料量較小,1c1g配置時,适當提高batch可以提升同步速度。

其他還有很多參數,有待小夥伴們去逐一發掘,或者下次我們用到再給大家分享;

由測試結果可知,項目使用的工具隻能同步6m的速率,肯定是遠遠不足的,性能瓶頸既不在網絡上,也不在資料庫上,我們隻做了部分測試,就發現4c16g的資料庫輕輕松松就能達到27M的同步速率。

2.1.2 案例二 datax在資料同步實戰中的應用

該案例是客戶兩朵雲之間的資料遷移,客戶建立了一朵雲,需要把前一朵雲上的資料遷移過去。

方案如下:

DataX在資料遷移中的應用

圖1:方案

2.2 部署方式

Datax本身無自動叢集化部署,需要逐台手工部署;

15台v2的實體機,空餘記憶體均在150G左右。(因為V2叢集即将下線,上述産品無業務,是以利用了閑置的實體機,在實體條件不具備時,可以采用ecs或其他虛拟機。)

機器要求:同步任務啟動會占用較多記憶體,測試平均1個任務占用10G記憶體(大表);

單台150G記憶體可以支援15個并發任務;

2.3 同步方式

2.3.1 資料特點
分類 項目數 總資料量
1T以上project 7個 97T
1T以下project 77個 15T
  • 曆史記錄表:曆史資料,項目數不多,但占用了80%以上的空間;
  • 維表+臨時表:項目數多,表較小,占用空間占比小;
  • 資料特點:客戶幾十個部門分析報表,小表分區比較多,大表相對少一些;
2.3.2 同步順序

先同步大表,然後再同步小表;

業務沒有同步順序要求,小表易變,大表穩定,是以優先同步大表;

大表同步需要的手動配置少,也适合前期做好調試;(正式啟動同步前的測試不要選太大的表,建議10G-50G,可以測出效率和壓力。)

  • 優點:機器多,并發高,可以快速壓到瓶頸,提升整體同步效率;
  • 缺點:Datax為原生的遷移工具,不具備自動化能力,需要人工大量的配置同步任務;

注:建議預留幾台機器專門用于多分區小表的同步,剩餘其他機器同步大表。

2.4 總結

綜上所述,Datax的優勢非常明顯:

  • 首先,部署非常簡單,無論是在實體機上或者虛拟機上,隻要網絡通暢,便可進行資料同步,給實施人員帶來了極大的便利,不受标準資料同步産品部署的條框限制;
  • 再者,它是開源産品,幾乎沒有成本;

但是,它的缺點也是顯而易見的:

  • 開源工具更多的是提供基礎能力,并不具備任務管理,進度跟蹤、校驗等等一系列的功能,隻能使用者自己通過腳本或者表格記錄,目前暫無白屏;是以注定了它隻能作為臨時性質的資料同步工具去使用;

是以,業務上有一些規範化管理或者标準化運維的需求時,或者有頻繁地、持續地使用資料同步排程的需求時,安全生産是非常重要的,還是推薦大家使用阿裡雲官方的産品。

3. 寫在最後

本期給大家介紹了Datax的相關概念,分享了兩個案例供大家參考,但是在實際的資料同步過程中仍有非常多的困難和問題,需要對整個資料傳輸的鍊路做分析和優化,操作較為繁雜。後續會給大家介紹案例二中的性能瓶頸分析和優化。

是以,下一期見咯。

參考文檔

[1] Datax的git位址:

https://github.com/alibaba/DataX/

我們是阿裡雲智能全球技術服務-SRE團隊,我們緻力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用雲、基于雲建構更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上雲、用好雲,讓客戶雲上業務運作更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿裡雲SRE技術學院釘釘圈子,和更多雲上人交流關于雲平台的那些事。

DataX在資料遷移中的應用