All Products
Search
Document Center

ApsaraDB for MongoDB:Konfigurasikan sinkronisasi data dua arah antar instans ApsaraDB for MongoDB (arsitektur kluster sharded)

Last Updated:Mar 29, 2026

Sinkronisasi data dua arah menjaga dua instans ApsaraDB for MongoDB dengan arsitektur kluster sharded tetap selaras secara simultan, memungkinkan skenario redundansi geo-aktif (berbasis unit) dan pemulihan bencana geo. Topik ini menjelaskan cara mengonfigurasi tugas sinkronisasi dua arah menggunakan Data Transmission Service (DTS).

Penting

Rencanakan penulisan data Anda sebelum memulai. Tetapkan rentang kunci primer yang tidak tumpang tindih untuk masing-masing instans sehingga catatan dengan kunci primer yang sama hanya diperbarui pada satu node dalam satu waktu — misalnya, instans A memiliki catatan dengan kunci primer 1, 3, dan 5, sedangkan instans B memiliki catatan dengan kunci primer 2, 4, dan 6. Hal ini mencegah konflik kunci primer dan saling menimpa.

Cara kerja

Instansi sinkronisasi dua arah menjalankan dua tugas secara bersamaan:

  • Forward task: menyinkronkan data dari Instans A ke Instans B.

  • Tugas balik: menyinkronkan data dari instans B ke instans A.

Ketika kedua tugas berbagi objek yang sama, hanya satu tugas yang melakukan sinkronisasi data penuh dan sinkronisasi inkremental. Tugas lainnya hanya melakukan sinkronisasi inkremental. Data yang telah disinkronkan tidak disinkronkan ulang ke arah sebaliknya.

Operasi DDL hanya disinkronkan dalam arah maju.

Prasyarat

Sebelum memulai, pastikan bahwa:

  • Kedua instans ApsaraDB for MongoDB dengan arsitektur kluster sharded (sumber dan tujuan) telah dibuat. Lihat Buat instans kluster sharded.

  • Setiap shard di instans sumber telah ditetapkan titik akhirnya, dan semua shard menggunakan akun serta password yang sama. Lihat Ajukan titik akhir untuk node shard atau ConfigServer.

    Untuk versi database yang didukung, lihat Ikhtisar skenario sinkronisasi data.
  • (Disarankan) Instans tujuan memiliki ruang penyimpanan tersedia setidaknya 10% lebih besar daripada ukuran total data instans sumber.

  • Parameter replication.oplogGlobalIdEnabled diatur ke true untuk node shard dan ConfigServer pada kedua instans. Lihat Konfigurasikan parameter database untuk instans.

    Jika replication.oplogGlobalIdEnabled tidak diatur ke true, pemeriksaan awal gagal atau muncul error two-way mongo must have gid.
  • Database dan koleksi yang akan di-shard telah dibuat di kedua instans, sharding data telah dikonfigurasi, balancer diaktifkan, dan pre-sharding telah dilakukan. Lihat Konfigurasikan sharding untuk memaksimalkan performa shard dan FAQ.

    Pre-sharding dan pengaktifan balancer sebelum sinkronisasi memastikan data yang disinkronkan terdistribusi merata di seluruh shard, mencegah kesenjangan data.
  • Akun database yang digunakan untuk DTS memiliki izin yang diperlukan. Lihat bagian izin akun.

Izin akun

Buat atau verifikasi keberadaan akun berikut sebelum mengonfigurasi tugas.

Instans sumber

Akun harus memiliki izin baca pada database sumber, config, admin, dan local.

Instans tujuan

Akun harus memiliki izin dbAdminAnyDatabase, izin baca dan tulis pada database tujuan, serta izin baca pada database local.

Batasan

Persyaratan database sumber dan tujuan

  • Server tempat database sumber ditempatkan harus memiliki bandwidth keluar yang mencukupi. Jika tidak, kecepatan sinkronisasi data akan terpengaruh.

  • Koleksi harus memiliki kendala PRIMARY KEY atau UNIQUE, dan semua field harus unik. Jika tidak, tujuan mungkin berisi catatan duplikat.

  • Field _id harus unik di seluruh catatan dalam sebuah koleksi. Jika tidak, ketidakkonsistenan data dapat terjadi.

  • Jika Anda memilih koleksi sebagai objek yang akan disinkronkan dan perlu mengedit koleksi di database tujuan, seperti mengganti nama koleksi, satu tugas mendukung hingga 1.000 koleksi. Untuk lebih dari 1.000 koleksi, konfigurasikan beberapa tugas atau sinkronkan seluruh database.

  • Entri data tunggal tidak boleh melebihi 16 MB. Tugas akan gagal jika batas ini dilampaui.

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

  • Oplog harus diaktifkan dan menyimpan data setidaknya selama tujuh hari. Atau aktifkan change streams yang mencakup tujuh hari terakhir. Jika kedua kondisi ini tidak terpenuhi, DTS mungkin gagal mendapatkan perubahan data, menyebabkan kegagalan sinkronisasi atau kehilangan data. Masalah yang timbul dari hal ini tidak dicakup oleh perjanjian tingkat layanan (SLA) DTS.

    Penting

    - Gunakan oplog untuk mencatat perubahan data (disarankan). Change streams hanya didukung untuk MongoDB 4.0 dan versi lebih baru, dan sinkronisasi dua arah tidak didukung saat menggunakan change streams. - Untuk kluster Amazon DocumentDB non-elastis, aktifkan change streams dan atur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster.

  • Instans kluster sharded MongoDB tidak dapat diskalakan selama tugas sinkronisasi aktif. Penskalaan menyebabkan tugas gagal.

  • Kluster sharded MongoDB sumber tidak boleh memiliki lebih dari 10 node Mongos.

  • Koleksi dengan indeks masa hidup data (TTL) tidak dapat disinkronkan. Jika sumber memiliki indeks TTL, ketidakkonsistenan data dapat terjadi setelah sinkronisasi.

  • Pastikan baik sumber maupun tujuan tidak memiliki dokumen yatim. Dokumen yatim dapat menyebabkan ketidakkonsistenan data atau kegagalan tugas. Lihat Dokumen yatim dan Bagaimana cara menghapus dokumen yatim?

  • Kedua instans harus berupa instans ApsaraDB for MongoDB dengan arsitektur yang sama. Sinkronisasi dua arah tidak didukung untuk database MongoDB yang dikelola sendiri atau instans dengan arsitektur berbeda.

  • Selama sinkronisasi skema dan sinkronisasi data penuh, jangan mengubah skema database atau koleksi.

  • Selama sinkronisasi data penuh saja (tanpa sinkronisasi inkremental), jangan menulis ke database sumber.

Persyaratan lainnya

  • Tambahkan kunci shard ke semua data sebelum memulai tugas. Operasi INSERT harus menyertakan kunci shard, dan operasi UPDATE tidak boleh mengubah kunci shard.

  • Versi MongoDB tujuan harus sama dengan atau lebih baru dari versi sumber. Versi tujuan yang lebih lama dapat menyebabkan masalah kompatibilitas.

  • Jika koleksi tujuan memiliki indeks unik atau properti capped diatur ke true, koleksi tersebut hanya mendukung penulisan single-thread dan tidak mendukung replay konkuren selama sinkronisasi inkremental. Hal ini dapat meningkatkan latensi sinkronisasi.

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

  • Transaksi tidak dipertahankan. Selama sinkronisasi, setiap transaksi diubah menjadi satu catatan di tujuan.

  • Nonaktifkan balancer MongoDB pada instans sumber selama sinkronisasi data penuh. Aktifkan balancer hanya setelah sinkronisasi inkremental dimulai. Jika tidak, ketidakkonsistenan data dapat terjadi. Lihat Kelola balancer ApsaraDB for MongoDB.

  • Jika sharding data sudah dikonfigurasi untuk tujuan dan Anda tidak memerlukan sinkronisasi skema, jangan pilih Schema Synchronization di bawah Synchronization Types. Memilihnya dapat menyebabkan konflik shard atau ketidakkonsistenan data.

  • Kami merekomendasikan agar Anda melakukan sinkronisasi data selama jam sepi. Sinkronisasi data penuh mengonsumsi sumber daya baca dan tulis pada kedua instans dan meningkatkan beban database.

  • Data ditulis secara konkuren ke database tujuan. Oleh karena itu, ruang penyimpanan yang ditempati di database tujuan 5% hingga 10% lebih besar daripada ukuran data di database sumber.

  • Selama sinkronisasi data penuh, operasi INSERT konkuren menciptakan fragmentasi di koleksi tujuan. Setelah sinkronisasi data penuh selesai, ruang penyimpanan untuk koleksi database tujuan lebih besar daripada database sumber.

  • Jangan menulis data dari sumber lain ke tujuan selama sinkronisasi. Misalnya, menjalankan pernyataan DDL online melalui Data Management (DMS) sementara sumber lain menulis ke tujuan dapat menyebabkan kehilangan data.

  • Untuk mengkueri jumlah dokumen di tujuan, gunakan: db.$table_name.aggregate([{ $count:"myCount"}]).

  • Pastikan tujuan tidak memiliki catatan dengan kunci primer yang sama (_id) dengan sumber. Jika terjadi konflik, hapus catatan yang bertentangan dari tujuan tanpa mengganggu DTS.

  • Jika tugas DTS gagal, dukungan DTS berusaha memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin di-restart dan parameter tugas (bukan parameter database) mungkin dimodifikasi.

Penagihan

Jenis sinkronisasiBiaya
Sinkronisasi skema dan sinkronisasi data penuhGratis
Sinkronisasi data inkrementalDikenai biaya. Lihat Ikhtisar penagihan.

Topologi yang didukung

DTS mendukung sinkronisasi dua arah antara tepat dua instans ApsaraDB for MongoDB dengan arsitektur kluster sharded. Sinkronisasi di antara lebih dari dua instans tidak didukung.

Deteksi konflik

Untuk menjaga konsistensi data, perbarui catatan dengan kunci primer, kunci primer bisnis, atau kunci unik yang sama hanya pada satu node sinkronisasi dalam satu waktu. Jika kedua node memperbarui catatan yang sama, DTS menyelesaikan konflik berdasarkan kebijakan yang Anda konfigurasi.

DTS mendeteksi jenis konflik berikut:

  • Konflik keunikan INSERT: Jika kunci primer yang sama dimasukkan ke kedua node hampir bersamaan, satu INSERT gagal karena kunci primer tersebut sudah ada di node lain.

  • Ketidakkonsistenan UPDATE:

    • Jika catatan yang akan diperbarui tidak ada di tujuan, DTS mengubah UPDATE menjadi INSERT. Hal ini dapat memicu konflik keunikan.

    • Kunci primer atau unik dari catatan yang dimasukkan dapat bertentangan dengan catatan tujuan yang sudah ada.

  • DELETE pada catatan yang tidak ada: Jika catatan yang akan dihapus tidak ada di tujuan, DTS mengabaikan operasi DELETE terlepas dari kebijakan resolusi konflik.

Penting
  • Perbedaan waktu sistem dan latensi sinkronisasi antara sumber dan tujuan berarti DTS tidak dapat menjamin bahwa deteksi konflik mencegah semua konflik. Rancang aplikasi Anda sehingga catatan dengan kunci primer atau kunci unik yang sama hanya diperbarui pada satu node.

  • Dalam skenario ini (sinkronisasi dua arah untuk kluster sharded MongoDB), hanya kebijakan resolusi konflik Ignore yang didukung.

Jenis sinkronisasi

