All Products
Search
Document Center

Data Transmission Service:Sinkronisasi data dari instans set replika ApsaraDB for MongoDB ke fungsi Function Compute

Last Updated:Mar 29, 2026

Gunakan Data Transmission Service (DTS) untuk mengalirkan perubahan inkremental dari instans set replika ApsaraDB for MongoDB langsung ke fungsi Function Compute. Setiap event INSERT, UPDATE, DELETE, dan DDL dikirimkan dalam format Canal JSON, sehingga kode fungsi Anda dapat memproses, mentransformasi, atau meneruskan data tersebut ke sistem downstream tanpa perlu membangun lapisan konsumen terpisah.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Penagihan

Sinkronisasi data inkremental adalah fitur berbayar. Lihat Ikhtisar penagihan.

Jenis sinkronisasi

Biaya konfigurasi tugas

Sinkronisasi data inkremental

Dikenai biaya. Untuk informasi selengkapnya, lihat Ikhtisar penagihan.

Batasan

Database sumber

KendalaDetail
BandwidthServer yang menghosting database sumber harus memiliki bandwidth keluar yang mencukupi; jika tidak, kecepatan sinkronisasi akan terpengaruh.
Kunci utama atau kunci unikKoleksi yang akan disinkronkan harus memiliki kendala PRIMARY KEY atau kendala UNIQUE, dan semua field-nya harus unik. Tanpa ini, fungsi tujuan mungkin menerima catatan duplikat.
Ukuran catatan tunggalMaksimum 16 MB per catatan. DTS melaporkan error untuk catatan yang lebih besar. Gunakan fitur ekstrak, transformasi, dan muat (ETL) untuk menyaring field besar.
Jumlah koleksiMaksimal 1.000 koleksi per tugas. Untuk lebih dari 1.000 koleksi, konfigurasikan beberapa tugas atau lakukan sinkronisasi pada tingkat database.
Sumber yang tidak didukungKlaster Azure Cosmos DB for MongoDB dan klaster elastis Amazon DocumentDB tidak didukung.
oplog / change streamsoplog harus diaktifkan pada database sumber dan menyimpan data log minimal selama tujuh hari, ATAU change streams harus diaktifkan untuk mencakup tujuh hari terakhir. Jika kedua kondisi ini tidak terpenuhi, DTS mungkin melewatkan perubahan, yang dapat menyebabkan inkonsistensi atau kehilangan data — hal ini tidak dicakup oleh perjanjian tingkat layanan (SLA) DTS.
Versi MongoDB untuk change streamsChange streams memerlukan MongoDB 4.0 atau versi yang lebih baru. Sinkronisasi dua arah tidak didukung saat menggunakan change streams.
Amazon DocumentDB (non-elastis)Aktifkan change streams dan atur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster.
Titik akhir SRVDTS tidak dapat terhubung ke MongoDB melalui titik akhir SRV.

Batasan lainnya

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

  • Sinkronisasi data penuh tidak didukung — hanya inkremental.

  • Sinkronisasi lintas wilayah tidak didukung.

  • Fitur pemetaan nama objek tidak didukung.

  • Tetapkan hanya satu tugas DTS per fungsi tujuan untuk menghindari kesalahan data.

  • Konteks transaksi tidak dipertahankan. Setiap transaksi dikonversi menjadi catatan individual.

  • Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Tugas mungkin dimulai ulang dan parameter tugas (bukan parameter database) dapat dimodifikasi selama pemulihan.

Kasus khusus (MongoDB yang dikelola sendiri)

  • Alih bencana primer/sekunder saat tugas sedang berjalan menyebabkan tugas gagal.

  • Latensi sinkronisasi dihitung dari stempel waktu catatan terbaru yang disinkronkan dibandingkan dengan stempel waktu sumber saat ini. Jika tidak ada operasi tulis pada sumber dalam periode yang lama, latensi yang dilaporkan mungkin tidak akurat. Tulis catatan ke database sumber untuk memperbarui pembacaan latensi.

Jika Anda menyinkronkan seluruh database, buat tabel heartbeat. DTS memperbarui tabel heartbeat setiap detik, sehingga menjaga akurasi pembacaan latensi.

Operasi yang didukung

Operasi yang disinkronkan DTS bergantung pada Migration Method yang Anda pilih.

