天天看點

MySQL到ADB PG版表結構轉換工具

AnalyticDB PostgreSQL(以下簡稱ADB PG版)作為阿裡雲上熱門的實時數倉産品,已經赢得大量對大規模資料實時分析需求客戶的肯定,目前在阿裡雲上已經提供了多種方式(包括但不限于 DataWorks DTS rds_dbsync 等)将資料從MySQL中同步到ADB PG版中進行資料分析。但是有點缺陷的是,由于ADB PG版是一個分布式的分析型資料庫,表結構的定義和傳統的關系型資料庫差異較大,前面的工具中都沒有提供表結構的同步,這也成為困擾客戶的問題,是以我們基于開源工具貼身做了個表結構轉換的工具。

功能介紹

該工具主要提供将MySQL中的表結構轉換為ADB PG版規範的表結構,隻需要有簡單的python環境和mysqldump就可以使用。MySQL中的無主鍵表需要單獨處理一下,因為ADB PG版在建表時是需要指定分布列的,工具預設會将MySQL中的主鍵列設定為分布列,對于無主鍵表,使用者需要修改生成的建表語句,為無主鍵表指定分布列。

擷取工具

db_converter的github位址:

https://github.com/wuchase/mysql-postgresql-converter

使用步驟

  1. 使用mysqldump dump出PG相容的MySQL建表語句(修改下面語句中的databasename和dumpfile.sql),此處dump語句很重要,一定要轉為PG相容的建表語句:

    mysqldump --opt --compatible=postgresql --default-character-set=utf8 -d databasename -r dumpfile.sql -u username -p

  2. 執行轉換腳本,dumpfile.sql和adbforpg.sql填寫真實的值

    python db_converter.py dumpfile.sql adbforpg.sql

adbforpg.sql是轉換後的ADB for PG的建表語句,如果需要有需改需求,可以直接在檔案中進行修改。重點要關注一下分布列的選擇,預設選擇MySQL表中的主鍵作為分布列,如果MySQL表結構中無主鍵,請手動修改選擇分布列。

繼續閱讀