全部产品
Search
文档中心

Lindorm:Impor data RDS menggunakan DataX

更新时间:Feb 04, 2026

Topik ini menjelaskan cara menggunakan DataX, sebuah alat open source dari Alibaba, untuk melakukan migrasi data dari database relasional ke LindormTSDB.

Informasi latar belakang

DataX adalah alat sinkronisasi data offline yang banyak digunakan di Alibaba Group. Alat ini menyediakan sinkronisasi data yang efisien antara berbagai sumber data, seperti MySQL, Oracle, SQL Server, PostgreSQL, HDFS, Hive, ADS, HBase, TableStore (OTS), MaxCompute (ODPS), dan DRDS. Untuk informasi lebih lanjut tentang penggunaan DataX, lihat dokumen README DataX.

Topik ini memperkenalkan DataX dan menggunakan MySQL sebagai contoh untuk menunjukkan cara melakukan migrasi data ke LindormTSDB. Tugas migrasi ini melibatkan dua plugin: MySQL Reader dan TSDB Writer.

MySQL Reader

MySQL Reader adalah plugin DataX yang membaca data dari MySQL.

TSDB Writer

TSDB Writer adalah plugin DataX yang menulis titik data ke LindormTSDB.

Peringatan

Pastikan konektivitas jaringan ke LindormTSDB

TSDB Writer menulis data dengan memanggil API HTTP /api/mput dan /api/put. Pastikan tugas migrasi dapat mengakses API HTTP yang disediakan oleh LindormTSDB. Jika tidak, akan muncul error Connect Exception.

Pastikan konektivitas jaringan ke MySQL

MySQL Reader membaca data menggunakan Java Database Connectivity (JDBC). Pastikan tugas migrasi dapat mengakses antarmuka JDBC yang disediakan oleh MySQL. Jika tidak, akan muncul error Connect Exception.

Persiapan

  1. Persiapkan lingkungan.

    • Linux

    • JDK (versi 1.8 atau lebih baru)

    • Python (disarankan Python 2.6.x)

    • MySQL (hanya versi yang kompatibel dengan 5.x yang didukung)

    • LindormTSDB

  2. Unduh DataX dan plugin-nya.

    Anda dapat mengunduh paketnya dari tautan berikut.

  3. Gunakan tugas migrasi uji coba yang disertakan dalam DataX untuk memverifikasi bahwa proses migrasi berjalan dengan benar.

    Contoh ini menggunakan tugas Stream Reader ke Stream Writer yang sederhana. Kedua plugin ini tidak bergantung pada lingkungan eksternal apa pun dan sangat ideal untuk memverifikasi bahwa proses berjalan dengan baik. Stream Reader menghasilkan string secara acak, sedangkan Stream Writer menampilkan string yang diterima ke konsol, mensimulasikan proses migrasi data dasar.

Deploy tool

Ekstrak paket instalasi yang telah diunduh ke suatu direktori. Direktori ini digunakan sebagai DATAX_HOME. Kemudian, jalankan tugas migrasi uji coba:

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

Periksa apakah tugas berhasil

Informasi ringkasan berikut ditampilkan setelah tugas selesai. Output ini menunjukkan bahwa tugas migrasi berhasil:

Task start time           : 2019-04-26 11:18:07
Task end time             : 2019-04-26 11:18:17
Total time                :                 10s
Average traffic           :          253.91KB/s
Record write speed        :          10000rec/s
Total records read        :              100000
Total read/write failures :                   0
            

Konfigurasi dan mulai tugas migrasi dari MySQL ke LindormTSDB

Setelah tugas migrasi Stream Reader ke Stream Writer memastikan bahwa proses DataX berjalan dengan benar, Anda dapat memulai tugas migrasi dari MySQL Reader ke TSDB Writer.

Parameter

Item konfigurasi dijelaskan sebagai berikut:

Parameter MySQL Reader

Name

Tipe

Diperlukan

Deskripsi

Nilai default

Contoh

jdbcUrl

String

Ya

String koneksi JDBC untuk database.

