Gunakan Data Transmission Service (DTS) untuk menyinkronkan data secara berkelanjutan dari instans replica set MongoDB ke instans replica set atau kluster sharded lainnya—tanpa menghentikan database sumber Anda.
Database sumber dan tujuan yang didukung
| Source | Destination | Catatan |
|---|---|---|
| Instans replica set ApsaraDB for MongoDB | Instans replica set atau kluster sharded ApsaraDB for MongoDB | Topik ini menggunakan kombinasi ini sebagai contoh. |
| Replica set MongoDB yang dikelola sendiri pada instance Elastic Compute Service (ECS) | Replica set atau kluster sharded MongoDB yang dikelola sendiri pada instance ECS | Ikuti prosedur yang sama. |
| Replica set MongoDB yang dikelola sendiri yang terhubung melalui Express Connect, VPN Gateway, atau Smart Access Gateway (SAG) | Replica set atau kluster sharded MongoDB yang dikelola sendiri yang terhubung melalui Express Connect, VPN Gateway, atau SAG | Ikuti prosedur yang sama. |
Untuk kombinasi versi MongoDB yang didukung, lihat Ikhtisar skenario sinkronisasi data. Versi tujuan harus sama dengan atau lebih baru daripada versi sumber.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Membuat instans replica set ApsaraDB for MongoDB sumber dan instans replica set atau kluster sharded tujuan. Lihat Buat instans replica set dan Buat instans kluster sharded.
Memverifikasi bahwa instans tujuan memiliki ruang penyimpanan tersedia minimal 10% lebih besar daripada ukuran total data instans sumber.
(Untuk tujuan kluster sharded) Membuat database dan koleksi yang akan di-shard, mengonfigurasi sharding, mengaktifkan balancer, dan melakukan pre-sharding. Lihat Konfigurasi sharding untuk memaksimalkan kinerja shard.
Pre-sharding mendistribusikan data yang disinkronkan ke seluruh shard dan mencegah kesenjangan data. Jika tidak memungkinkan menambahkan kunci shard ke data sumber, lihat Sinkronisasi MongoDB (tanpa kunci shard) ke MongoDB (arsitektur kluster sharded).
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Lihat Ikhtisar penagihan. |
Topologi sinkronisasi yang didukung
Sinkronisasi satu arah satu-ke-satu
Sinkronisasi satu arah satu-ke-banyak
Sinkronisasi satu arah banyak-ke-satu
Sinkronisasi satu arah bertingkat (cascade)
Untuk detailnya, lihat Topologi sinkronisasi.
Jenis sinkronisasi
| Jenis | Apa yang disinkronkan DTS |
|---|---|
| Sinkronisasi skema | Skema objek yang dipilih dari sumber ke tujuan |
| Sinkronisasi data penuh | Data historis dari objek yang dipilih. Objek yang didukung: database dan koleksi. |
| Sinkronisasi data inkremental | Perubahan berkelanjutan setelah sinkronisasi penuh selesai. Operasi yang didukung: CREATE COLLECTION, CREATE INDEX, DROP DATABASE, DROP COLLECTION, DROP INDEX, RENAME COLLECTION, serta operasi insert, update, dan delete tingkat dokumen. Database yang dibuat setelah tugas dimulai tidak termasuk. Transaksi dikonversi menjadi satu catatan—konteks transaksi tidak dipertahankan.Gunakan oplogTugas DTS tidak menyinkronkan data inkremental dari database yang dibuat setelah tugas mulai berjalan. DTS menyinkronkan data inkremental yang dihasilkan oleh operasi berikut:
Gunakan change streamsDTS menyinkronkan data inkremental yang dihasilkan oleh operasi berikut:
|
Batasan
Tinjau batasan berikut sebelum mengonfigurasi tugas. Pelanggaran terhadap batasan ini dapat menyebabkan kegagalan tugas atau inkonsistensi data.
Persyaratan database sumber
| Batasan | Detail |
|---|---|
| Bandwidth keluar | Server sumber harus memiliki bandwidth keluar yang mencukupi. Bandwidth yang tidak mencukupi akan memperlambat sinkronisasi. |
| Kunci primer atau kunci unik | Koleksi harus memiliki kendala PRIMARY KEY atau UNIQUE tanpa nilai bidang duplikat. Jika tidak, tujuan mungkin berisi catatan duplikat. |
| Jumlah koleksi (saat mengedit koleksi tujuan) | Maksimal 1.000 koleksi per tugas jika Anda memilih koleksi sebagai objek sinkronisasi dan berencana mengganti namanya di tujuan. Untuk koleksi lebih banyak, jalankan beberapa tugas atau sinkronkan pada tingkat database. |
| Ukuran dokumen tunggal | Tidak boleh melebihi 16 MB. Dokumen yang lebih besar menyebabkan kegagalan tugas. |
| Sumber yang tidak didukung | Kluster Azure Cosmos DB for MongoDB dan kluster elastis Amazon DocumentDB tidak didukung. |
| oplog atau change streams | Oplog harus diaktifkan dan menyimpan log minimal selama 7 hari. Atau, aktifkan change streams yang mencakup 7 hari terakhir. Jika kedua kondisi ini tidak terpenuhi, DTS mungkin gagal menangkap perubahan, yang dapat menyebabkan kehilangan data—tidak dicakup oleh SLA DTS. Gunakan oplog bila memungkinkan; change streams memerlukan MongoDB 4.0 atau lebih baru dan tidak mendukung sinkronisasi dua arah. Untuk kluster Amazon DocumentDB non-elastis, aktifkan change streams dan atur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster. |
| Indeks TTL | Koleksi dengan indeks TTL tidak dapat disinkronkan. Upaya melakukannya dapat menyebabkan inkonsistensi data. |
| Perubahan skema selama sinkronisasi | Jangan mengubah skema database atau koleksi (termasuk pembaruan tipe array) saat sinkronisasi skema atau sinkronisasi data penuh sedang berjalan. |
| Penulisan selama sinkronisasi penuh saja | Jangan menulis ke database sumber selama sinkronisasi data penuh jika Anda tidak menjalankan sinkronisasi inkremental. |
Persyaratan database tujuan
| Batasan | Detail |
|---|---|
| Kluster sharded: dokumen yatim (orphaned documents) | Hapus semua dokumen yatim sebelum memulai. Dokumen yatim menurunkan kinerja dan dapat menyebabkan konflik _id atau kegagalan tugas. |
| Kluster sharded: kunci shard | Tambahkan kunci shard ke data sumber sebelum memulai. Selama sinkronisasi, operasi INSERT harus menyertakan kunci shard; operasi UPDATE tidak boleh mengubah kunci shard. |
| Replica set: titik akhir koneksi | Jika terhubung melalui Express Connect, VPN Gateway, SAG, alamat IP publik, atau Cloud Enterprise Network (CEN), atur Domain Name or IP dan Port Number ke IP dan port node primer, atau gunakan titik akhir berdaya tinggi. Lihat Buat tugas DTS dengan database MongoDB berdaya tinggi. Jika terhubung melalui instance ECS yang dikelola sendiri, atur Port Number ke port node primer. |
| Indeks unik atau koleksi capped | Koleksi dengan indeks unik atau capped: true hanya mendukung penulisan single-thread. Hal ini menonaktifkan replay konkuren selama sinkronisasi inkremental dan dapat meningkatkan latensi. |
| Database yang dikecualikan | DTS tidak menyinkronkan database admin atau local. |
| Konflik kunci primer | Pastikan tujuan tidak memiliki dokumen dengan _id yang sama dengan sumber. Jika ada konflik, hapus dokumen yang bertentangan dari tujuan sebelum memulai tugas. |
Batasan umum
| Batasan | Detail |
|---|---|
| Dampak kinerja | Sebelum menyinkronkan data, evaluasi dampaknya terhadap kinerja database sumber dan tujuan. Kami menyarankan agar Anda menyinkronkan data selama jam sepi. Selama sinkronisasi data penuh, DTS menggunakan sumber daya baca dan tulis database sumber dan tujuan, yang dapat meningkatkan beban server database. |
| Ekspansi penyimpanan | Penulisan konkuren selama sinkronisasi penuh menyebabkan fragmentasi koleksi. Penyimpanan tujuan akhirnya 5%–10% lebih besar daripada sumber. |
| Penulisan dari sumber lain | Jangan menulis ke tujuan dari sumber lain (misalnya, menggunakan Data Management (DMS) untuk operasi DDL Online) selama sinkronisasi. Penulisan eksternal konkuren dapat menyebabkan kehilangan data. |
| Sintaks kueri count | Gunakan db.$table_name.aggregate([{ $count:"myCount"}]) untuk menghitung dokumen di tujuan. |
| Pemulihan tugas | Jika tugas DTS gagal, dukungan DTS mencoba memulihkannya dalam waktu 8 jam. Tugas dapat dimulai ulang dan parameter tugas dapat dimodifikasi selama pemulihan. Parameter database tidak dimodifikasi. |
| Waktu coba ulang untuk koneksi gagal | Rentang valid: 10–1.440 menit. Default: 720 menit. Atur ke nilai lebih dari 30 menit. Jika koneksi dipulihkan dalam periode ini, DTS melanjutkan tugas. Jika beberapa tugas berbagi sumber atau tujuan yang sama, waktu coba ulang terpendek yang berlaku. Biaya instance DTS tetap berjalan selama percobaan ulang. |
| Waktu coba ulang untuk masalah lain | Rentang valid: 1–1.440 menit. Default: 10 menit. Atur ke nilai lebih dari 10 menit. Harus kurang dari Waktu Coba Ulang untuk Koneksi Gagal. |
Batasan MongoDB yang dikelola sendiri
Jika database sumber adalah instance MongoDB yang dikelola sendiri, perhatikan hal berikut:
| Batasan | Detail |
|---|---|
| Alih bencana primer/sekunder | Jika terjadi failover primer atau sekunder pada sumber saat tugas sedang berjalan, tugas tersebut akan gagal. |
| Akurasi latensi sinkronisasi | DTS menghitung latensi berdasarkan stempel waktu data terbaru yang disinkronkan di tujuan dan stempel waktu saat ini di sumber. Jika tidak ada pembaruan di sumber dalam jangka waktu lama, latensi yang dilaporkan mungkin tidak akurat. Untuk mengatur ulang pembacaan latensi, lakukan pembaruan di sumber. Jika Anda memilih seluruh database sebagai objek sinkronisasi, Anda dapat membuat tabel heartbeat yang diperbarui setiap detik. |
Konfigurasi tugas sinkronisasi data
Langkah 1: Buka halaman Tugas Sinkronisasi Data
Masuk ke Konsol Data Management (DMS).
Di bilah navigasi atas, klik Data + AI.
Di panel navigasi kiri, pilih DTS (DTS) > Data Synchronization.
Langkah-langkah dapat berbeda tergantung mode konsol DMS. Lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS. Anda juga dapat langsung membuka halaman Tugas Sinkronisasi Data di konsol DTS baru.
Langkah 2: Pilih wilayah
Di sisi kanan Tugas Sinkronisasi Data, pilih wilayah tempat instance sinkronisasi berada.
Di konsol DTS baru, pilih wilayah dari bilah navigasi atas.
Langkah 3: Konfigurasi database sumber dan tujuan
Klik Create Task. Di halaman Create Task, konfigurasikan parameter yang dijelaskan dalam tabel berikut.
Setelah mengonfigurasi database sumber dan tujuan, baca Limits yang ditampilkan di halaman sebelum melanjutkan. Melewati langkah ini dapat menyebabkan kegagalan tugas atau inkonsistensi data.
Database sumber
| Parameter | Deskripsi |
|---|---|
| Task Name | Nama untuk tugas DTS. DTS menghasilkan nama default. Tentukan nama deskriptif untuk membantu mengidentifikasi tugas. Nama tidak perlu unik. |
| Select a DMS database instance | Pilih instance database yang sudah ada untuk mengisi parameter secara otomatis, atau biarkan kosong dan konfigurasikan parameter berikut secara manual. |
| Database Type | Pilih MongoDB. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat instance sumber berada. |
| Replicate Data Across Alibaba Cloud Accounts | Pilih No untuk sinkronisasi dalam akun yang sama. |
| Architecture | Pilih Replica Set. |
| Instance ID | ID instance ApsaraDB for MongoDB sumber. |
| Authentication Database | Database yang menyimpan kredensial akun. Default: admin. |
| Database Account | Akun dengan akses baca ke database sumber, database config, database admin, dan database local. |
| Database Password | Kata sandi untuk akun database. |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Parameter ini hanya berlaku untuk instance Replica Set. Jika Anda memilih SSL-encrypted untuk replica set yang dikelola sendiri, Anda dapat mengunggah sertifikat CA untuk memverifikasi koneksi. |
Database tujuan
| Parameter | Deskripsi |
|---|---|
| Select a DMS database instance | Pilih instance database yang sudah ada untuk mengisi parameter secara otomatis, atau biarkan kosong dan konfigurasikan parameter berikut secara manual. |
| Database Type | Pilih MongoDB. |
| Access Method | Pilih Alibaba Cloud Instance. |
| Instance Region | Wilayah tempat instance tujuan berada. |
| Architecture | Arsitektur instance tujuan (Replica Set atau Sharded Cluster). |
| Instance ID | ID instance ApsaraDB for MongoDB tujuan. |
| Authentication Database | Database yang menyimpan kredensial akun. Default: admin. |
| Database Account | Akun dengan izin dbAdminAnyDatabase, akses baca dan tulis ke database tujuan, dan akses baca ke database local. |
| Database Password | Kata sandi untuk akun database. |
| Encryption | Pilih Non-encrypted atau SSL-encrypted. Parameter ini hanya berlaku untuk instance Replica Set. Jika Anda memilih SSL-encrypted untuk replica set yang dikelola sendiri, Anda dapat mengunggah sertifikat CA untuk memverifikasi koneksi. |
Langkah 4: Uji konektivitas
Klik Test Connectivity and Proceed.
DTS secara otomatis menambahkan blok CIDR servernya ke daftar putih instance database Alibaba Cloud atau ke aturan grup keamanan database yang di-host di ECS. Untuk database yang dikelola sendiri di pusat data lokal atau yang di-host oleh penyedia pihak ketiga, tambahkan secara manual blok CIDR server DTS ke daftar putih database. Lihat Tambahkan blok CIDR server DTS.
Menambahkan blok CIDR DTS ke daftar putih atau aturan grup keamanan Anda menimbulkan risiko keamanan. Sebelum melanjutkan, ambil tindakan pencegahan: gunakan kredensial kuat, batasi port yang terbuka, autentikasi panggilan API, tinjau aturan daftar putih secara berkala, dan hapus blok CIDR yang tidak sah. Untuk keamanan lebih tinggi, sambungkan melalui Express Connect, VPN Gateway, atau SAG alih-alih menggunakan akses IP publik.
Langkah 5: Pilih objek dan konfigurasi pengaturan
Konfigurasikan parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Synchronization Types | Pilih Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Incremental data synchronization dipilih secara default. Schema dan full sync dijalankan terlebih dahulu; incremental sync dimulai setelah full sync selesai. Untuk informasi selengkapnya, lihat Synchronization types. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors: memeriksa koleksi dengan nama identik di sumber dan tujuan sebelum memulai. Jika terdapat konflik, task tidak akan dimulai. Untuk menyelesaikan konflik penamaan, gunakan fitur pemetaan nama objek. Lihat Rename an object to be synchronized. Ignore Errors and Proceed: melewati pemeriksaan konflik. Jika suatu record di tujuan memiliki nilai primary key atau unique key yang sama dengan record di sumber, record di tujuan tetap dipertahankan dan record dari sumber dilewati. Hal ini dapat menyebabkan ketidakkonsistenan data. |
| Synchronization Topology | Pilih One-way Synchronization. |
| Capitalization of Object Names in Destination Instance | Mengatur kapitalisasi nama database dan koleksi di instans tujuan. Default: DTS default policy. Lihat Specify the capitalization of object names. |
| Source Objects | Pilih database atau koleksi yang akan disinkronkan, lalu klik |
| Selected Objects | Untuk mengganti nama satu objek, klik kanan objek tersebut. Untuk mengganti nama beberapa objek sekaligus, klik Batch Edit. Lihat Map object names. Untuk memfilter data menggunakan kondisi WHERE, klik kanan suatu objek. Lihat Set filter conditions. |
Langkah 6: Konfigurasi pengaturan lanjutan
Klik Next: Advanced Settings dan konfigurasikan hal berikut:
Verifikasi data
Untuk pengaturan verifikasi data, lihat Konfigurasi verifikasi data.
Pengaturan lanjutan
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menggunakan kluster bersama. Untuk stabilitas lebih tinggi, beli kluster khusus. Lihat Apa itu kluster khusus DTS. |
| Set Alerts | No: tanpa notifikasi. Yes: konfigurasi peringatan. Tentukan ambang batas latensi dan kontak notifikasi. Lihat Konfigurasi pemantauan dan peringatan. |
| Retry Time for Failed Connections | Berapa lama DTS mencoba ulang setelah kegagalan koneksi. Rentang: 10–1.440 menit. Default: 720 menit. Atur ke nilai lebih dari 30 menit. Jika koneksi dipulihkan dalam periode ini, DTS melanjutkan tugas. Jika beberapa tugas berbagi sumber atau tujuan yang sama, waktu coba ulang terpendek yang berlaku. Biaya instance DTS tetap berjalan selama percobaan ulang. |
| Retry Time for Other Issues | Berapa lama DTS mencoba ulang setelah kegagalan DDL atau DML. Rentang: 1–1.440 menit. Default: 10 menit. Atur ke nilai lebih dari 10 menit. Harus kurang dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Membatasi beban baca/tulis pada sumber dan tujuan selama sinkronisasi data penuh. Konfigurasikan Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s). Hanya terlihat jika Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Membatasi beban selama sinkronisasi inkremental. Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Tag untuk mengidentifikasi instance DTS. Opsional. |
| Configure ETL | Yes: aktifkan ekstrak, transformasi, dan muat (ETL) dan masukkan pernyataan pemrosesan data. Lihat Konfigurasi ETL. No: lewati ETL. Untuk ikhtisar ETL, lihat Apa itu ETL?. |
Langkah 7: Simpan pengaturan dan jalankan pemeriksaan awal
Klik Next: Save Task Settings and Precheck.
Untuk melihat pratinjau parameter OpenAPI untuk tugas ini, arahkan kursor ke tombol dan klik Preview OpenAPI parameters sebelum melanjutkan.
DTS menjalankan pemeriksaan awal sebelum tugas dimulai. Jika pemeriksaan awal gagal:
Klik View Details di samping setiap item yang gagal, selesaikan masalahnya, lalu klik Precheck Again.
Untuk item peringatan yang dapat diabaikan dengan aman, klik Confirm Alert Details > Ignore > OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan inkonsistensi data.
Langkah 8: Tunggu hingga pemeriksaan awal selesai
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Langkah 9: Beli instance sinkronisasi
Konfigurasikan 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. Lebih fleksibel untuk penggunaan jangka pendek. Lepaskan instance saat tidak lagi diperlukan untuk menghentikan biaya. |
| Resource Group Settings | Kelompok sumber daya untuk instance. Default: default resource group. Lihat Apa itu Resource Management?. |
| Instance Class | Kecepatan sinkronisasi bervariasi berdasarkan kelas instance. Pilih berdasarkan volume data dan persyaratan latensi Anda. Lihat Kelas instance instansi sinkronisasi data. |
| Subscription Duration | Hanya tersedia untuk metode penagihan Subscription. Opsi: 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. |
Langkah 10: Mulai tugas
Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start.
Di dialog konfirmasi, klik OK.
Tugas muncul di daftar tugas. Pantau perkembangannya dari sana.
Langkah selanjutnya
FAQ
Mengapa latensi tugas dan inkonsistensi data terjadi meskipun tidak ada data yang ditulis ke database?
Penyebab: Konflik antara mekanisme penghapusan otomatis indeks TTL di koleksi MongoDB dan mekanisme sinkronisasi data DTS dapat menyebabkan latensi dan inkonsistensi data dalam tugas sinkronisasi atau migrasi.
Operasi DELETE yang terlewat selama penulisan inkremental mengurangi efisiensi: Saat indeks TTL di instance sumber menghapus data yang kedaluwarsa, ia menghasilkan catatan DELETE di Oplog. DTS kemudian menyinkronkan operasi DELETE ini. Jika indeks TTL di instance tujuan telah menghapus data yang sama, operasi DELETE dari DTS tidak akan menemukan data untuk dihapus. Mesin MongoDB kemudian mengembalikan jumlah baris yang terpengaruh yang tidak sesuai harapan. Hal ini memicu proses penanganan pengecualian dan mengurangi efisiensi migrasi.
Inkonsistensi data akibat penghapusan asinkron data yang kedaluwarsa: Indeks TTL tidak menghapus data secara real time. Data yang kedaluwarsa mungkin masih ada di instance sumber saat sudah dihapus di instance tujuan. Hal ini menyebabkan inkonsistensi data.
Contoh:
Oplog atau ChangeStream MongoDB hanya mencatat bidang yang diperbarui untuk operasi UPDATE. Tidak mencatat dokumen lengkap sebelum dan sesudah pembaruan. Oleh karena itu, jika operasi UPDATE tidak menemukan data target di tujuan, DTS mengabaikan operasi tersebut.
Waktu
Instance sumber
Instance tujuan
1
Layanan memasukkan data
2
DTS menyinkronkan operasi INSERT
3
Data telah kedaluwarsa tetapi belum dihapus oleh indeks TTL
4
Layanan memperbarui data (misalnya, memperbarui bidang indeks TTL untuk mengubah waktu kedaluwarsa)
5
Indeks TTL menghapus data
6
DTS menyinkronkan UPDATE, tetapi data tidak ditemukan. Operasi diabaikan.
Akibatnya, dokumen ini hilang dari instance MongoDB tujuan.
Solusi: Anda perlu sementara memodifikasi waktu kedaluwarsa indeks TTL di tujuan selama sinkronisasi atau migrasi untuk memastikan efisiensi dan konsistensi. Untuk informasi lebih lanjut, lihat Praktik terbaik untuk menyinkronkan/migrasi koleksi dengan indeks TTL saat MongoDB menjadi sumber.