Saat Anda perlu melakukan migrasi data historis dari ApsaraDB RDS ke Lindorm atau menjalankan migrasi database penuh, Lindorm Tunnel Service (LTS) dapat menangani data penuh dan inkremental dalam satu task. LTS terlebih dahulu mengimpor semua baris yang ada, lalu secara otomatis beralih ke sinkronisasi inkremental untuk menangkap perubahan berkelanjutan dari sumber.
Sinkronisasi data penuh dari ApsaraDB RDS melalui LTS dihentikan pada 10 Maret 2023. Instans LTS yang dibeli setelah tanggal tersebut tidak dapat menyinkronkan data penuh dari ApsaraDB RDS. Instans LTS yang dibeli sebelum 10 Maret 2023 masih dapat menggunakan fitur ini.
Cara kerja
LTS menggunakan dua sumber data secara bersamaan:
Full data: Dibaca langsung dari database MySQL ApsaraDB RDS menggunakan kueri SQL. Setiap kueri dijalankan pada satu thread baca. Pemisahan kueri berdasarkan rentang meningkatkan throughput dan mempersempit cakupan retry jika kueri gagal.
Incremental data: Diambil melalui task Data Transmission Service (DTS) yang melacak perubahan pada tabel sumber setelah impor penuh selesai.
LTS selalu mengimpor data penuh sebelum beralih ke sinkronisasi inkremental. Secara default, operasi penghapusan (delete) dari sumber tidak diteruskan ke tujuan. Untuk meneruskan penghapusan, atur skipDelete: false dalam konfigurasi.
Prasyarat
Sebelum memulai, pastikan hal-hal berikut:
Instans LTS Anda dibeli sebelum 10 Maret 2023.
LTS, kluster ApsaraDB for HBase tujuan, dan instans ApsaraDB RDS sumber berada dalam virtual private cloud (VPC) yang sama.
Anda telah masuk ke antarmuka web LTS (lihat Create a synchronization task).
Anda juga perlu mengonfigurasi sumber data berikut sebelum membuat task migrasi:
Tujuan LindormTable: Add a LindormTable data source
Sumber ApsaraDB RDS: Add an ApsaraDB RDS data source
Sumber DTS: Add a DTS data source
Batasan
| Kendala | Persyaratan |
|---|---|
| Sumber data penuh | Harus merupakan database MySQL |
| Sumber data inkremental | Harus merupakan task DTS |
| Tujuan | Node LindormTable dengan titik akhir SQL atau titik akhir yang kompatibel dengan HBase |
Buat task migrasi RDS
Di antarmuka web LTS, pilih Data Import > RDS Migration.
Klik create.
Pilih sumber data RDS, sumber data DTS, dan sumber data tujuan.

Klik Edit untuk meninjau konfigurasi default. Ubah sesuai kebutuhan. Sebagai referensi, lihat Sample configurations.
Pilih tabel yang akan diimpor, lalu klik generate configuration. Perhatikan perilaku default berikut:
LTS mengimpor data penuh sebelum data inkremental.
Untuk node LindormTable yang kompatibel dengan Cassandra Query Language (CQL), LTS secara otomatis menghasilkan kolom tujuan dengan nama dan tipe data yang sama seperti kolom ApsaraDB RDS sumber. Anda dapat mengganti nama kolom dan pemetaannya dalam konfigurasi.
LTS secara otomatis menghasilkan keluarga kolom bernama
f. Setiap kolom sumber dipetakan ke kolom dalam keluarga kolomf. Kunci baris (row key) merupakan gabungan dari kolom kunci primer dari tabel sumber.Baris yang dihapus dari sumber setelah impor tidak dihapus dari tujuan. Untuk meneruskan penghapusan, atur
skipDelete: falsedalam konfigurasi (lihat Sample configurations).
Klik Create.
Konfigurasi contoh
Semua contoh menggunakan sintaksis templat Jtwig ({{...}}) untuk transformasi data. Untuk referensi sintaksis lengkap, lihat Jtwig Reference Manual.
Dua contoh berikut mencakup dua jenis titik akhir tujuan yang didukung. Perbedaan utamanya: contoh titik akhir SQL Lindorm menggunakan isPk untuk mengidentifikasi kolom kunci primer, sedangkan contoh titik akhir kompatibel HBase menggunakan bidang rowkey khusus.
Parameter konfigurasi
| Parameter | Deskripsi |
|---|---|
querySql | Kueri SQL untuk impor data penuh. Setiap kueri dijalankan pada satu thread baca. Pisahkan tabel besar menjadi kueri berbasis rentang untuk meningkatkan throughput dan mempersempit cakupan retry. |
name | Nama kolom di tabel tujuan. |
value | Nama kolom di tabel sumber, atau ekspresi Jtwig untuk nilai yang dihitung. |
isPk | (Titik akhir SQL Lindorm) Apakah kolom tersebut merupakan kolom kunci primer. Atur ke true untuk kolom kunci primer. |
rowkey.value | (Titik akhir kompatibel HBase) Kunci baris tabel tujuan. Menerima nama kolom atau ekspresi Jtwig. |
type | Tipe data kolom tujuan. Opsional; default mengikuti tipe data kolom sumber. |
config.skipDelete | Jika true, operasi penghapusan dari sumber tidak diteruskan ke tujuan. Default: true. |
table.name | Nama tabel tujuan dalam format namespace:tablename. |
table.parameter.compression | Algoritma kompresi untuk tabel tujuan. Zstandard (ZSTD) direkomendasikan. |
table.parameter.split | Kunci pemisah untuk pre-partitioning tabel tujuan. |
sourceTable | Nama tabel sumber dalam format database.tablename. |
Titik akhir SQL Lindorm
Gunakan konfigurasi ini saat node LindormTable tujuan dikonfigurasi dengan titik akhir SQL.
{
"reader": {
"querySql": [
"select * from dts.cluster where id < 1000",
"select * from dts.cluster where id >= 1000"
]
},
"writer": {
"columns": [
{
"name": "f:id",
"value": "id",
"isPk": true,
"type": "BIGINT"
},
{
"name": "cluster_id",
"value": "cluster_id",
"isPk": false
},
{
"name": "id_and_cluster",
"value": "{{concat(id, cluster_id)}}",
"isPk": true
}
],
"config": {
"skipDelete": true
},
"table": {
"name": "dts:cluster",
"parameter": {
"compression": "ZSTD"
}
},
"sourceTable": "dts.cluster"
}
}Titik akhir kompatibel HBase
Gunakan konfigurasi ini saat node LindormTable tujuan dikonfigurasi dengan titik akhir kompatibel HBase. Kunci baris ditentukan secara eksplisit menggunakan bidang rowkey alih-alih isPk.
{
"reader": {
"querySql": [
"select * from dts.cluster where id < 1000",
"select * from dts.cluster where id >= 1000"
]
},
"writer": {
"columns": [
{
"name": "f:id",
"value": "id",
"isPk": false
},
{
"name": "f:cluster_id",
"value": "cluster_id",
"isPk": false
},
{
"name": "f:id_and_cluster",
"value": "{{concat(id, cluster_id)}}"
}
],
"rowkey": {
"value": "id"
},
"config": {
"skipDelete": true
},
"table": {
"name": "dts:cluster",
"parameter": {
"compression": "ZSTD",
"split": ["1", "5", "9", "b"]
}
},
"sourceTable": "dts.cluster"
}
}