All Products
Search
Document Center

Lindorm:RDS\ full\ and\ incremental\ synchronization

Last Updated:Mar 29, 2026

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.

Penting

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:

Batasan

KendalaPersyaratan
Sumber data penuhHarus merupakan database MySQL
Sumber data inkrementalHarus merupakan task DTS
TujuanNode LindormTable dengan titik akhir SQL atau titik akhir yang kompatibel dengan HBase

Buat task migrasi RDS

  1. Di antarmuka web LTS, pilih Data Import > RDS Migration.

  2. Klik create.

  3. Pilih sumber data RDS, sumber data DTS, dan sumber data tujuan.

    Create a task

  4. Klik Edit untuk meninjau konfigurasi default. Ubah sesuai kebutuhan. Sebagai referensi, lihat Sample configurations.

  5. 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 kolom f. 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: false dalam konfigurasi (lihat Sample configurations).

  6. 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

ParameterDeskripsi
querySqlKueri 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.
nameNama kolom di tabel tujuan.
valueNama 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.
typeTipe data kolom tujuan. Opsional; default mengikuti tipe data kolom sumber.
config.skipDeleteJika true, operasi penghapusan dari sumber tidak diteruskan ke tujuan. Default: true.
table.nameNama tabel tujuan dalam format namespace:tablename.
table.parameter.compressionAlgoritma kompresi untuk tabel tujuan. Zstandard (ZSTD) direkomendasikan.
table.parameter.splitKunci pemisah untuk pre-partitioning tabel tujuan.
sourceTableNama 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"
    }
}

Topik terkait