datax異構數據庫數據遷移總結


  datax是開源的ETL工具,可根據需求自己做開發、實施和維護。支持多種數據庫類型,可擴張性強,一張表的同步作業調起只需一行命令。筆者認為遷移的要點有二:①遷移目的表先建好,因datax做不了結構同步;②配置正確的json文件,一張表一個json文件。

datax跨數據庫同步常遇到的問題包括:

1、如何實現不同數據庫的數據同步?

   根據數據庫類型,配置job中的reader、writer。官方支持多種數據庫。每一張表的同步,需要配置一個json文件。需要手動創建目的表或者分區表。

2、如何指定數據同步方式,增量、全量?

  官方文檔writer模塊中不同數據庫的默認配置參數,有的數據庫類型只有一種同步當時,有的必須指定WriteMode,postgrewriter只支持insert方式入庫,mysql支持insert、replace方式寫入,當目的表沒有主鍵或者其他唯一約束時,insert、replace同步數據的結果是一樣的。

3、如何提高同步效率?

  調參,修改json文件中的 setting channel參數;針對大表的同步,可視實際需求和可行性做分區;

4、datax是否有事務控制

  datax沒有事務控制,但json中的一些配置參數能用起來。比如, jobsetting中的errorlimit,是對寫入的臟數據的限制,一般設置為1,即一旦產生一條臟數據,便回滾此次寫入。也可以利用起writer中的preSql、postSql。preSql即在寫入數據前對目的表執行sql語句操作,postSql即在寫入數據后對目的表進行操作。比如,preSql設置,寫入數據前清空目的表,postSql設置寫入后如果記錄數與源表對不上,或者時間戳字段沒有更新,則清空本次作業中寫入該目的表的數據等。

5、datax遷移要求目的數據庫先有對應的表,如何批量在目的數據庫建表?

  datax是通過代碼編寫規則,可以用python的第三方庫編寫腳本,遠程連接目的數據庫批量建表,sqlalchemy、pymysql等第三方庫都可以用起來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM