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:
Instans ApsaraDB for MongoDB di wilayah Germany (Frankfurt), yang diterapkan dalam arsitektur replica set atau sharded cluster.
PentingJika sumbernya adalah instans kluster sharded, ajukan titik akhir untuk setiap node shard terlebih dahulu. Semua node shard menggunakan akun dan kata sandi yang sama. Untuk detailnya, lihat Ajukan titik akhir untuk shard.
Instans Lindorm yang menggunakan mesin tabel lebar, dengan ruang penyimpanan tersedia lebih besar daripada ukuran total data pada instans MongoDB sumber. Untuk hasil terbaik, sediakan minimal 10% lebih banyak ruang penyimpanan dibandingkan ukuran data sumber. Lihat Buat instans.
Tabel lebar yang telah dibuat di instans Lindorm. Lihat Gunakan Lindorm-cli untuk menghubungkan dan menggunakan LindormTable dan Gunakan Lindorm Shell untuk menghubungkan LindormTable.
Tabel harus mematuhi Kuota dan batasan. Jika Anda membuat tabel menggunakan Apache HBase API, tambahkan pemetaan kolom sebelum mengonfigurasi tugas sinkronisasi. Lihat Tambahkan pemetaan kolom untuk tabel Apache HBase API.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Jenis sinkronisasi yang didukung
| Jenis | Deskripsi |
|---|---|
| Sinkronisasi data penuh | Menyalin semua data yang ada dari database atau koleksi yang dipilih di instans sumber ke instans Lindorm tujuan. |
| Sinkronisasi data inkremental | Secara 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
| Database | Izin yang diperlukan | Cara memberikan |
|---|---|---|
| Sumber ApsaraDB for MongoDB | Izin baca pada database sumber, admin, dan local | Kelola izin pengguna database MongoDB |
| Lindorm tujuan | Izin baca dan tulis pada namespace target | Manajemen 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
_iddi 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, ataumovePrimary. 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, ataulocal.Instans Lindorm tujuan tidak boleh memiliki koleksi dengan kolom
_idatau_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_iddi 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 kolomf. Tipe data kolom tersebut harus sesuai dengan tipe kolom_iddi 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
REVOKEuntuk 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
Masuk ke Konsol DTS.Konsol DTS
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi berada.
Konsol DMS
Langkah-langkah tepatnya mungkin berbeda tergantung pada mode dan tata letak Konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya Konsol DMS.
Masuk ke Konsol DMS.Konsol DMS
Di bilah navigasi atas, arahkan pointer ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
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:
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama tidak perlu unik. |
Database sumber:
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih 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 Type | Pilih MongoDB. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah instans ApsaraDB for MongoDB sumber. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No untuk sinkronisasi dalam satu akun. |
| Architecture | Pilih Replica Set atau Sharded Cluster sesuai dengan instans sumber Anda. Jika Anda memilih Sharded Cluster, konfigurasikan juga parameter Shard account dan Shard password. |
| Migration Method | Cara 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 ID | ID instans ApsaraDB for MongoDB sumber. |
| Authentication Database | Database yang menyimpan kredensial akun. Default-nya adalah admin. |
| Database Account | Akun database untuk instans sumber. |
| Database Password | Kata sandi untuk akun tersebut. |
| Encryption | Pilih 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:
| Parameter | Deskripsi |
|---|---|
| Select Existing Connection | Pilih 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 Type | Pilih Lindorm. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah instans Lindorm tujuan. |
| Instance ID | ID instans Lindorm tujuan. |
| Database Account | Akun database untuk instans tujuan. |
| Database Password | Password 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.
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Incremental Data Synchronization dipilih secara default. Anda juga dapat memilih hanya Full Data Synchronization. Sinkronisasi skema tidak tersedia. |
| Processing Mode of Conflicting Tables | Pertahankan pengaturan default. |
| Capitalization of Object Names in Destination Instance | Mengontrol kapitalisasi nama database dan koleksi di tujuan. Default-nya adalah DTS default policy. Lihat Tentukan kapitalisasi nama objek di instans tujuan. |
| Source Objects | Pilih satu atau beberapa objek, lalu klik |
| Selected Objects | Konfigurasi 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.
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.

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.

Konfigurasi pemetaan kolom: DTS menghasilkan ekspresi
bson_value()untuk setiap baris. Periksa setiap baris dan tentukan Column Name, Type, Length, dan Precision. Di setiap ekspresibson_value(), string dalam""adalah nama field dalam dokumen MongoDB sumber. Misalnya,bson_value("age")memetakan fieldage. Untuk menghapus field dari sinkronisasi, klik
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
ROWuntuk kolom kunci primer, danKeluarga 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
Klik
di samping baris, lalu klik + New Column. 
Atur Column Name, Type, Length, dan Precision.
Masukkan ekspresi
bson_value()di Assign Value. Lihat Contoh penugasan nilai sebagai referensi. > Important: Tetapkanbson_value("_id")ke kolom kunci primer. Untuk bidang bersarang, gunakan jalur hierarkis lengkap dalambson_value(). Sebagai contoh, gunakanbson_value("person","name")alih-alihbson_value("person"). Penggunaan hanya bidang induk dapat menyebabkan kehilangan data atau kegagalan tugas pada operasi bertahap.Ulangi untuk semua kolom.
Klik OK.
Langkah 5: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasi parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan tugas ke kluster bersama. Untuk stabilitas lebih tinggi, beli kluster khusus. Lihat Apa itu kluster khusus DTS. |
| Retry Time for Failed Connections | Berapa 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 Issues | Berapa 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 Synchronization | Membatasi 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 synchronized | Atur 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 Synchronization | Membatasi beban pada tujuan selama sinkronisasi inkremental. Konfigurasi RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Tag opsional untuk mengidentifikasi lingkungan instans DTS. |
| Configure ETL | Aktifkan 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 Alerting | Atur 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
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasi parameter berikut.
| Parameter | Deskripsi |
|---|---|
| Billing Method | Subscription: 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 Settings | Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management? |
| Instance Class | Kelas throughput sinkronisasi. Lihat Kelas instans untuk instansi sinkronisasi data. |
| Subscription Duration | Tersedia untuk metode penagihan Subscription. Opsi: 1–9 bulan, atau 1, 2, 3, atau 5 tahun. |
Baca dan terima Data Transmission Service (Pay-as-you-go) Service Terms.
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.
Buat pemetaan kolom:
ALTER TABLE test MAP DYNAMIC COLUMN f:_mongo_id_ HSTRING/HINT/..., person:name HSTRING, person:age HINT;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:

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 kolom | Tipe |
|---|---|
| id | STRING |
| person_name | STRING |
| person_age | INT |
Konfigurasi kolom:
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 kolom | Jenis | Assign Value |
|---|---|---|
| id | STRING | bson_value("_id") |
| person_name | STRING | bson_value("person","name") |
| person_age | BIGINT | bson_value("person","age") |