全部產品
Search
文件中心

Lindorm:通過DataX匯入RDS資料

更新時間:Feb 04, 2026

本文主要介紹如何使用阿里巴巴的開源工具DataX實現從關係型資料庫到時序引擎的資料移轉。

背景資訊

DataX是阿里巴巴集團內被廣泛使用的離線資料同步工具,實現包括MySQL、Oracle、SQL Server、PostgreSQL、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各種異構資料來源之間高效的資料同步功能。DataX相關使用介紹請參閱DataX的README文檔。

下面將首先介紹DataX工具本身,以及以MySQL為例,實現從MySQL遷移到Lindorm時序引擎。本次遷移工作涉及到的兩個外掛程式(MySQL ReaderTSDB Writer)。

MySQL Reader

MySQL Reader是DataX的一個外掛程式,實現了從MySQL讀取資料。

TSDB Writer

TSDB Writer是DataX的一個外掛程式,實現了將資料點寫入到Lindorm資料庫時序引擎中。

注意事項

確保與時序引擎的網路是連通的

因為TSDB Writer寫入資料的方式是調用HTTP介面(/api/mput以及/api/put)來完成的,所以需要確保遷移任務的進程能正常訪問到時序引擎暴露出來的HTTP介面的。否則,會報錯Connect Exception異常。

確保與MySQL的網路是連通的

因為MySQL Reader讀取資料是通過JDBC來完成的,所以需要確保遷移任務的進程能正常訪問到MySQL暴露出來的JDBC介面的。否則,會報錯Connect Exception異常。

準備工作

  1. 環境準備。

    • Linux

    • JDK(1.8及以上)

    • Python(推薦Python 2.6.x)

    • MySQL(目前只支援相容5.x,其他版本暫不相容)

    • Lindorm時序引擎

  2. 下載DataX及其外掛程式。

    單擊連結進行下載。

  3. 利用DataX內建的測試遷移任務,檢查遷移流程能否走通。

    這裡,我們先以最簡單的Stream Reader到Stream Writer為例。因為這兩個外掛程式不依賴任何的外部環境,特別適合用來測試流程是否能走通。簡單介紹下這兩個外掛程式,其中Stream Reader會隨機地產生字串,而Stream Writer則會將接受到的字串輸出到控制台,以此類比一個最簡單的資料移轉過程。

工具部署

將下載後的安裝包,解壓至某個目錄(作為DATAX_HOME),即可運行測試遷移任務:

$ cd ${DATAX_HOME}
$ python bin/datax.py job/job.json

檢查任務是否成功

下面是任務結束後的匯總資訊,看到如下內容,即可表示遷移任務已成功完成:

任務啟動時刻                    : 2019-04-26 11:18:07
任務結束時刻                    : 2019-04-26 11:18:17
任務總計耗時                    :                 10s
任務平均流量                    :          253.91KB/s
記錄寫入速度                    :          10000rec/s
讀出記錄總數                    :              100000
讀寫失敗總數                    :                   0
            

配置和啟動MySQL到時序引擎的遷移任務

通過上述Stream Reader到Stream Writer的遷移任務,我們就可以確保整個DataX流程是沒有問題的。下面就可以真正開始MySQL Reader到TSDB Writer遷移任務了。

參數說明

接下來,我們先看下各個配置項的含義:

MySQL Reader相關

名稱

類型

是否必選

描述

預設值

舉例

jdbcUrl

String

資料庫的JDBC串連資訊

jdbc:mysql://127.0.0.1:3306/datax

username

String

資料來源的使用者名稱

root

password

String

資料來源指定使用者名稱的密碼

root

table

String

需要同步的表

book

column

Array

表中需要同步的列名集合

[]

["m"]

splitPk

String

如果指定splitPk,表示使用者希望使用splitPk代表的欄位進行資料分區

id

TSDB Writer相關

名稱

類型

是否必選

描述

預設值

舉例

sourceDbType

String

目前支援TSDB和RDB兩個取值。其中,時序引擎指OpenTSDB、InfluxDB、Prometheus、TimeScale等;而RDB指MySQL、Oracle、PostgreSQL、DRDS 等

TSDB

RDB

column

Array

表中需要同步的列名集合

[]

["name","type","create_time","price"]

columnType

Array

關係型資料庫中表欄位,映射到時序引擎中的類型。支援的類型:timestamp:該欄位是個時間戳記;tag:該欄位是個 tag;metric_num:該metric的value 數實值型別;metric_string:該metric的value是字串類型

[]

["tag","tag","timestamp","metric_num"]

endpoint

String

時序引擎的IP:PORT地址

ld-xxxx:8242

multiField

Bool

使用多值方式寫入,推薦true

false

true

table

String

匯入TSDB的表名

table

username

String

資料庫使用者名稱

tsdbuser

password

String

資料庫密碼

tsdbpsw

ignoreWriteError

Bool

忽略寫入錯誤

false

true

database

String

匯入TSDB的資料庫名

default

default

配置遷移任務

配置一個從MySQL資料庫同步抽取資料到時序引擎的任務,命名為mysql2tsdb.json,完整的配置資訊如下(針對各個配置參數的詳細說明,請看"參數說明"):

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "column": [
              "name",
              "type",
              "create_time",
              "price",
              "description",
              "available"
            ],
            "connection": [
              {
                "jdbcUrl": [
                  "jdbc:mysql://127.0.0.1:3306/datax"
                ],
                "table": [
                  "book"
                ]
              }
            ],
            "password": "xxx",
            "splitPk": "id",
            "username": "root"
          }
        },
        "writer": {
          "name": "tsdbwriter",
          "parameter": {
            "column": [
              "name",
              "type",
              "create_time",
              "price",
              "description",
              "available"
            ],
            "columnType": [
              "tag",
              "tag",
              "timestamp",
              "field_double",
              "field_string",
              "field_bool"
            ],
            "sourceDbType": "RDB",
            "endpoint": "http://localhost:8242",
            "table": "my_book",
            "multiField": "true", 
            "username":"xxx",
            "password":"xxx",
            "ignoreWriteError":"false",
            "database":"default"
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
      }
    }
  }
}          

需要column欄位順序保持一致

需要保證SDB Writer外掛程式中的column欄位順序和MySQL Reader外掛程式中配置的column欄位順序保持一致。否則,資料會錯亂。

啟動MySQL到時序引擎遷移任務

$ cd ${DATAX_HOME}/..
$ ls
  datax/  datax.tar.gz  mysql2tsdb.json
$ python datax/bin/datax.py mysql2tsdb.json
            

檢查任務是否成功

下面是任務結束後的匯總資訊,看到如下內容,即可表示遷移任務已成功完成:

任務啟動時刻                    : 2019-05-21 18:25:16
任務結束時刻                    : 2019-05-21 18:25:27
任務總計耗時                    :                 11s
任務平均流量                    :                3B/s
記錄寫入速度                    :              0rec/s
讀出記錄總數                    :                   3
讀寫失敗總數                    :                   0
            

FAQ

Q:是否支援調整遷移進程的 JVM 記憶體大小?

A:支援的。以從MySQL到時序引擎的資料移轉任務為例,啟動命令如下:

python datax/bin/datax.py mysql2tsdb.json -j "-Xms4096m -Xmx4096m"    

Q:如何給時序引擎設定網路白名單?

A:參考設定白名單

Q:將遷移任務運行在ECS上的使用者,如何配置 VPC,以及常見問題有哪些?

A:參考ECS安全性群組配置案例VPC 常見問題