JenisDeskripsi
Sinkronisasi skemaMenyinkronkan skema objek yang dipilih dari sumber ke tujuan.
Sinkronisasi data penuhMenyinkronkan semua data yang ada dari objek yang dipilih. Mendukung database dan koleksi.
Sinkronisasi data inkrementalMenyinkronkan perubahan data: CREATE COLLECTION, CREATE INDEX, DROP COLLECTION, DROP INDEX, RENAME COLLECTION, serta operasi insert, update, dan delete pada dokumen.

Ringkasan pengaturan tugas maju dan balik

Sebelum memulai, tinjau perbedaan utama antara tugas maju dan balik:

PengaturanTugas maju (A ke B)Tugas balik (B ke A)
Jenis sinkronisasiSinkronisasi skema + sinkronisasi data penuh + sinkronisasi data inkrementalHanya sinkronisasi data inkremental (sinkronisasi penuh tidak diperlukan jika data sudah disinkronkan dalam arah maju)
Sumber dan tujuanSumber: instans A; tujuan: instans BSumber: instans B; tujuan: instans A (dibalik dari tugas maju)
Pemetaan nama objekDiizinkanHindari — dapat menyebabkan ketidakkonsistenan data
Operasi DDLDapat dikonfigurasiDiabaikan (DDL hanya satu arah maju)
Objek yang dipilihObjek yang Anda pilihTidak boleh tumpang tindih dengan objek tugas maju
Wilayah InstansDapat dikonfigurasiTidak dapat dimodifikasi

Konfigurasikan sinkronisasi data dua arah

Penting

Dalam prosedur ini, Anda mengonfigurasi tugas DTS sebelum membeli instans DTS, sehingga Anda tidak perlu menentukan jumlah shard di instans sumber di awal. Jika Anda membeli instans DTS terlebih dahulu, Anda harus menentukan jumlah shard saat pembelian.