OperasiOplogChange streams
INSERTDidukungDidukung
UPDATEDidukungDidukung
DELETEDidukungDidukung
CREATE COLLECTIONDidukungTidak didukung
CREATE INDEXDidukungTidak didukung
DROP DATABASEDidukungDidukung
DROP COLLECTIONDidukungDidukung
DROP INDEXDidukungTidak didukung
RENAME COLLECTIONDidukungDidukung

Gunakan oplog

Tugas DTS tidak menyinkronkan data inkremental dari database yang dibuat setelah tugas mulai berjalan. DTS menyinkronkan data inkremental yang dihasilkan oleh operasi berikut:

  • CREATE COLLECTION dan INDEX

  • DROP DATABASE, COLLECTION, dan INDEX

  • RENAME COLLECTION

  • Operasi yang dilakukan untuk menyisipkan, memperbarui, dan menghapus dokumen dalam koleksi.

    Catatan

    Saat menyinkronkan data inkremental dokumen, hanya operasi update yang menggunakan perintah $set yang didukung.

Gunakan change streams

DTS menyinkronkan data inkremental yang dihasilkan oleh operasi berikut:

  • DROP DATABASE dan COLLECTION

  • RENAME COLLECTION

  • Operasi yang dilakukan untuk menyisipkan, memperbarui, dan menghapus dokumen dalam koleksi.

    Catatan

    Saat menyinkronkan data inkremental dokumen, hanya operasi update yang menggunakan perintah $set yang didukung.

Saat menyinkronkan data inkremental file, hanya perintah $set yang didukung. DTS tidak menyinkronkan data inkremental dari database yang dibuat setelah tugas dimulai (berlaku untuk mode Oplog).

Izin akun database yang diperlukan

DatabaseIzin yang diperlukanReferensi
Instans MongoDB sumberIzin baca pada database sumber, admin, dan localKelola izin pengguna database MongoDB

Buat tugas sinkronisasi

Langkah 1: Buka halaman Sinkronisasi Data

Gunakan salah satu konsol berikut:

Konsol DTS

  1. Masuk ke Konsol DTS.Konsol DTS

  2. Di panel navigasi sebelah kiri, klik Data Synchronization.

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

Konsol DMS

Langkah navigasi yang tepat bervariasi 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 sebelah kanan Data Synchronization Tasks, pilih wilayah.

Langkah 2: Konfigurasi database sumber dan tujuan

Klik Create Task, lalu konfigurasikan parameter yang dijelaskan dalam tabel berikut.

Umum

ParameterDeskripsi
Task NameNama untuk tugas DTS. DTS menghasilkan nama default. Gunakan nama deskriptif untuk mengidentifikasi tugas — tidak perlu unik.

Database sumber

ParameterDeskripsi
Select Existing ConnectionPilih instans database terdaftar dari daftar drop-down, atau konfigurasikan koneksi secara manual.
Database TypePilih MongoDB.
Access MethodPilih Alibaba Cloud Instance.
Instance RegionWilayah tempat instans MongoDB sumber berada.
Replicate Data Across Alibaba Cloud AccountsPilih No untuk sinkronisasi dalam akun yang sama.
ArchitecturePilih Replica Set.
Migration MethodCara DTS membaca data inkremental dari sumber. Oplog (direkomendasikan): Tersedia ketika fitur oplog diaktifkan pada sumber. Oplog memberikan latensi rendah karena penarikan log yang cepat. ChangeStream: Tersedia ketika change streams diaktifkan. Lihat Change Streams. Jika Sharded Cluster dipilih untuk Architecture, parameter Shard account dan Shard password tidak diperlukan.
Instance IDID instans MongoDB sumber.
Authentication DatabaseDatabase yang menyimpan akun dan kata sandi. Default: admin.
Database AccountAkun dengan izin baca yang diperlukan.
Database PasswordKata sandi untuk akun database.
EncryptionEnkripsi koneksi: Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL. Opsi yang tersedia bergantung pada nilai Access Method dan Architecture. Opsi SSL-encrypted tidak tersedia jika Architecture diatur ke Sharded Cluster dan Migration Method diatur ke Oplog. Untuk set replika MongoDB yang dikelola sendiri tanpa menggunakan akses Instance Alibaba Cloud, Anda dapat mengunggah sertifikat CA saat memilih opsi SSL-encrypted

