All Products
Search
Document Center

Data Transmission Service:Sinkronisasi\ data\ dari\ ApsaraDB\ for\ MongoDB\ ke\ Lindorm

Last Updated:Mar 28, 2026

Gunakan Data Transmission Service (DTS) untuk menyinkronkan data dari instans ApsaraDB for MongoDB dengan arsitektur replica set atau sharded cluster ke tabel lebar Lindorm. Panduan ini mencakup sinkronisasi penuh dan inkremental.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Penagihan

Jenis sinkronisasiBiaya
Sinkronisasi data penuhGratis
Sinkronisasi data inkrementalDikenai biaya. Lihat Ikhtisar penagihan.

Jenis sinkronisasi yang didukung

JenisDeskripsi
Sinkronisasi data penuhMenyalin semua data yang ada dari database atau koleksi yang dipilih di instans sumber ke instans Lindorm tujuan.
Sinkronisasi data inkrementalSecara berkelanjutan mereplikasi operasi insert, update, dan delete pada koleksi. Selama sinkronisasi inkremental file, hanya perintah $set yang diterapkan secara sinkron.
Sinkronisasi skema tidak didukung.

Izin yang diperlukan

DatabaseIzin yang diperlukanCara memberikan
Sumber ApsaraDB for MongoDBIzin baca pada database sumber, admin, dan localKelola izin pengguna database MongoDB
Lindorm tujuanIzin baca dan tulis pada namespace targetManajemen izin untuk kontrol akses

Batasan

Batasan database sumber

  • Server sumber harus memiliki bandwidth keluar yang cukup, atau kecepatan sinkronisasi akan terpengaruh.

  • Koleksi yang akan disinkronkan harus memiliki kendala PRIMARY KEY atau UNIQUE, dan semua nilai field harus unik. Jika tidak, catatan duplikat dapat muncul di tujuan.

  • DTS tidak dapat terhubung ke instans MongoDB melalui titik akhir SRV.

  • Sumber tidak boleh merupakan kluster Azure Cosmos DB for MongoDB atau kluster elastis Amazon DocumentDB.

  • Satu entri data tidak boleh melebihi 16 MB.

  • Jika sumbernya adalah instans kluster sharded:

    • Field _id di setiap koleksi harus unik. Jika tidak, ketidakkonsistenan data dapat terjadi.

    • Jumlah node Mongos tidak boleh melebihi 10.

    • Jangan menjalankan perintah berikut selama sinkronisasi: shardCollection, reshardCollection, unshardCollection, moveCollection, atau movePrimary. Perintah-perintah ini mengubah distribusi data dan dapat menyebabkan ketidakkonsistenan data.

    • Pastikan instans sumber tidak memiliki dokumen orphan sebelum memulai tugas. Lihat dokumentasi MongoDB dan FAQ DTS untuk cara menghapusnya.

    • Jika balancer aktif di sumber, hal tersebut dapat menyebabkan latensi.

  • Jika sumber berisi indeks TTL, ketidakkonsistenan data dapat terjadi setelah sinkronisasi.

  • Oplog harus diaktifkan dan menyimpan data minimal selama 7 hari. Atau, change streams harus diaktifkan dan mencakup 7 hari terakhir. Jika kedua kondisi tersebut tidak terpenuhi, DTS mungkin gagal mendapatkan perubahan inkremental, yang dapat mengakibatkan kehilangan data atau ketidakkonsistenan — tidak dicakup oleh perjanjian tingkat layanan (SLA) DTS.

    • Gunakan oplog untuk mencatat perubahan data jika memungkinkan.

    • Change streams memerlukan MongoDB 4.0 atau lebih baru dan tidak mendukung sinkronisasi dua arah.

    • Untuk kluster Amazon DocumentDB non-elastis, gunakan change streams dan atur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster.

  • Selama sinkronisasi data penuh, jangan mengubah skema database atau koleksi, atau data bertipe ARRAY. Jangan menulis ke database sumber jika hanya menjalankan sinkronisasi penuh.

  • Jika Anda memilih koleksi sebagai objek untuk disinkronkan dan perlu mengganti namanya di tujuan, satu tugas mendukung hingga 1.000 koleksi. Untuk lebih dari 1.000 koleksi, konfigurasikan beberapa tugas atau pilih seluruh database sebagai objek sinkronisasi.