Tidak ada

jdbc:mysql://127.0.0.1:3306/datax

username

String

Ya

Username untuk sumber data.

Tidak ada

root

password

String

Ya

Password untuk username yang ditentukan.

Tidak ada

root

table

String

Ya

Tabel yang akan disinkronkan.

Tidak ada

book

column

Array

Ya

Kolom yang akan disinkronkan dari tabel.

[]

["m"]

splitPk

String

Tidak

Jika Anda menentukan `splitPk`, sistem akan menggunakan bidang yang ditentukan untuk partisi data.

Empty

id

Parameter TSDB Writer

Name

Tipe

Diperlukan

Deskripsi

Nilai default

Contoh

sourceDbType

String

Tidak

Nilai yang valid adalah `TSDB` dan `RDB`. `TSDB` mengacu pada mesin deret waktu seperti OpenTSDB, InfluxDB, Prometheus, dan TimeScale. `RDB` mengacu pada database relasional seperti MySQL, Oracle, PostgreSQL, dan DRDS.

TSDB

RDB

column

Array

Ya

Kolom yang akan disinkronkan.

[]

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

columnType

Array

Ya

Tipe di LindormTSDB tempat bidang dari tabel database relasional dipetakan. Tipe yang didukung meliputi: timestamp: Bidang tersebut merupakan timestamp. tag: Bidang tersebut merupakan tag. metric_num: Nilai metrik bertipe numerik. metric_string: Nilai metrik bertipe string.

[]

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

endpoint

String

Ya

Alamat IP dan Port LindormTSDB

Tidak ada

ld-xxxx:8242

multiField

Bool

Ya

Menentukan apakah data ditulis dalam mode multi-field. Atur parameter ini ke `true`.

false

true

table

String

Ya

Nama tabel yang akan diimpor ke LindormTSDB.

Tidak ada

table

username

String

Tidak

Username database.

Tidak ada

tsdbuser

password

String

Tidak

Password database.

Tidak ada

tsdbpsw

ignoreWriteError

Bool

Ya

Abaikan error penulisan

false

true

database

String

Tidak

Nama database yang akan diimpor ke TSDB

default

default

Konfigurasi tugas migrasi

Konfigurasikan tugas untuk menyinkronkan data dari database MySQL ke LindormTSDB. Beri nama file konfigurasi mysql2tsdb.json. Konfigurasi lengkapnya adalah sebagai berikut. Untuk deskripsi detail setiap parameter, lihat "Parameter":

{
  "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
      }
    }
  }
}          

Pertahankan urutan kolom yang konsisten

Pastikan urutan bidang dalam parameter `column` untuk plugin TSDB Writer sama dengan urutan dalam parameter `column` untuk plugin MySQL Reader. Jika tidak, data akan menjadi tidak terurut.

Mulai tugas migrasi dari MySQL ke LindormTSDB

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

Periksa apakah tugas berhasil

Informasi ringkasan berikut ditampilkan setelah tugas selesai. Output ini menunjukkan bahwa tugas migrasi berhasil:

Task start time           : 2019-05-21 18:25:16
Task end time             : 2019-05-21 18:25:27
Total time                :                 11s
Average traffic           :                3B/s
Record write speed        :              0rec/s
Total records read        :                   3
Total read/write failures :                   0
            

FAQ

Q: Dapatkah saya menyesuaikan ukuran memori JVM untuk proses migrasi?

A: Ya, bisa. Sebagai contoh, untuk melakukan migrasi data dari MySQL ke LindormTSDB, gunakan perintah mulai berikut:

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

Q: Bagaimana cara mengonfigurasi daftar putih jaringan untuk LindormTSDB?

A: Untuk informasi lebih lanjut, lihat Konfigurasi daftar putih.

Q: Jika saya menjalankan tugas migrasi pada instans ECS, bagaimana cara mengonfigurasi VPC, dan apa saja masalah umum yang mungkin terjadi?

A: Untuk informasi lebih lanjut, lihat Use case konfigurasi security group ECS dan FAQ VPC.