Data Transmission Service (DTS) melakukan sinkronisasi data dua arah antara dua instans set replika ApsaraDB for MongoDB. Kedua instans tetap dapat ditulisi, dan perubahan pada salah satu sisi akan disebarkan ke sisi lain melalui sepasang tugas sinkronisasi maju dan balik.
Cara kerja
Instansi sinkronisasi dua arah terdiri dari dua tugas:
Forward task: Menyinkronkan data dari Instans A ke Instans B, mencakup sinkronisasi skema, sinkronisasi data penuh, dan sinkronisasi data inkremental.
Reverse task: Menyinkronkan data dari Instans B kembali ke Instans A, hanya menangani sinkronisasi data inkremental.
Configure forward task --> Precheck --> Purchase --> Forward task Running
|
Configure reverse task --> Precheck --> Reverse task Running
|
Both tasks Running = Two-way sync activeHanya tugas maju yang menyinkronkan data penuh. Tugas balik hanya menyinkronkan data inkremental. Tunggu hingga tugas maju mencapai status Running sebelum mengonfigurasi tugas balik.
Topologi yang didukung
DTS mendukung sinkronisasi data dua arah antara tepat dua instans set replika ApsaraDB for MongoDB. Sinkronisasi dua arah di antara tiga atau lebih instans tidak didukung.
Resolusi konflik
DTS menggunakan strategi resolusi konflik tetap ("Ignore"): ketika terjadi konflik, DTS mempertahankan data yang ada di koleksi tujuan dan melewatkan operasi yang bertentangan. Strategi ini tidak dapat diubah.
Karena jam sistem pada kedua instans mungkin berbeda dan terdapat latensi sinkronisasi, mekanisme deteksi konflik tidak dapat mencegah semua konflik data. Untuk menghindari konflik, perbarui catatan dengan primary key, business primary key, atau unique key yang sama hanya pada satu node sinkronisasi.
| Jenis konflik | Perilaku |
|---|---|
| INSERT uniqueness conflict | DTS melewatkan INSERT jika tujuan sudah memiliki catatan dengan kunci yang sama. |
| UPDATE pada catatan yang tidak ada atau bertentangan | DTS melewatkan UPDATE jika catatan target tidak ada atau bertentangan dengan catatan lain. |
| DELETE pada catatan yang tidak ada | DTS melewatkan DELETE jika catatan target tidak ada. |
Jenis sinkronisasi
| Tipe | Deskripsi |
|---|---|
| Schema synchronization | Menyinkronkan skema objek yang dipilih dari sumber ke instans ApsaraDB for MongoDB tujuan. |
| Full data synchronization | Menyinkronkan data historis (database dan koleksi) dari sumber ke instans ApsaraDB for MongoDB tujuan. |
| Incremental data synchronization | Menyinkronkan perubahan berkelanjutan. Operasi yang didukung: CREATE COLLECTION, CREATE INDEX, DROP COLLECTION, DROP INDEX, RENAME COLLECTION, serta insert, update, dan delete dokumen. Hanya perintah $set yang didukung untuk data file inkremental. DTS tidak menyinkronkan data inkremental dari database yang dibuat setelah tugas dimulai. |
Prasyarat
Sebelum memulai, pastikan bahwa:
Instans set replika ApsaraDB for MongoDB sumber dan tujuan telah dibuat. Untuk informasi selengkapnya, lihat Buat instans set replika. Untuk versi database yang didukung, lihat Ikhtisar skenario sinkronisasi data.
Instans tujuan memiliki ruang penyimpanan tersedia minimal 10% lebih besar daripada total ukuran data di instans sumber.
Parameter
replication.oplogGlobalIdEnableddiatur ketruepada kedua instans sumber dan tujuan. Untuk informasi selengkapnya, lihat Konfigurasikan parameter database untuk instans.
Jika replication.oplogGlobalIdEnabled tidak diatur ke true, pemeriksaan awal gagal atau kesalahan two-way mongo must have gid dikembalikan.
Langkah 1: Buka halaman sinkronisasi data
Gunakan salah satu metode berikut untuk membuka halaman Sinkronisasi Data:
Konsol DTS
Masuk ke Konsol DTS.
Pada panel navigasi kiri, klik Data Synchronization.
Pada pojok kiri atas, pilih wilayah tempat tugas sinkronisasi data berada.
Konsol DMS
Operasi aktual dapat berbeda tergantung pada mode dan tata letak Konsol DMS. Untuk informasi selengkapnya, lihat Simple mode dan Sesuaikan tata letak dan gaya Konsol DMS.
Masuk ke Konsol DMS.
Pada bilah navigasi atas, arahkan kursor ke Data + AI lalu pilih DTS (DTS) > Data Synchronization.
Dari daftar drop-down di sebelah kanan Data Synchronization Tasks, pilih wilayah tempat instansi sinkronisasi data berada.
Langkah 2: Buat dan konfigurasikan tugas sinkronisasi maju
Klik Create Task.
(Opsional) Klik New Configuration Page di pojok kanan atas.
CatatanLewati langkah ini jika tombol Back to Previous Version ditampilkan. Versi baru halaman konfigurasi direkomendasikan.
Konfigurasikan database sumber dan tujuan dengan parameter berikut.
Database sumber
Parameter Deskripsi Task Name DTS secara otomatis menghasilkan nama. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama unik tidak diperlukan. Select Existing Connection Jika instans database terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi parameter lainnya secara otomatis. Untuk informasi selengkapnya, lihat Manage database connections. Jika instans belum terdaftar, konfigurasikan parameter di bawah ini. Database Type Pilih MongoDB. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah instans ApsaraDB for MongoDB sumber. Replicate Data Across Alibaba Cloud Accounts Pilih No. Architecture Pilih Replica Set. Migration Method Pilih Oplog. Instance ID Pilih instans ApsaraDB for MongoDB sumber. Authentication Database Database yang menyimpan kredensial akun. Default: admin.Database Account Akun database instans sumber. Akun harus memiliki izin baca pada database sumber, database config, databaseadmin, dan databaselocal. Untuk informasi selengkapnya, lihat Use DMS to manage database accounts.Database Password Kata sandi untuk akun database. Encryption Pilih Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL sesuai kebutuhan Anda. Opsi yang tersedia bergantung pada pengaturan 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 Jika instans database terdaftar di DTS, pilih dari daftar drop-down. DTS akan mengisi parameter lainnya secara otomatis. Untuk informasi selengkapnya, lihat Manage database connections. Jika instans belum terdaftar, konfigurasikan parameter di bawah ini. Database Type Pilih MongoDB. Access Method Pilih Alibaba Cloud Instance. Instance Region Pilih wilayah instans ApsaraDB for MongoDB tujuan. Replicate Data Across Alibaba Cloud Accounts Pilih No. Architecture Pilih Replica Set. Instance ID Pilih instans ApsaraDB for MongoDB tujuan. Authentication Database Database yang menyimpan kredensial akun. Default: admin.Database Account Akun database instans tujuan. Akun harus memiliki izin dbAdminAnyDatabase, izin baca dan tulis pada database tujuan, serta izin baca pada database local. Untuk informasi selengkapnya, lihat Use DMS to manage database accounts.Database Password Kata sandi untuk akun database. Encryption Pilih Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL sesuai kebutuhan Anda. Opsi yang tersedia bergantung pada pengaturan Access Method dan Architecture. Jika tujuan adalah instans ApsaraDB for MongoDB dengan Architecture diatur ke Sharded Cluster, opsi SSL-encrypted tidak tersedia. Klik Test Connectivity and Proceed.
CatatanPastikan blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan. Untuk informasi selengkapnya, lihat Add the CIDR blocks of DTS servers.
Langkah 3: Konfigurasikan objek sinkronisasi
Pada langkah Configure Objects, konfigurasikan parameter berikut.
Parameter Deskripsi Synchronization Types Incremental Data Synchronization dipilih secara default. Pilih juga Schema Synchronization dan Full Data Synchronization. Processing Mode of Conflicting Tables Precheck and Report Errors: Memeriksa koleksi dengan nama identik di sumber dan tujuan. Jika nama identik ditemukan, kesalahan dikembalikan dan tugas tidak dapat dimulai. Untuk menyelesaikan konflik, gunakan object name mapping untuk mengganti nama koleksi. Ignore Errors and Proceed: Melewatkan pemeriksaan nama identik. Jika tujuan memiliki catatan dengan nilai primary key atau unique key yang sama, DTS tidak menyinkronkan catatan tersebut dan mempertahankan data yang ada. Inisialisasi data mungkin gagal, hanya kolom tertentu yang disinkronkan, atau instansi sinkronisasi data gagal. Synchronization Topology Pilih Two-way Synchronization. Exclude DDL Operations Yes: Mengecualikan operasi DDL. No: Menyinkronkan operasi DDL. Untuk menjaga stabilitas, operasi DDL hanya disinkronkan dalam arah maju. Conflict Resolution Policy Diatur ke Ignore (nilai tetap). Catatan konflik di database tujuan dipertahankan. Untuk informasi selengkapnya, lihat Conflict resolution. Capitalization of Object Names in Destination Instance Default: DTS default policy. Pilih opsi lain untuk menyesuaikan kapitalisasi nama objek dengan database sumber atau tujuan. Untuk informasi selengkapnya, lihat Specify the capitalization of object names in the destination instance. Source Objects Pilih database atau koleksi dari panel Source Objects lalu klik ikon panah kanan untuk menambahkannya ke panel Selected Objects. Selected Objects Klik kanan objek untuk mengganti namanya di database tujuan atau memetakannya ke objek tujuan tertentu. Untuk informasi selengkapnya, lihat Map object names. Untuk menghapus objek, pilih lalu klik ikon panah kiri. Untuk menyinkronkan data inkremental berdasarkan database atau koleksi, klik kanan Selected Objects lalu pilih operasi di kotak dialog yang muncul. Untuk memfilter data selama sinkronisasi data penuh, klik kanan koleksi dan konfigurasikan kondisi filter. Untuk informasi selengkapnya, lihat Specify filter conditions. Jika Anda menggunakan object name mapping untuk mengganti nama database atau koleksi, objek dependen mungkin gagal disinkronkan. Klik Next: Advanced Settings lalu konfigurasikan parameter berikut.
Parameter Deskripsi Dedicated Cluster for Task Scheduling Secara default, tugas berjalan di kluster bersama. Untuk meningkatkan stabilitas, beli kluster khusus. Untuk informasi selengkapnya, lihat What is a DTS dedicated cluster. Retry Time for Failed Connections Rentang waktu untuk mencoba ulang koneksi yang gagal. Nilai valid: 10 hingga 1440 menit. Default: 720. Atur nilai lebih besar dari 30. Jika DTS terhubung kembali dalam waktu yang ditentukan, tugas dilanjutkan. Jika tidak, tugas gagal. Jika beberapa tugas berbagi database sumber atau tujuan, waktu coba ulang terpendek yang berlaku. DTS membebankan biaya untuk instans selama masa coba ulang. Retry Time for Other Issues Rentang waktu untuk mencoba ulang operasi DDL atau DML yang gagal. Nilai valid: 1 hingga 1440 menit. Default: 10. Atur nilai lebih besar dari 10. Nilai ini harus lebih kecil dari Retry Time for Failed Connections. Enable Throttling for Full Data Synchronization Konfigurasikan Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s) untuk mengurangi beban pada server tujuan. Tersedia hanya jika Full Data Synchronization dipilih. Only one data type for primary key _id in a table of the data to be synchronized Apakah tipe data untuk primary key _idunik di setiap koleksi. Yes: DTS tidak memindai tipe data_iddan hanya menyinkronkan satu tipe data per koleksi. No: DTS memindai tipe data_iddan menyinkronkan semua data yang cocok. Atur berdasarkan data Anda. Ditampilkan hanya jika Full Data Synchronization dipilih.Enable Throttling for Incremental Data Synchronization Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s) untuk mengurangi beban pada server tujuan. Environment Tag Tag lingkungan untuk mengidentifikasi instans DTS. Opsional. Configure ETL Yes: Konfigurasikan ekstrak, transformasi, muat (ETL). Untuk informasi selengkapnya, lihat What is ETL? dan Configure ETL in a data synchronization task. No: Jangan konfigurasikan ETL. Monitoring and Alerting Yes: Konfigurasikan ambang batas peringatan dan pengaturan notifikasi untuk kegagalan tugas atau latensi sinkronisasi. Untuk informasi selengkapnya, lihat Configure monitoring and alerting. No: Jangan aktifkan peringatan. Klik Next Step: Data Verification lalu konfigurasikan verifikasi data. Untuk informasi selengkapnya, lihat Configure a data verification task.
Langkah 4: Jalankan pemeriksaan awal dan beli instans
Simpan pengaturan tugas dan jalankan pemeriksaan awal.
Untuk melihat parameter API tugas, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
Klik Next: Save Task Settings and Precheck.
CatatanDTS melakukan pemeriksaan awal sebelum memulai tugas. Tugas hanya dapat dimulai setelah lulus pemeriksaan awal.
Jika pemeriksaan awal gagal, klik View Details di sebelah item yang gagal, atasi masalahnya, lalu jalankan ulang pemeriksaan awal.
Jika peringatan dipicu: untuk item yang tidak dapat diabaikan, atasi masalahnya lalu jalankan ulang pemeriksaan awal. Untuk item yang dapat diabaikan, klik Confirm Alert Details, lalu Ignore, lalu OK, dan jalankan ulang pemeriksaan awal. Mengabaikan peringatan dapat menyebabkan inkonsistensi data.
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Pada halaman pembelian, konfigurasikan instans.
Parameter Deskripsi Billing Method Subscription: Bayar di muka untuk penggunaan jangka panjang. Pay-as-you-go: Ditagih per jam. Cocok untuk penggunaan jangka pendek. Lepaskan instans saat tidak lagi diperlukan. Resource Group Settings Kelompok sumber daya untuk instans. Default: default resource group. Untuk informasi selengkapnya, lihat What is Resource Management? Instance Class Pilih kelas instans berdasarkan kebutuhan kecepatan sinkronisasi. Untuk informasi selengkapnya, lihat Instance classes of data synchronization instances. Subscription Duration Tersedia hanya untuk Subscription. Nilai valid: 1 hingga 9 bulan, atau 1, 2, 3, atau 5 tahun. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start. Di kotak dialog, klik OK. Tugas sinkronisasi maju muncul di daftar tugas.
Langkah 5: Konfigurasikan tugas sinkronisasi balik
Tunggu hingga sinkronisasi awal selesai dan status tugas sinkronisasi maju berubah menjadi Running.
Di daftar tugas, temukan tugas sinkronisasi balik lalu klik Configure Task.
Konfigurasikan tugas sinkronisasi balik dengan mengulangi sub-langkah konfigurasi di Langkah 2 (mulai dari sub-langkah 3), Langkah 3, dan pemeriksaan awal di Langkah 4, dengan penyesuaian berikut:
CatatanTugas balik dibuat secara otomatis saat Anda membeli tugas maju. Anda tidak perlu mengklik Create Task (Langkah 2, sub-langkah 1) atau membeli instans baru (Langkah 4, sub-langkah 3 dan seterusnya).
Penting- Instans sumber dalam arah balik adalah instans tujuan dalam arah maju, dan sebaliknya. Pastikan nama database, akun, dan kata sandi dikonfigurasi sesuai. - Jangan gunakan object name mapping dalam arah balik. Jika tidak, inkonsistensi data dapat terjadi. - Instance Region tidak dapat diubah dalam arah balik. Konfigurasikan hanya parameter yang ditampilkan di konsol. - Untuk Processing Mode of Conflicting Tables, pastikan koleksi yang sudah disinkronkan ke tujuan oleh tugas maju diabaikan. - Anda tidak dapat memilih objek yang sama dari daftar Selected Objects yang digunakan oleh tugas maju. - Tugas balik mengabaikan operasi DDL.
Tunggu hingga Success Rate mencapai 100%, lalu klik Back.
Langkah 6: Verifikasi status sinkronisasi
Setelah kedua tugas sinkronisasi maju dan balik memasuki status Running, sinkronisasi data dua arah aktif. Pantau status tugas di daftar tugas.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Schema synchronization dan full data synchronization | Gratis |
| Incremental data synchronization | Dikenai biaya. Untuk informasi selengkapnya, lihat Billing overview. |
Batasan
Persyaratan database sumber dan tujuan
Sumber dan tujuan harus keduanya merupakan instans ApsaraDB for MongoDB dengan arsitektur yang sama. Sinkronisasi dua arah tidak didukung untuk database MongoDB yang dikelola sendiri atau instans dengan arsitektur berbeda.
Versi MongoDB tujuan harus sama atau lebih baru daripada versi sumber.
DTS tidak dapat menyinkronkan data dari database
admin,config, ataulocal.Database sumber tidak boleh berupa klaster Azure Cosmos DB for MongoDB atau klaster elastis Amazon DocumentDB.
DTS tidak dapat terhubung ke database MongoDB melalui titik akhir SRV.
Oplog dan change streams
Oplog harus diaktifkan pada database sumber dan harus menyimpan data log selama minimal tujuh hari. Atau, aktifkan change streams agar DTS dapat berlangganan perubahan data dalam tujuh hari terakhir. Jika tidak, sinkronisasi data mungkin gagal dan inkonsistensi atau kehilangan data dapat terjadi. Masalah yang timbul dalam kondisi seperti ini tidak dicakup oleh perjanjian tingkat layanan (SLA) DTS.
Gunakan oplog untuk mencatat perubahan data (direkomendasikan).
Change streams memerlukan MongoDB 4.0 atau lebih baru. Sinkronisasi dua arah tidak didukung saat menggunakan change streams.
Untuk klaster Amazon DocumentDB non-elastis, aktifkan change streams dan atur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster.
Batasan DDL dan skema
Selama sinkronisasi skema dan sinkronisasi data penuh, jangan mengubah skema database atau koleksi (termasuk pembaruan tipe array). Melakukannya menyebabkan kegagalan tugas atau inkonsistensi data.
Hanya selama sinkronisasi data penuh, jangan menulis data ke database sumber. Jika tidak, inkonsistensi data terjadi.
Untuk menjaga stabilitas sinkronisasi dua arah, operasi DDL hanya disinkronkan dalam arah maju. Tugas balik mengabaikan operasi DDL.
Batasan tipe data dan koleksi
Koleksi harus memiliki kendala PRIMARY KEY atau UNIQUE dengan semua bidang unik. Jika tidak, database tujuan mungkin berisi catatan data duplikat.
Satu entri data tidak boleh melebihi 16 MB. Tugas gagal jika batas ini dilampaui.
Saat mengedit koleksi di tujuan (misalnya, mengganti nama), satu tugas mendukung hingga 1.000 koleksi. Untuk lebih dari 1.000 koleksi, bagi pekerjaan ke beberapa tugas atau sinkronkan seluruh database.
Jika koleksi memiliki indeks unik atau atribut
cappedbernilaitrue, koleksi hanya mendukung penulisan single-thread tanpa replay konkuren selama sinkronisasi data inkremental. Hal ini dapat meningkatkan latensi sinkronisasi.
Integritas data dan perilaku konflik
Jika terjadi konflik primary key atau unique key saat DTS menulis ke koleksi tujuan, DTS melewatkan pernyataan tulis dan mempertahankan data tujuan yang ada.
Informasi transaksi tidak dipertahankan. Transaksi dikonversi menjadi satu catatan di database tujuan.
Indeks TTL dapat menyebabkan inkonsistensi data antara database sumber dan tujuan setelah sinkronisasi.
Database tujuan tidak boleh memiliki data dengan primary key yang sama (default:
_id) seperti database sumber. Jika tidak, kehilangan data dapat terjadi. Jika terdapat primary key duplikat, hapus data yang bertentangan di database tujuan tanpa mengganggu DTS.Menulis data dari sumber lain ke tujuan selama sinkronisasi menyebabkan inkonsistensi data. Misalnya, menggunakan DMS untuk mengeksekusi pernyataan DDL online sambil menulis dari sumber lain dapat menyebabkan kehilangan data.
Kinerja dan penyimpanan
Server yang menghosting database sumber harus memiliki bandwidth keluar yang cukup. Bandwidth yang tidak mencukupi memengaruhi kecepatan sinkronisasi.
Sinkronisasi data penuh menggunakan sumber daya baca dan tulis kedua database dan dapat meningkatkan beban server. Jadwalkan sinkronisasi selama jam sepi.
Data ditulis secara konkuren ke database tujuan selama sinkronisasi data penuh. Penyimpanan tujuan 5% hingga 10% lebih besar daripada sumber setelah sinkronisasi.
Gunakan
db.$table_name.aggregate([{ $count:"myCount"}])untuk mengkueri operasi count pada database MongoDB tujuan.
Aturan tugas sinkronisasi dua arah
Hanya salah satu dari dua tugas (maju atau balik) yang dapat menyinkronkan data penuh dan inkremental. Tugas lainnya hanya menyinkronkan data inkremental.
Data sumber tugas saat ini disinkronkan ke database tujuan hanya dalam tugas tersebut. Data yang disinkronkan tidak digunakan sebagai data sumber untuk tugas lainnya.
Jika tugas DTS gagal, dukungan teknis DTS berupaya memulihkannya dalam waktu 8 jam. Tugas mungkin dimulai ulang dan parameter tugas mungkin dimodifikasi (parameter database tidak dimodifikasi). Untuk detail parameter yang dapat dimodifikasi, lihat Modify instance parameters.