Batasan tujuan dan tugas

  • Hanya tugas dalam wilayah Germany (Frankfurt) yang didukung.

  • DTS tidak dapat menyinkronkan data dari database admin, config, atau local.

  • Instans Lindorm tujuan tidak boleh memiliki koleksi dengan kolom _id atau _value.

  • Transaksi tidak dipertahankan. DTS mengonversi setiap transaksi menjadi catatan individual di tujuan.

  • Data yang ditulis ke Lindorm harus memenuhi persyaratan dalam Batasan permintaan data.

  • Untuk operasi UPDATE dan DELETE dalam sinkronisasi inkremental:

    • Jika tabel lebar dibuat menggunakan Lindorm SQL, tambahkan kolom non-primary key bernama _mongo_id_ saat membuat tabel. Tipe data kolom tersebut harus sesuai dengan tipe kolom _id di sumber. Buat indeks sekunder pada kolom ini.

    • Jika tabel lebar dibuat menggunakan Apache HBase API, tambahkan kolom non-primary key bernama _mongo_id_ dengan keluarga kolom f. Tipe data kolom tersebut harus sesuai dengan tipe kolom _id di sumber. Buat indeks sekunder pada kolom ini. Jika Anda berencana menambahkan kolom tambahan dan menggunakan fitur ekstrak, transformasi, muat (ETL), pastikan instans Lindorm tidak memiliki data duplikat.

  • DTS menggunakan ROUND(COLUMN,PRECISION) untuk mengambil nilai dari kolom FLOAT dan DOUBLE. Presisi default adalah 38 digit untuk FLOAT dan 308 digit untuk DOUBLE. Verifikasi bahwa pengaturan presisi ini memenuhi kebutuhan Anda.

  • DTS mencoba melanjutkan tugas yang gagal hingga 7 hari. Sebelum mengalihkan beban kerja ke tujuan, hentikan atau rilis tugas yang gagal, atau jalankan REVOKE untuk menghapus izin tulis DTS di tujuan. Jika tidak, tugas yang dilanjutkan akan menimpa data tujuan dengan data sumber.

  • Jalankan tugas selama jam sepi. Sinkronisasi data penuh membaca dan menulis database sumber dan tujuan, yang meningkatkan beban server dan menyebabkan fragmentasi sementara pada koleksi tujuan.

  • Latensi sinkronisasi dihitung dari waktu data tersinkronkan terbaru dibandingkan dengan waktu sumber saat ini. Jika sumber tidak memiliki aktivitas tulis dalam periode panjang, metrik ini mungkin tidak akurat. Lakukan operasi tulis di sumber untuk memperbarui nilai latensi.

  • Jika tugas DTS gagal, dukungan teknis berusaha memulihkannya dalam waktu 8 jam. Tugas mungkin dimulai ulang dan parameter tugas tertentu mungkin dimodifikasi selama pemulihan. Parameter database tidak dimodifikasi.

Buat tugas sinkronisasi

Langkah 1: Buka halaman sinkronisasi data

Gunakan salah satu metode berikut.

Konsol DTS

  1. Masuk ke Konsol DTS.Konsol DTS

  2. Di panel navigasi kiri, klik Data Synchronization.

  3. Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi berada.

Konsol DMS

Catatan

Langkah-langkah tepatnya mungkin berbeda tergantung pada mode dan tata letak Konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS.

  1. Masuk ke Konsol DMS.Konsol DMS

  2. Di bilah navigasi atas, arahkan pointer ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.

  3. Dari daftar drop-down di samping Data Synchronization Tasks, pilih wilayah tempat instans sinkronisasi berada.

Langkah 2: Konfigurasi database sumber dan tujuan

Klik Create Task, lalu konfigurasi parameter.

Pengaturan tugas:

ParameterDeskripsi
Task NameNama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama tidak perlu unik.

Database sumber:

ParameterDeskripsi
Select Existing ConnectionPilih instans database terdaftar, atau biarkan kosong dan konfigurasi parameter di bawah. Di Konsol DMS, pilih dari daftar drop-down Select a DMS database instance.
Database TypePilih MongoDB.
Access MethodPilih Alibaba Cloud Instance.
Instance RegionWilayah instans ApsaraDB for MongoDB sumber.
Replicate Data Across Alibaba Cloud AccountsPilih No untuk sinkronisasi dalam satu akun.
ArchitecturePilih Replica Set atau Sharded Cluster sesuai dengan instans sumber Anda. Jika Anda memilih Sharded Cluster, konfigurasikan juga parameter Shard account dan Shard password.
Migration MethodCara DTS membaca data inkremental dari sumber. Oplog (direkomendasikan) membaca log operasi dan menawarkan latensi rendah. ChangeStream menggunakan change streams MongoDB (memerlukan MongoDB 4.0 atau lebih baru; tidak mendukung sinkronisasi dua arah). Saat menggunakan ChangeStream, jika Anda memilih Sharded Cluster untuk parameter Architecture, Anda tidak perlu mengonfigurasi parameter Shard account dan Shard password.
Instance IDID instans ApsaraDB for MongoDB sumber.
Authentication DatabaseDatabase yang menyimpan kredensial akun. Default-nya adalah admin.
Database AccountAkun database untuk instans sumber.
Database PasswordKata sandi untuk akun tersebut.
EncryptionPilih Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL. Opsi yang tersedia bergantung pada nilai Access Method dan Architecture. Jika Architecture adalah Sharded Cluster dan Migration Method adalah Oplog, opsi SSL-encrypted tidak tersedia.

Database tujuan:

ParameterDeskripsi
Select Existing ConnectionPilih instans database terdaftar, atau biarkan kosong dan konfigurasi parameter di bawah. Di Konsol DMS, pilih dari daftar drop-down Select a DMS database instance.
Database TypePilih Lindorm.
Access MethodPilih Alibaba Cloud Instance.
Instance RegionWilayah instans Lindorm tujuan.
Instance IDID instans Lindorm tujuan.
Database AccountAkun database untuk instans tujuan.
Database PasswordPassword untuk akun tersebut.

Langkah 3: Uji konektivitas

Klik Test Connectivity and Proceed.

DTS secara otomatis menambahkan blok CIDR servernya ke pengaturan keamanan database sumber dan tujuan. Jika Anda menggunakan database yang dikelola sendiri dengan metode akses selain Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers untuk mengonfirmasi konektivitas. Untuk detailnya, lihat Tambahkan blok CIDR server DTS.

Langkah 4: Konfigurasi objek untuk disinkronkan

Di langkah Configure Objects, atur parameter berikut.

ParameterDeskripsi
Synchronization TypesIncremental Data Synchronization dipilih secara default. Anda juga dapat memilih hanya Full Data Synchronization. Sinkronisasi skema tidak tersedia.
Processing Mode of Conflicting TablesPertahankan pengaturan default.
Capitalization of Object Names in Destination InstanceMengontrol kapitalisasi nama database dan koleksi di tujuan. Default-nya adalah DTS default policy. Lihat Tentukan kapitalisasi nama objek di instans tujuan.
Source ObjectsPilih satu atau beberapa objek, lalu klik 向右 untuk memindahkannya ke Selected Objects. Anda dapat memilih koleksi individual.
Selected ObjectsKonfigurasi pemetaan kolom untuk setiap koleksi. Kolom yang tidak ditambahkan ke tabel lebar tujuan tidak akan disinkronkan.

Petakan field MongoDB ke kolom Lindorm:

Saat Anda menambahkan koleksi ke Selected Objects, DTS mengisi ekspresi bson_value() untuk setiap field. Ikuti langkah-langkah berikut untuk menyelesaikan pemetaan kolom.

  1. Edit nama database (opsional): Klik kanan database di Selected Objects, masukkan nama skema target di dialog Edit Schema, dan pilih operasi DML yang akan disinkronkan. Klik OK.

    image.png

  2. Edit nama koleksi (opsional): Klik kanan koleksi di Selected Objects, masukkan nama tabel target dalam dialog Edit Table Name, lalu secara opsional tentukan kondisi filter atau pilih Operasi DML. Klik OK.

    image.png

  3. Konfigurasi pemetaan kolom: DTS menghasilkan ekspresi bson_value() untuk setiap baris. Periksa setiap baris dan tentukan Column Name, Type, Length, dan Precision. Di setiap ekspresi bson_value(), string dalam "" adalah nama field dalam dokumen MongoDB sumber. Misalnya, bson_value("age") memetakan field age. Untuk menghapus field dari sinkronisasi, klik image di samping baris tersebut.

    Ekspresi memenuhi persyaratan

    • Atur Column Name:

      • Untuk tabel yang dibuat dengan SQL: gunakan nama kolom tujuan.

      • Untuk tabel Apache HBase API: gunakan ROW untuk kolom kunci primer, dan Keluarga kolom:Nama kolom (misalnya, person:name) untuk kolom non-primary key. Buat pemetaan kolom terlebih dahulu jika diperlukan — lihat Tambahkan pemetaan kolom untuk tabel Apache HBase API.

    • Pilih Type untuk setiap kolom. Pastikan kompatibel dengan tipe data sumber.

    • Opsional atur Length dan Precision.

    • Ulangi untuk semua kolom.

    Ekspresi tidak memenuhi persyaratan

    1. Klik image di samping baris, lalu klik + New Column. image

    2. Atur Column Name, Type, Length, dan Precision.

    3. Masukkan ekspresi bson_value() di Assign Value. Lihat Contoh penugasan nilai sebagai referensi. > Important: Tetapkan bson_value("_id") ke kolom kunci primer. Untuk bidang bersarang, gunakan jalur hierarkis lengkap dalam bson_value(). Sebagai contoh, gunakan bson_value("person","name") alih-alih bson_value("person"). Penggunaan hanya bidang induk dapat menyebabkan kehilangan data atau kegagalan tugas pada operasi bertahap.

    4. Ulangi untuk semua kolom.

  4. Klik OK.

Langkah 5: Konfigurasi pengaturan lanjutan

Klik Next: Advanced Settings dan konfigurasi parameter berikut.

ParameterDeskripsi
Dedicated Cluster for Task SchedulingSecara default, DTS menjadwalkan tugas ke kluster bersama. Untuk stabilitas lebih tinggi, beli kluster khusus. Lihat Apa itu kluster khusus DTS.
Retry Time for Failed ConnectionsBerapa lama DTS mencoba lagi setelah kegagalan koneksi. Nilai valid: 10–1440 menit. Default: 720 menit. Atur minimal 30 menit. Jika beberapa tugas berbagi sumber atau tujuan yang sama, waktu coba ulang terpendek yang berlaku. DTS terus menagih selama percobaan ulang.
Retry Time for Other IssuesBerapa lama DTS mencoba lagi setelah kegagalan DDL atau DML. Nilai valid: 1–1440 menit. Default: 10 menit. Atur minimal 10 menit. Nilai ini harus lebih kecil dari Retry Time for Failed Connections.
Enable Throttling for Full Data SynchronizationMembatasi beban pada database sumber dan tujuan selama sinkronisasi penuh. Konfigurasi Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Tersedia hanya jika Full Data Synchronization dipilih.
Only one data type for primary key _id in a table of the data to be synchronizedAtur ke Yesalert notification settings jika semua dokumen dalam koleksi menggunakan tipe data yang sama untuk _id — DTS melewati pemindaian tipe untuk sinkronisasi penuh lebih cepat. Atur ke No jika tipe _id bervariasi — DTS memindai semua tipe sebelum menyinkronkan. Tentukan dengan benar untuk menghindari kehilangan data. Tersedia hanya jika Full Data Synchronization dipilih.
Enable Throttling for Incremental Data SynchronizationMembatasi beban pada tujuan selama sinkronisasi inkremental. Konfigurasi RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s).
Environment TagTag opsional untuk mengidentifikasi lingkungan instans DTS.
Configure ETLAktifkan fitur ETL untuk mentransformasi data selama sinkronisasi. Atur ke Yes untuk memasukkan pernyataan pemrosesan di editor kode. Lihat Konfigurasi ETL dalam tugas migrasi atau sinkronisasi data dan Contoh ETL untuk tabel Apache HBase API. Jika tabel tujuan dibuat menggunakan Apache HBase API, tentukan kolom mana yang akan disertakan dan dikecualikan dalam skrip ETL. Secara default, field tingkat atas disimpan dalam keluarga kolom f. Kode berikut menunjukkan cara menulis baris data kolom selain _id dan name sebagai kolom dinamis ke tabel tujuan: script:e_expand_bson_value("*", "_id,name"). DTS tidak menyinkronkan kolom tambahan atau kolom di luar tugas ETL.
Monitoring and AlertingAtur ke Yes untuk menerima notifikasi saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasi ambang batas peringatan dan pengaturan notifikasi. Lihat Konfigurasi pemantauan dan peringatan saat membuat tugas DTS.

