阿里巴巴開源專案:阿里巴巴去Oracle資料遷移同步工具

憤怒的蘋果發表於2016-03-29

背景

08年左右,阿里巴巴開始嘗試MySQL的相關研究,並開發了基於MySQL分庫分表技術的相關產品,Cobar/TDDL(目前為阿里雲DRDS產品),解決了單機Oracle無法滿足的擴充套件性問題,當時也掀起一股去IOE專案的浪潮,愚公這專案因此而誕生,其要解決的目標就是幫助使用者完成從Oracle資料遷移到MySQL上,完成去IOE的第一步.

專案介紹

名稱: yugong

譯意: 愚公移山

語言: 純java開發

定位: 資料庫遷移 (目前主要支援oracle -> mysql/DRDS)

專案介紹

整個資料遷移過程,分為兩部分:

  1. 全量遷移
  2. 增量遷移

過程描述:

  1. 增量資料收集 (建立oracle表的增量物化檢視)
  2. 進行全量複製
  3. 進行增量複製 (可並行進行資料校驗)
  4. 原庫停寫,切到新庫

架構

說明:

  1. 一個Jvm Container對應多個instance,每個instance對應於一張表的遷移任務
  2. instance分為三部分
    a. extractor (從源資料庫上提取資料,可分為全量/增量實現)
    b. translator (將源庫上的資料按照目標庫的需求進行自定義轉化)
    c. applier (將資料更新到目標庫,可分為全量/增量/對比的實現)

方案設計

全量方案

業界常用的全量方案有:

  1. 資料檔案匯入/匯出,比如EXPDP/IMPDP, mysqldump/source, xtrabackup等
  2. ETL資料匯入/匯出,主要原理為使用JDBC資料查詢介面

yugong在專案設計之初考慮去IOE資料遷移的靈活性和自定義能力,最終選擇的方案為基於JDBC介面遍歷資料.

相比於資料檔案匯入/匯出,其優點:

  • 靈活資料同步
  • 支援異構資料
  • 實現相對簡單

缺點:

  • 全量拉取需要配合增量使用,會有部分資料重複同步
  • 效能和影響,一次性全量拉取,如果持續時間過長,如果此時資料庫變更過多,會導致segment過大

增量方案

業界常用的增量方案有:

  1. 基於時間戳定時dump
  2. oracle日誌檔案,比如LogMiner,OGG
  3. oracle CDC(Change Data Capture)
  4. oracle trigger機制,比如DataBus , SymmetricDS
  5. oracle 物化檢視(materialized view)

yugong在專案設計之初考慮去IOE資料遷移的靈活性,支援多種oracle版本,同時為降低DBA的運維成本,最終選擇oracle物化檢視作為我們的增量方案.

相比於其他,物化檢視方案其優點:

  • 原理簡單,方便理解和學習,使用者可以理解為一種固化的簡易trigger模式
  • 運維簡單,DBA一次賬戶授權後,程式可按需create一張物化檢視表即可完成增量訂閱
  • 相對透明,不需要像時間戳sql掃描依賴資料庫表設計,也不需要關注oracle版本和伺服器儲存等

缺點:

  • 效能和影響,類似於trigger機制會對源庫的資料寫入造成一定的效能影響.

QuickStart

See the page for quick start: QuickStart

AdminGuide

See the page for admin deploy guide: AdminGuide

Performance

See the page for yugong performance : Performance

相關資料

  1. yugong簡單介紹ppt : ppt
  2. 分散式關係型資料庫服務DRDS (前身為阿里巴巴公司的Cobar/TDDL的演進版本, 基本原理為MySQL分庫分表)

問題反饋

  1. qq交流群: 537157866
  2. 郵件交流: jianghang115@gmail.com
  3. 新浪微博: agapple0002
  4. 報告issue:issues


相關文章