Database tujuan

ParameterDeskripsi
Select Existing ConnectionPilih instans terdaftar dari daftar drop-down, atau konfigurasikan secara manual.
Database TypePilih Function Compute.
Access MethodPilih Alibaba Cloud Instance.
Instance RegionDefault ke wilayah yang sama dengan sumber dan tidak dapat diubah.
ServiceLayanan Function Compute yang berisi fungsi tujuan.
FunctionFungsi tujuan yang menerima data yang disinkronkan.
Service Version and AliasMenentukan versi fungsi mana yang menerima data: Default Version memperbaiki versi layanan ke LATEST. Specified Version memerlukan konfigurasi parameter Service Version. Specified Alias memerlukan konfigurasi parameter Service Alias. Lihat Terms untuk terminologi Function Compute.

Langkah 3: Uji konektivitas

Klik Test Connectivity and Proceed di bagian bawah halaman.

Blok CIDR server DTS harus ditambahkan ke pengaturan keamanan database sumber dan tujuan. Lihat Tambahkan blok CIDR server DTS. Jika sumber atau tujuan adalah database yang dikelola sendiri yang tidak menggunakan akses Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.

Langkah 4: Konfigurasi objek untuk disinkronkan

Pada langkah Configure Objects, atur parameter berikut.

ParameterDeskripsi
Synchronization TypesDitetapkan ke Incremental Data Synchronization.
Data FormatDitetapkan ke Canal Json. Lihat Format data klaster Kafka untuk deskripsi field.
Source ObjectsPilih database atau koleksi, lalu klik ikon panah kanan untuk memindahkannya ke Selected Objects.
Selected ObjectsTinjau objek yang akan disinkronkan. Untuk menghapus objek, pilih objek tersebut lalu klik ikon panah kiri. Untuk mengonfigurasi sinkronisasi tingkat database atau koleksi, klik kanan di Selected Objects.

Klik Next: Advanced Settings.

Langkah 5: Konfigurasi pengaturan lanjutan

ParameterDeskripsi
Dedicated Cluster for Task SchedulingSecara default, DTS menjadwalkan tugas ke klaster bersama. Beli klaster khusus untuk meningkatkan stabilitas. Lihat Apa itu klaster khusus DTS.
Retry Time for Failed ConnectionsDurasi DTS mencoba ulang saat database sumber atau tujuan tidak dapat dijangkau. Rentang valid: 10–1.440 menit. Default: 720. Atur nilai ini lebih dari 30 menit. Jika beberapa tugas berbagi database yang sama, waktu coba ulang terpendek yang berlaku. DTS menagih instance selama periode coba ulang.
Retry Time for Other IssuesDurasi DTS mencoba ulang saat operasi DDL atau DML gagal. Rentang valid: 1–1.440 menit. Default: 10. Atur nilai ini lebih dari 10 menit. Nilai ini harus kurang dari Retry Time for Failed Connections.
Obtain the entire document after it is updatedHanya tersedia saat Migration Method adalah ChangeStream. Yes: Menyinkronkan dokumen lengkap setelah diperbarui. No: Hanya menyinkronkan field yang berubah.
Enable Throttling for Incremental Data SynchronizationBatasi throughput untuk mengurangi beban pada tujuan. Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s).
Environment TagTag opsional untuk mengidentifikasi instans DTS.
Configure ETLAktifkan fitur ETL untuk menyaring atau mentransformasi data sebelum mencapai tujuan. Lihat Apa itu ETL? dan Konfigurasi ETL dalam tugas migrasi data atau sinkronisasi data.
Monitoring and AlertingKonfigurasikan peringatan untuk kegagalan tugas atau latensi yang melebihi ambang batas. Lihat Konfigurasi pemantauan dan peringatan saat membuat tugas DTS.

Langkah 6: Jalankan pemeriksaan awal

Klik Next: Save Task Settings and Precheck.

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

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

  • Untuk setiap item yang gagal, klik View Details, selesaikan masalahnya, lalu klik Precheck Again.

  • Untuk item peringatan yang dapat diabaikan: klik Confirm Alert Details > Ignore > OK > Precheck Again. Mengabaikan peringatan dapat menyebabkan inkonsistensi data.

Langkah 7: Beli instans

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

  2. Di halaman pembelian, konfigurasikan parameter berikut.

