全部产品
Search
文档中心

Lindorm:Gunakan DataX untuk memigrasikan data dari database relasional ke LindormTSDB

更新时间:Jul 28, 2025

Topik ini menjelaskan cara menggunakan DataX untuk memigrasikan data dari database relasional ke LindormTSDB. DataX adalah alat open source yang disediakan oleh Alibaba Group.

Informasi latar belakang

DataX adalah alat sinkronisasi data offline yang banyak digunakan di dalam Alibaba Group. Anda dapat menggunakan DataX untuk menyinkronkan data secara efisien antara berbagai sumber data, termasuk MySQL, Oracle, SQL Server, PostgreSQL, Hadoop Distributed File System (HDFS), Hive, AnalyticDB for MySQL, HBase, Tablestore (OTS), MaxCompute, dan PolarDB-X. MaxCompute sebelumnya dikenal sebagai Open Data Processing Service (ODPS). Untuk informasi lebih lanjut tentang cara menggunakan DataX, lihat README.

Bagian berikut menjelaskan DataX dan memberikan contoh cara memigrasikan data dari database relasional ke database di LindormTSDB. Database MySQL digunakan dalam contoh ini. MySQL Reader dan TSDB Writer digunakan untuk melakukan migrasi data.

MySQL Reader

MySQL Reader adalah plugin yang didukung oleh DataX. Anda dapat menggunakan MySQL Reader untuk menanyakan data dari database MySQL.

TSDB Writer

DataX menyediakan plugin TSDB Writer yang digunakan untuk menulis data ke database di LindormTSDB.

Peringatan

Pastikan DataX dapat mengakses LindormTSDB.

TSDB Writer memanggil Titik akhir HTTP /api/mput dan Titik akhir HTTP /api/put untuk menulis data. Jika Anda ingin memigrasikan data, pastikan setiap proses tugas migrasi dapat mengakses Titik akhir HTTP yang disediakan oleh LindormTSDB. Jika tidak, pengecualian koneksi akan dilemparkan.

Pastikan database MySQL Anda dapat diakses oleh setiap proses tugas migrasi.

MySQL Reader menggunakan Java Database Connectivity (JDBC) untuk membaca data. Jika Anda perlu memigrasikan data, pastikan setiap proses tugas migrasi dapat mengakses API JDBC yang disediakan oleh database MySQL Anda. Jika tidak, pengecualian koneksi akan dilemparkan.

Persiapan

  1. Konfigurasikan lingkungan.

    • Linux

    • Java Development Kit (JDK): Gunakan JDK 1.8 atau yang lebih baru.

    • Python: Kami merekomendasikan agar Anda menggunakan Python 2.6.x.

    • MySQL: DataX hanya kompatibel dengan MySQL 5.x.

    • LindormTSDB: Aktifkan LindormTSDB.

  2. Unduh DataX dan plugin.

    Klik di sini untuk mengunduh file TAR yang sesuai.

  3. Gunakan skrip bawaan yang disediakan oleh DataX untuk menguji apakah data dapat dimigrasikan sesuai harapan.

    Plugin yang digunakan dalam pengujian adalah Stream Reader dan Stream Writer. Stream Reader dan Stream Writer tidak memerlukan dependensi eksternal, sehingga cocok untuk pengujian. Stream Reader menghasilkan string karakter acak, sedangkan Stream Writer menerima string tersebut dan menampilkannya di CLI Anda.

Instal DataX

Dekompresi paket instalasi ke DATAX_HOME. Kemudian, jalankan perintah berikut untuk memulai tugas pengujian migrasi:

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

Periksa hasil migrasi

Contoh berikut menunjukkan informasi ringkasan yang dikembalikan jika data dimigrasikan sesuai harapan:

Waktu mulai tugas                    : 2019-04-26 11:18:07
Waktu akhir tugas                    : 2019-04-26 11:18:17
Waktu eksekusi                    :                 10s
Lalu lintas rata-rata                    :          253.91KB/s
Tingkat penulisan                    :          10000rec/s
Catatan yang diperoleh                    :              100000
Jumlah kegagalan baca dan tulis                    :                   0
            

Konfigurasikan dan jalankan tugas yang memigrasikan data dari database MySQL ke database di LindormTSDB

Pada langkah sebelumnya, data dapat dimigrasikan sesuai harapan ketika Stream Reader dan Stream Writer digunakan. Hasil migrasi menunjukkan bahwa Anda dapat menggunakan DataX untuk memigrasikan data. Dalam hal ini, Anda dapat menggunakan MySQL Reader dan TSDB Writer untuk memigrasikan data dari database MySQL Anda ke database di LindormTSDB.

Parameter

Tabel berikut menjelaskan parameter yang dapat Anda konfigurasikan.

Parameter MySQL Reader

Parameter

Tipe

Diperlukan

Deskripsi

Nilai default

Contoh

jdbcUrl

String

Ya

