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
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.
Unduh DataX dan plugin.
Klik di sini untuk mengunduh file TAR yang sesuai.
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.jsonPeriksa 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 |
|
username | String | Ya | Menentukan nama pengguna yang digunakan untuk terhubung ke database MySQL. | Tidak ada |
|
password | String | Ya | Menentukan kata sandi yang digunakan untuk terhubung ke database MySQL. | Tidak ada |
|
table | String | Ya | Menentukan tabel yang berisi data yang ingin Anda migrasikan. | Tidak ada |
|
column | Array | Ya | Menentukan nama kolom yang ingin Anda migrasikan. |
|
|
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 |
|
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. |
|
|
column | Array | Ya | Menentukan nama kolom yang ingin Anda migrasikan. |
|
|
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. |
|
|
endpoint | String | Ya | Menentukan titik akhir LindormTSDB. Tentukan nilainya dalam format IP:PORT. | Tidak ada |
|
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.