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
Persiapkan lingkungan.
Unduh DataX dan plugin-nya.
Anda dapat mengunduh paketnya dari tautan berikut.
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.jsonPeriksa 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 |
|
username | String | Ya | Username untuk sumber data. | Tidak ada |
|
password | String | Ya | Password untuk username yang ditentukan. | Tidak ada |
|
table | String | Ya | Tabel yang akan disinkronkan. | Tidak ada |
|
column | Array | Ya | Kolom yang akan disinkronkan dari tabel. |
|
|
splitPk | String | Tidak | Jika Anda menentukan `splitPk`, sistem akan menggunakan bidang yang ditentukan untuk partisi data. | Empty |
|
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. |
|
|
column | Array | Ya | Kolom yang akan disinkronkan. |
|
|
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. |
|
|
endpoint | String | Ya | Alamat IP dan Port LindormTSDB | Tidak ada |
|
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.