Menentukan URL database yang digunakan oleh JDBC untuk terhubung ke database MySQL.

Tidak ada

jdbc:mysql://127.0.0.1:3306/datax

username

String

Ya

Menentukan nama pengguna yang digunakan untuk terhubung ke database MySQL.

Tidak ada

root

password

String

Ya

Menentukan kata sandi yang digunakan untuk terhubung ke database MySQL.

Tidak ada

root

table

String

Ya

Menentukan tabel yang berisi data yang ingin Anda migrasikan.

Tidak ada

book

column

Array

Ya

Menentukan nama kolom yang ingin Anda migrasikan.

[]

["m"]

splitPk

String

Tidak

Menentukan kunci shard yang digunakan untuk sharding tabel. Jika Anda menentukan nilai untuk splitPk, tabel akan di-shard berdasarkan nilai yang ditentukan.

Tidak ada

id

Parameter TSDB Writer

Parameter

Tipe

Diperlukan

Deskripsi

Nilai default

Contoh

sourceDbType

String

Tidak

Nilai valid: TSDB dan RDB. Nilai TSDB menentukan mesin deret waktu, seperti OpenTSDB, InfluxDB, Prometheus, atau TimeScale. Nilai RDB menentukan mesin database relasional, seperti MySQL, Oracle, PostgreSQL, atau PolarDB-X.

TSDB

RDB

column

Array

Ya

Menentukan nama kolom yang ingin Anda migrasikan.

[]

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

columnType

Array

Ya

Menentukan tipe data kolom di database di LindormTSDB setelah kolom dimigrasikan. Nilai valid: timestamp, tag, metric_num, dan metric_string. Nilai timestamp menentukan bahwa kolom berisi timestamp. Nilai tag menentukan bahwa kolom berisi tag. Nilai metric_num menentukan bahwa kolom berisi data tipe numerik. Nilai metric_string menentukan bahwa kolom berisi data tipe string.

[]

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

endpoint

String

Ya

Menentukan titik akhir LindormTSDB. Tentukan nilainya dalam format IP:PORT.

Tidak ada

ld-xxxx:8242

multiField

Bool

Ya

Menentukan apakah akan melakukan operasi penulisan data dengan memanggil titik akhir HTTP /api/mput. Kami merekomendasikan agar Anda mengatur nilainya menjadi true.

false

true

table

String

Ya

Menentukan tabel yang ingin Anda migrasikan ke database di LindormTSDB.

Tidak ada

table

username

String

Tidak

Menentukan nama pengguna yang digunakan untuk terhubung ke database di LindormTSDB.

Tidak ada

tsdbuser

password

String

Tidak

Menentukan kata sandi yang digunakan untuk terhubung ke database di LindormTSDB.

Tidak ada

tsdbpsw

ignoreWriteError

Bool

Ya

Menentukan apakah akan mengabaikan kegagalan penulisan.

false

true

database

String

Tidak

Menentukan nama database tempat Anda ingin menulis data.

default

default

Konfigurasikan tugas migrasi data

Konfigurasikan tugas untuk memigrasikan data dari database MySQL ke database di LindormTSDB. Dalam contoh ini, nama tugas adalah mysql2tsdb.json. Kode berikut memberikan contoh cara mengonfigurasi tugas migrasi data. Untuk informasi lebih lanjut tentang 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
      }
    }
  }
}          

Urutan Nama Kolom yang Konsisten

Pastikan urutan nama kolom yang dikonfigurasikan di TSDB Writer sama dengan urutan nama kolom yang dikonfigurasikan di MySQL Reader. Jika tidak, data tidak dapat diproses sesuai harapan.

Mulai tugas

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

Periksa hasil migrasi

Contoh berikut menunjukkan informasi ringkasan yang dikembalikan jika data dimigrasikan sesuai harapan:

Waktu mulai tugas                    : 2019-05-21 18:25:16
Waktu akhir tugas                    : 2019-05-21 18:25:27
Waktu eksekusi                    :                 11s
Lalu lintas rata-rata                    :                3B/s
Tingkat penulisan                    :               0rec/s
Catatan yang diperoleh                    :                   3
Jumlah kegagalan baca dan tulis                    :                   0
            

FAQ

Can I change the Java Virtual Machine (JVM) memory size for a migration process?

Ya, Anda bisa mengubah ukuran memori JVM untuk proses migrasi. Jika Anda ingin menyesuaikan ukuran memori JVM untuk tugas yang memigrasikan data dari database MySQL ke database di LindormTSDB, Anda dapat menjalankan perintah berikut:

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

How do I configure an IP address whitelist for LindormTSDB?

Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih.

If my migration task runs on an Elastic Compute Service (ECS) instance, how do I configure a virtual private cloud (VPC) and what are the common issues?

Untuk informasi lebih lanjut, lihat Kasus Penggunaan Grup Keamanan ECS dan FAQ tentang VPC.