Langkah 6: Jalankan pemeriksaan awal

Klik Next: Save Task Settings and Precheck.

Untuk melihat parameter OpenAPI untuk konfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters sebelum melanjutkan.

DTS menjalankan pemeriksaan awal sebelum memulai tugas. Jika pemeriksaan awal gagal:

  • Klik View Details di samping item yang gagal, selesaikan masalahnya, lalu klik Precheck Again.

  • Jika suatu item menampilkan peringatan yang dapat diabaikan: klik Confirm Alert Details, lalu di dialog View Details klik Ignore > OK, lalu klik Precheck Again. Perhatikan bahwa mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.

Langkah 7: Beli instans

  1. Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.

  2. Di halaman buy, konfigurasi parameter berikut.

ParameterDeskripsi
Billing MethodSubscription: bayar di muka untuk jangka waktu tetap; lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam; cocok untuk penggunaan jangka pendek. Rilis instans saat tidak diperlukan lagi untuk menghindari biaya berlebih.
Resource Group SettingsKelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management?
Instance ClassKelas throughput sinkronisasi. Lihat Kelas instans untuk instansi sinkronisasi data.
Subscription DurationTersedia untuk metode penagihan Subscription. Opsi: 1–9 bulan, atau 1, 2, 3, atau 5 tahun.
  1. Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms.

  2. Klik Buy and Start, lalu klik OK di dialog konfirmasi.

Tugas muncul di daftar tugas. Anda dapat memantau perkembangannya di sana.

Contoh menambahkan pemetaan kolom untuk tabel yang dibuat dengan memanggil Apache HBase API

Contoh berikut menggunakan SQL Shell. Instans Lindorm harus versi 2.4.0 atau lebih baru.

  1. Buat pemetaan kolom:

    ALTER TABLE test MAP DYNAMIC COLUMN f:_mongo_id_ HSTRING/HINT/..., person:name HSTRING, person:age HINT;
  2. Buat indeks sekunder:

    CREATE INDEX idx ON test(f:_mongo_id_);

Contoh mengonfigurasi tugas ETL untuk tabel yang dibuat dengan memanggil Apache HBase API

Dokumen sumber di ApsaraDB for MongoDB:

{
  "_id": 0,
  "person": {
    "name": "cindy0",
    "age": 0,
    "student": true
  }
}

Skrip ETL — memperluas semua field tingkat atas kecuali _id sebagai kolom dinamis:

script:e_expand_bson_value("*", "_id")

Synchronization result:

Migration result

Contoh penugasan nilai

Gunakan contoh ini sebagai referensi saat mengonfigurasi ekspresi bson_value() untuk field bersarang.

Struktur dokumen sumber:

{
  "_id": "62cd344c85c1ea6a2a9f****",
  "person": {
    "name": "neo",
    "age": "26",
    "sex": "male"
  }
}

Skema tabel tujuan di Lindorm:

Nama kolomTipe
idSTRING
person_nameSTRING
person_ageINT

Konfigurasi kolom:

Penting

Selalu tentukan jalur hierarkis lengkap dalam bson_value(). Menggunakan bson_value("person") alih-alih bson_value("person","name") menyebabkan DTS gagal saat menulis data inkremental ke field bersarang — kehilangan data atau kegagalan tugas dapat terjadi.

Nama kolomJenisAssign Value
idSTRINGbson_value("_id")
person_nameSTRINGbson_value("person","name")
person_ageBIGINTbson_value("person","age")