ParameterDeskripsi
Billing MethodSubscription: Prabayar; lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: Ditagih per jam; cocok untuk penggunaan jangka pendek. Lepaskan instans saat tidak lagi digunakan untuk menghindari biaya.
Resource Group SettingsKelompok sumber daya untuk instans. Default: default resource group. Lihat Apa itu Resource Management?
Instance ClassKelas throughput sinkronisasi. Lihat Kelas instans instansi sinkronisasi data.
Subscription DurationTersedia saat Billing Method adalah Subscription. Opsi: 1–9 bulan, atau 1, 2, 3, atau 5 tahun.
  1. Setujui Ketentuan Layanan Data Transmission Service (Pay-as-you-go).

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

Tugas muncul di daftar tugas. Pantau perkembangannya dari sana.

Langkah berikutnya

Format data yang diterima fungsi

DTS mengirimkan data ke fungsi sebagai Object. Catatan inkremental berada di field Records sebagai array. Setiap elemen dalam array adalah Object dengan field berikut.

Fungsi menerima dua kategori operasi:
DDL: Perubahan skema — CreateIndex, CreateCollection, DropIndex, DropCollection.
DML: Perubahan data — INSERT, UPDATE, DELETE.
FieldTipeDeskripsi
isDdlBooleanTrue jika DDL; False jika DML.
typeStringDML: DELETE, UPDATE, atau INSERT. DDL: DDL.
databaseStringNama database MongoDB.
tableStringNama koleksi.
pkNamesStringNama kunci utama. Selalu _id untuk MongoDB.
esLongStempel waktu UNIX (milidetik) saat operasi dijalankan pada database sumber.
tsLongStempel waktu UNIX (milidetik) saat DTS mulai menulis ke tujuan.
dataObject ArrayArray satu elemen. Elemen tersebut memiliki kunci doc dan string JSON sebagai nilainya. Deserialisasi nilai tersebut untuk mendapatkan catatan.
oldObject ArrayArray tempat data asli disimpan. Format field-nya sama dengan field data. Field ini hanya tersedia saat nilai field type adalah UPDATE.
idIntNomor seri operasi.

Contoh DDL

Buat koleksi

Hapus koleksi

Buat indeks

Hapus indeks

Contoh DML

Sisipkan data

Pernyataan SQL:

// Sisipkan beberapa catatan sekaligus
db.runCommand({insert: "user", documents: [{"name":"jack","age":20},{"name":"lili","age":20}]})

// Sisipkan satu catatan per waktu
db.user.insert({"name":"jack","age":20})
db.user.insert({"name":"lili","age":20})

Data yang diterima fungsi:

{
  "Records": [
    {
      "data": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}, \"name\": \"jack\", \"age\": 20}"}],
      "pkNames": ["_id"],
      "type": "INSERT",
      "es": 1694054783000,
      "database": "MongoDBTest",
      "id": 0,
      "isDdl": false,
      "table": "user",
      "ts": 1694054784427
    },
    {
      "data": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}, \"name\": \"lili\", \"age\": 20}"}],
      "pkNames": ["_id"],
      "type": "INSERT",
      "es": 1694054783000,
      "database": "MongoDBTest",
      "id": 0,
      "isDdl": false,
      "table": "user",
      "ts": 1694054784428
    }
  ]
}

Perbarui data

Pernyataan SQL:

db.user.update({"name":"jack"},{$set:{"age":30}})

Data yang diterima fungsi:

{
  "Records": [{
    "data": [{"doc": "{\"$set\": {\"age\": 30}}"}],
    "pkNames": ["_id"],
    "old": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}}"}],
    "type": "UPDATE",
    "es": 1694054989000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": false,
    "table": "user",
    "ts": 1694054990555
  }]
}

Hapus data

Pernyataan SQL:

db.user.remove({"name":"jack"})

Data yang diterima fungsi:

{
  "Records": [{
    "data": [{"doc": "{\"_id\": {\"$oid\": \"64f9397f6e255f74d65a****\"}}"}],
    "pkNames": ["_id"],
    "type": "DELETE",
    "es": 1694055452000,
    "database": "MongoDBTest",
    "id": 0,
    "isDdl": false,
    "table": "user",
    "ts": 1694055452852
  }]
}