Langkah 1: Buat dan konfigurasikan tugas maju

  1. Buka halaman Sinkronisasi Data di Konsol DTS.

    Sebagai alternatif, masuk ke Konsol DMS. Di bilah navigasi atas, arahkan penunjuk ke Konsol Data Management (DMS)Data Development > DTS (DTS) > Data Synchronization.
  2. Di pojok kiri atas, pilih wilayah tempat instans sinkronisasi akan berada.

  3. Klik Create Task. Di wizard Create Task, konfigurasikan database sumber dan tujuan.

    Peringatan

    Setelah Anda mengonfigurasi database sumber dan tujuan, baca Limits yang ditampilkan di halaman sebelum melanjutkan. Melewatkan langkah ini dapat menyebabkan kegagalan tugas atau ketidakkonsistenan data.

    Database sumber

    ParameterDeskripsi
    Select an existing DMS database instanceOpsional. Jika Anda memilih instans DMS yang sudah ada, DTS akan mengisi parameter secara otomatis.
    Database TypePilih MongoDB.
    Connection TypePilih Alibaba Cloud Instance.
    Instance RegionPilih wilayah instans ApsaraDB for MongoDB sumber.
    Replicate Data Across Alibaba Cloud AccountsPilih No untuk sinkronisasi dalam akun yang sama.
    ArchitecturePilih Sharded Cluster.
    Instance IDPilih ID instans sumber.
    Authentication DatabaseDatabase yang menyimpan akun dan password. Default: admin.
    Database AccountAkun dengan izin baca pada database sumber, config, admin, dan local.
    Database PasswordPassword untuk akun database.
    Shard AccountAkun untuk mengakses shard di instans sumber.
    Shard PasswordPassword untuk akun shard.

    Database tujuan

    ParameterDeskripsi
    Select an existing DMS database instanceOpsional. Jika Anda memilih instans DMS yang sudah ada, DTS akan mengisi parameter secara otomatis.
    Database TypePilih MongoDB.
    Connection TypePilih Alibaba Cloud Instance.
    Instance RegionPilih wilayah instans ApsaraDB for MongoDB tujuan.
    ArchitecturePilih Sharded Cluster.
    Instance IDPilih ID instans tujuan.
    Authentication DatabaseDatabase yang menyimpan akun dan password. Default: admin.
    Database AccountAkun dengan izin dbAdminAnyDatabase, izin baca dan tulis pada database tujuan, serta izin baca pada database local.
    Database PasswordPassword untuk akun database.
  4. Klik Test Connectivity and Proceed. DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instans database Alibaba Cloud atau grup keamanan ECS. Untuk database yang dikelola sendiri atau database cloud pihak ketiga, tambahkan blok CIDR DTS secara manual. Lihat Tambahkan blok CIDR server DTS.

    Peringatan

    Menambahkan blok CIDR DTS ke daftar putih atau grup keamanan menimbulkan risiko keamanan. Ambil tindakan pencegahan: gunakan kredensial kuat, batasi port yang terbuka, autentikasi panggilan API, audit aturan daftar putih secara berkala, dan pertimbangkan koneksi melalui Express Connect, VPN Gateway, atau Smart Access Gateway.

  5. Konfigurasikan objek dan pengaturan sinkronisasi.

    ParameterDeskripsi
    Synchronization TypesPilih Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Sinkronisasi data lengkap mengisi tujuan dengan data historis sebelum sinkronisasi inkremental dimulai.
    Processing Mode of Conflicting TablesPeriksa Awal dan Laporkan Error (default): pemeriksaan awal gagal jika sumber dan tujuan memiliki koleksi dengan nama identik. Ignore Errors and Proceed: melewati pemeriksaan awal untuk nama yang identik. >
    Peringatan

    Memilih Abaikan Error dan Lanjutkan dapat menyebabkan ketidakkonsistenan data. Catatan tujuan yang sudah ada dengan kunci primer atau unik yang sama dipertahankan dan tidak ditimpa.

    Synchronization TopologyPilih Two-way Synchronization.
    Exclude DDL OperationsYa: mengecualikan operasi DDL. Tidak: menyinkronkan operasi DDL. Operasi DDL hanya disinkronkan dalam arah maju.
    Conflict Resolution PolicyPilih cara menangani konflik. TaskFailed: tugas berhenti saat terjadi konflik — selesaikan secara manual. Ignore: mempertahankan catatan tujuan dan melewati pernyataan yang bertentangan. Overwrite: menimpa catatan tujuan. >
    Catatan

    Hanya Ignore yang didukung untuk sinkronisasi dua arah kluster sharded MongoDB.

    Source ObjectsPilih database atau koleksi yang akan disinkronkan, lalu klik ikon panah untuk menambahkannya ke Selected Objects.
    Selected ObjectsUntuk mengganti nama satu objek, klik kanan objek tersebut. Lihat Pemetaan nama objek tunggal. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Lihat Pemetaan nama beberapa objek sekaligus. Untuk memfilter data berdasarkan kondisi (hanya untuk sinkronisasi penuh), klik kanan tabel dan tentukan kondisi. Lihat Tentukan kondisi filter. >
    Catatan

    Mengganti nama database atau koleksi dapat menyebabkan objek dependen gagal disinkronkan.

  6. Klik Next: Advanced Settings dan konfigurasikan parameter berikut. Untuk verifikasi data, lihat Mengonfigurasi tugas verifikasi data.

    Advanced settings

    ParameterDeskripsi
    Dedicated Cluster for Task SchedulingSecara default, DTS menggunakan klaster bersama. Untuk stabilitas lebih tinggi, beli klaster khusus. Lihat Apa itu klaster khusus DTS.
    Set AlertsTidak: menonaktifkan peringatan. Ya: mengirim notifikasi saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Lihat Konfigurasikan pemantauan dan peringatan.
    Retry Time for Failed ConnectionsBerapa lama DTS mencoba ulang koneksi yang gagal setelah tugas dimulai. Nilai valid: 10–1440 menit. Default: 720. Atur lebih dari 30 menit. Jika koneksi berhasil dalam jangka waktu ini, tugas dilanjutkan; jika tidak, tugas gagal. >
    Catatan

    Jika beberapa tugas menggunakan database sumber atau tujuan yang sama, jendela ulang coba terpendek yang berlaku. DTS menagih instans selama proses ulang coba.

    Retry Time for Other IssuesBerapa lama DTS mencoba ulang operasi DDL atau DML yang gagal. Nilai valid: 1–1440 menit. Default: 10. Atur lebih dari 10 menit. Harus lebih kecil dari Waktu Ulang Coba untuk Koneksi Gagal.
    Enable Throttling for Full Data MigrationBatasi permintaan per detik (QPS), catatan per detik (RPS), dan kecepatan migrasi selama sinkronisasi data penuh untuk mengurangi beban pada server sumber dan tujuan. Ditampilkan hanya saat Full Data Synchronization dipilih.
    Enable Throttling for Incremental Data SynchronizationBatasi RPS dan kecepatan sinkronisasi selama sinkronisasi inkremental untuk mengurangi beban pada server tujuan.
    Environment TagBeri tag instans DTS untuk identifikasi lingkungan. Opsional.
    Configure ETLYa: mengaktifkan fitur ekstrak, transformasi, dan muat (ETL). Masukkan pernyataan pemrosesan di editor kode. Lihat Konfigurasikan ETL. Tidak: menonaktifkan ETL.
  7. Klik Next: Save Task Settings and Precheck.

    - Untuk melihat pratinjau parameter API untuk konfigurasi ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters sebelum melanjutkan. - DTS menjalankan pemeriksaan awal sebelum tugas dimulai. Tugas hanya dapat dimulai setelah lulus pemeriksaan awal. - Jika pemeriksaan awal gagal, klik View Details di sebelah setiap item yang gagal, atasi masalahnya, lalu jalankan ulang pemeriksaan awal. - Jika muncul peringatan selama pemeriksaan awal: untuk peringatan kritis, perbaiki masalah dan jalankan ulang pemeriksaan awal. Untuk peringatan yang dapat diabaikan, klik Confirm Alert Details, klik Ignore di kotak dialog, klik OK, lalu klik Precheck Again.
  8. Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.

  9. Di halaman pembelian, konfigurasikan metode penagihan dan kelas instans.

    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 atau sementara.
    Resource Group SettingsKelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Lihat Apa itu Resource Management?
    Instance ClassDTS menawarkan beberapa kelas instans dengan kecepatan sinkronisasi berbeda. Lihat Kelas instans untuk instans sinkronisasi data.
    Subscription DurationHanya tersedia untuk metode penagihan langganan. Opsi: 1–9 bulan, atau 1, 2, 3, atau 5 tahun.
  10. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.

  11. Klik Buy and Start. Tugas sinkronisasi maju dimulai. Pantau perkembangannya di daftar tugas.

Langkah 2: Konfigurasikan tugas balik

  1. Tunggu hingga tugas sinkronisasi maju memasuki status Running. Temukan tugas sinkronisasi balik di daftar tugas dan klik Configure Task.

  2. Konfigurasikan tugas balik dengan mengulangi langkah 3 hingga 7 dengan perbedaan berikut:

    Penting

    - Tukar instans sumber dan tujuan: instans tujuan tugas maju menjadi sumber tugas balik, dan sebaliknya. - Parameter Instance Region tidak dapat dimodifikasi. - Jangan gunakan fitur pemetaan nama objek. Menggunakannya untuk tugas balik dapat menyebabkan ketidakkonsistenan data. - DTS mengabaikan koleksi yang sudah disinkronkan ke tujuan dalam pemeriksaan awal balik. - Jangan pilih objek yang sudah dipilih dalam tugas maju. - Tugas balik mengabaikan operasi DDL.

  3. Tunggu hingga tingkat keberhasilan pemeriksaan awal mencapai 100%, lalu klik Back.

  4. Tunggu hingga kedua tugas maju dan balik memasuki status Running. Sinkronisasi data dua arah kini aktif.

Langkah selanjutnya

  • Setelah sinkronisasi data penuh selesai dan sinkronisasi inkremental dimulai, aktifkan kembali balancer MongoDB di instans sumber.