Layanan Transmisi Data (DTS) mendukung sinkronisasi satu arah dari instans kluster sharded ApsaraDB for MongoDB ke instans set replika atau kluster sharded ApsaraDB for MongoDB. Topik ini menjelaskan cara mengonfigurasi tugas sinkronisasi tersebut.
Jalur sinkronisasi yang didukung
| Arsitektur sumber | Arsitektur tujuan | Didukung |
|---|---|---|
| Kluster sharded | Set replika | Ya |
| Kluster sharded | Kluster sharded | Ya |
DTS hanya mendukung sinkronisasi data satu arah antara dua instans kluster sharded ApsaraDB for MongoDB. DTS tidak mendukung sinkronisasi data satu arah di antara beberapa instans ApsaraDB for MongoDB.
Penagihan
| Jenis sinkronisasi | Biaya |
|---|---|
| Sinkronisasi skema dan sinkronisasi data penuh | Gratis |
| Sinkronisasi data inkremental | Dikenai biaya. Untuk informasi selengkapnya, lihat Ikhtisar penagihan. |
Jenis sinkronisasi
| Jenis | Deskripsi |
|---|---|
| Sinkronisasi skema | DTS menyinkronkan skema objek yang dipilih dari sumber ke instans tujuan. |
| Sinkronisasi data penuh | DTS menyinkronkan data historis dari objek yang dipilih. Objek yang didukung: database dan koleksi. |
| Sinkronisasi data inkremental | DTS menyinkronkan perubahan data berkelanjutan dari sumber ke instans tujuan. |
Operasi inkremental yang didukung
DTS hanya menyinkronkan data inkremental dari database yang sudah ada saat tugas dimulai. Database yang dibuat setelah tugas dimulai tidak disinkronkan.
Saat menggunakan oplog:
CREATE COLLECTIONdanCREATE INDEXDROP DATABASE,DROP COLLECTION, danDROP INDEXRENAME COLLECTIONOperasi insert, update, dan delete pada dokumen
Hanya perintah $set yang dijalankan secara sinkron selama sinkronisasi data inkremental.Saat menggunakan change streams:
DROP DATABASEdanDROP COLLECTIONRENAME COLLECTIONOperasi insert, update, dan delete pada dokumen
Hanya perintah $set yang dijalankan secara sinkron selama sinkronisasi data inkremental.Prasyarat
Sebelum memulai, pastikan bahwa:
Instans ApsaraDB for MongoDB tujuan telah dibuat. Untuk informasi selengkapnya, lihat Buat instans set replika atau Buat instans kluster sharded.
Disarankan menggunakan instans tujuan yang memiliki ruang penyimpanan tersedia minimal 10% lebih besar daripada ukuran total data di instans sumber.
Titik akhir telah ditetapkan untuk semua node shard di instans kluster sharded sumber, dan semua node shard menggunakan akun serta kata sandi yang sama. Untuk informasi selengkapnya, lihat Ajukan titik akhir untuk shard.
Untuk versi instans yang didukung, lihat Ikhtisar skenario sinkronisasi data.
Jika tujuannya adalah instans kluster sharded, lengkapi langkah-langkah berikut sebelum memulai tugas DTS:
Tanpa sinkronisasi skema: Buat secara manual database dan koleksi yang akan disharding, konfigurasikan sharding data, aktifkan balancer, dan lakukan pre-sharding. Untuk informasi selengkapnya, lihat Konfigurasikan sharding untuk memaksimalkan kinerja shard.
Dengan sinkronisasi skema: Setelah sinkronisasi skema selesai, aktifkan balancer dan lakukan pre-sharding. Untuk informasi selengkapnya, lihat FAQ.
Mengonfigurasi sharding mendistribusikan data yang disinkronkan ke berbagai shard guna memaksimalkan kinerja kluster sharded. Mengaktifkan balancer dan melakukan pre-sharding juga mencegah kesenjangan data.
Batasan
Persyaratan database sumber dan tujuan
| Batasan | Detail |
|---|---|
| Bandwidth | Server database sumber harus memiliki bandwidth outbound yang mencukupi. Bandwidth yang tidak mencukupi akan mengurangi kecepatan sinkronisasi. |
| Batasan unik | Koleksi yang akan disinkronkan harus memiliki batasan primary key atau unique key dengan semua field bersifat unik. Jika tidak, tujuan mungkin berisi catatan duplikat. |
_id uniqueness | Field _id di setiap koleksi yang disinkronkan harus unik. Jika tidak, ketidakkonsistenan data dapat terjadi. |
| Batas koleksi | Jika Anda memilih koleksi sebagai objek sinkronisasi dan perlu mengedit koleksi di database tujuan, seperti mengganti namanya, satu tugas dapat menyinkronkan maksimal 1.000 koleksi. Melebihi batas ini menyebabkan error permintaan. Konfigurasikan beberapa tugas secara batch, atau sinkronkan seluruh database sebagai gantinya. |
| Ukuran dokumen | Satu dokumen tidak boleh melebihi 16 MB. Dokumen yang lebih besar menyebabkan tugas gagal. |
| Sumber yang tidak didukung | Kluster Azure Cosmos DB for MongoDB dan kluster elastis Amazon DocumentDB tidak didukung sebagai database sumber. |
| Node Mongos | Jumlah node mongos di kluster sharded MongoDB sumber tidak boleh melebihi 10. |
| Akses kluster sharded yang dikelola sendiri | Jika sumbernya adalah kluster sharded MongoDB yang dikelola sendiri, atur Access Method ke Express Connect, VPN Gateway, atau Smart Access Gateway atau Cloud Enterprise Network (CEN). |
| Scaling | Database kluster sharded MongoDB dalam tugas DTS yang sedang berjalan tidak dapat di-scale. Melakukan scaling selama tugas berlangsung menyebabkan tugas gagal. |
| Indeks TTL | Jika sumber berisi indeks TTL, ketidakkonsistenan data dapat terjadi antara sumber dan tujuan setelah sinkronisasi. |
| Dokumen yatim | Tidak boleh ada dokumen orphaned di database sumber atau tujuan. Kehadirannya dapat menyebabkan ketidakkonsistenan data atau kegagalan tugas. Untuk informasi selengkapnya, lihat Glosarium MongoDB dan Bagaimana cara menghapus dokumen orphaned dari database MongoDB yang dideploy dalam arsitektur kluster sharded? |
oplog dan change streams:
Database sumber harus memiliki oplog yang diaktifkan dan menyimpan data log minimal selama 7 hari, atau memiliki change streams yang diaktifkan dengan riwayat perubahan data minimal selama 7 hari. Tanpa hal ini, DTS mungkin gagal memperoleh perubahan data, sehingga menyebabkan kegagalan sinkronisasi atau kehilangan data. Masalah yang terjadi dalam kondisi seperti ini tidak dicakup oleh perjanjian tingkat layanan (SLA) DTS.
Gunakan oplog untuk mencatat perubahan data di database sumber (direkomendasikan daripada change streams).
Change streams memerlukan MongoDB 4.0 atau versi lebih baru dan tidak mendukung sinkronisasi dua arah.
Jika sumbernya adalah kluster Amazon DocumentDB non-elastis, Anda harus mengaktifkan change streams dan mengatur Migration Method ke ChangeStream dan Architecture ke Sharded Cluster.
Balancer:
Pastikan balancer MongoDB database sumber dinonaktifkan selama sinkronisasi data penuh. Jangan aktifkan balancer hingga semua sinkronisasi data penuh selesai dan sinkronisasi data inkremental dimulai. Menjalankan balancer selama sinkronisasi penuh dapat menyebabkan ketidakkonsistenan data. Untuk informasi selengkapnya, lihat Kelola balancer ApsaraDB for MongoDB.
Jika balancer database sumber diaktifkan untuk menyeimbangkan data, tugas DTS mungkin tertunda.
Perubahan skema selama sinkronisasi:
Jangan memodifikasi skema database atau koleksi, termasuk pembaruan tipe array, selama sinkronisasi skema atau sinkronisasi data penuh. Melakukannya dapat menyebabkan tugas gagal atau menghasilkan ketidakkonsistenan data.
Penulisan selama sinkronisasi penuh:
Jangan menulis ke database sumber selama sinkronisasi data penuh saja. Melakukannya menyebabkan ketidakkonsistenan data.
Batasan lainnya
DTS tidak dapat menyinkronkan data dari database
admin,config, ataulocal.Versi MongoDB tujuan harus sama dengan atau lebih baru daripada versi sumber. Versi tujuan yang lebih lama dapat menyebabkan masalah kompatibilitas.
Jika tujuannya adalah instans set replika:
Jika terhubung melalui Express Connect, VPN Gateway, Smart Access Gateway, Alamat IP publik, atau Cloud Enterprise Network (CEN), atur Domain Name or IP dan Port Number ke alamat IP dan port node primary, atau konfigurasikan titik akhir high-availability. Untuk informasi selengkapnya, lihat Buat tugas DTS dengan database MongoDB high-availability sebagai sumber atau tujuan.
Jika terhubung melalui database yang dikelola sendiri di ECS, atur Port Number ke nomor port node primary.
Jika tujuannya adalah kluster sharded dengan sharding data yang sudah dikonfigurasi: Jangan pilih Schema Synchronization pada langkah Configure Objects. Melakukannya dapat menyebabkan ketidakkonsistenan data atau kegagalan tugas akibat konflik shard.
Tambahkan kunci shard ke semua data yang akan disinkronkan di database sumber sebelum memulai tugas. Selama sinkronisasi, operasi
INSERTharus menyertakan kunci shard, dan operasiUPDATEtidak boleh memodifikasi kunci shard.Informasi transaksi tidak dipertahankan. Transaksi dikonversi menjadi catatan individual di database tujuan.
Jika terjadi konflik primary key atau unique key saat DTS menulis ke koleksi tujuan, DTS melewati penulisan tersebut dan mempertahankan catatan yang sudah ada di tujuan.
Disarankan menyinkronkan data selama jam sepi. Selama sinkronisasi data penuh, DTS menggunakan sumber daya baca dan tulis dari database sumber dan tujuan. Hal ini dapat meningkatkan beban pada server database.
Selama sinkronisasi data penuh, operasi
INSERTkonkuren menyebabkan fragmentasi di koleksi tujuan. Setelah sinkronisasi penuh selesai, ruang penyimpanan tujuan mungkin lebih besar daripada sumber.Jika koleksi tujuan memiliki indeks unik atau atribut
cappeddiatur ketrue, koleksi tersebut hanya mendukung penulisan single-threaded selama sinkronisasi inkremental. Hal ini dapat meningkatkan latensi sinkronisasi.Penulisan konkuren ke database tujuan menyebabkan penyimpanan tujuan 5%–10% lebih besar daripada ukuran data sumber.
Untuk menghitung jumlah baris di database MongoDB tujuan, gunakan:
db.$table_name.aggregate([{ $count:"myCount"}]).Pastikan database MongoDB tujuan tidak berisi dokumen dengan primary key (
_id) yang sama dengan sumber. Jika ada duplikat, hapus dari tujuan tanpa menghentikan tugas DTS.Jika tugas DTS gagal, dukungan teknis DTS berusaha memulihkannya dalam waktu 8 jam. Selama pemulihan, tugas mungkin dimulai ulang dan parameter tugas mungkin dimodifikasi. Parameter database tidak dimodifikasi. Untuk parameter yang mungkin diubah, lihat bagian "Modifikasi parameter instans" pada topik Modifikasi parameter instans DTS.
Hapus dokumen orphaned
Hapus semua dokumen orphaned dari database MongoDB sumber sebelum memulai tugas sinkronisasi.
Dokumen orphaned di sumber dapat menurunkan kinerja sinkronisasi, menghasilkan nilai _id duplikat, dan menyebabkan data yang tidak diinginkan disinkronkan.
Instans ApsaraDB for MongoDB
Menjalankan skrip pembersihan pada instans ApsaraDB for MongoDB dengan versi utama sebelum 4.2 atau versi minor sebelum 4.0.6 akan menyebabkan kesalahan. Untuk memeriksa versi, lihat Catatan rilis versi minor MongoDB. Untuk meningkatkan versi, lihat Peningkatan versi utama suatu instans dan Pembaruan versi minor suatu instans.
MongoDB 4.4 dan versi lebih baru
Buat file JavaScript bernama
cleanupOrphaned.jsdi server yang dapat terhubung ke instans kluster sharded.Skrip ini menghapus dokumen orphaned dari semua koleksi di beberapa database di berbagai shard. Untuk menargetkan koleksi tertentu, modifikasi parameter dalam skrip.
Parameter Deskripsi shardNamesID shard yang akan dibersihkan. Temukan di bagian Shard List pada halaman Basic Information instans kluster sharded. Contoh: d-bp15a3796d3a****.databasesToProcessNama database tempat dokumen orphaned akan dihapus. // Nama-nama shard. var shardNames = ["shardName1", "shardName2"]; // Database tempat Anda ingin menghapus dokumen orphaned. var databasesToProcess = ["database1", "database2", "database3"]; shardNames.forEach(function(shardName) { // Telusuri database yang ditentukan. databasesToProcess.forEach(function(dbName) { var dbInstance = db.getSiblingDB(dbName); // Dapatkan nama semua koleksi dari database yang ditentukan. var collectionNames = dbInstance.getCollectionNames(); // Telusuri semua koleksi. collectionNames.forEach(function(collectionName) { // Nama lengkap koleksi. var fullCollectionName = dbName + "." + collectionName; // Bangun perintah cleanupOrphaned. var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName } }; // Jalankan perintah cleanupOrphaned. var result = db.adminCommand(command); if (result.ok) { print("Membersihkan dokumen orphaned untuk koleksi " + fullCollectionName + " di shard " + shardName); printjson(result); } else { print("Gagal membersihkan dokumen orphaned untuk koleksi " + fullCollectionName + " di shard " + shardName); } }); }); });Perbarui parameter berikut dalam skrip:
Di direktori tempat
cleanupOrphaned.jsdisimpan, jalankan:Parameter Deskripsi <Mongoshost>Titik akhir node mongos. Format: s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Nomor port node mongos. Default: 3717.<database>Nama database otentikasi untuk akun tersebut. <username>Akun database. <password>Kata sandi untuk akun database. output.txtFile yang menyimpan hasil eksekusi. mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt
MongoDB 4.2 dan versi sebelumnya
Buat file JavaScript bernama
cleanupOrphaned.jsdi server yang dapat terhubung ke instans kluster sharded.Skrip ini menghapus dokumen orphaned dari koleksi tertentu di berbagai shard. Untuk memproses beberapa koleksi, perbarui parameter
fullCollectionNamedan jalankan skrip lagi, atau modifikasi skrip agar melakukan iterasi pada semua koleksi.Parameter Deskripsi shardNamesID shard yang akan dibersihkan. Temukan di bagian Shard List pada halaman Basic Information instans kluster sharded. Contoh: d-bp15a3796d3a****.fullCollectionNameNama lengkap koleksi yang akan dibersihkan. Format: nama database.nama koleksi.function cleanupOrphanedOnShard(shardName, fullCollectionName) { var nextKey = { }; var result; while ( nextKey != null ) { var command = { runCommandOnShard: shardName, command: { cleanupOrphaned: fullCollectionName, startingFromKey: nextKey } }; result = db.adminCommand(command); printjson(result); if (result.ok != 1 || !(result.results.hasOwnProperty(shardName)) || result.results[shardName].ok != 1 ) { print("Tidak dapat menyelesaikan saat ini: kegagalan atau timeout.") break } nextKey = result.results[shardName].stoppedAtKey; } print("cleanupOrphaned selesai untuk coll: " + fullCollectionName + " di shard: " + shardName) } var shardNames = ["shardName1", "shardName2", "shardName3"] var fullCollectionName = "database.collection" shardNames.forEach(function(shardName) { cleanupOrphanedOnShard(shardName, fullCollectionName); });Perbarui parameter berikut dalam skrip:
Di direktori tempat
cleanupOrphaned.jsdisimpan, jalankan:Parameter Deskripsi <Mongoshost>Titik akhir node mongos. Format: s-bp14423a2a51****.mongodb.rds.aliyuncs.com.<Primaryport>Nomor port node mongos. Default: 3717.<database>Nama database otentikasi untuk akun tersebut. <username>Akun database. <password>Kata sandi untuk akun database. output.txtFile yang menyimpan hasil eksekusi. mongo --host <Mongoshost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt
Database MongoDB yang dikelola sendiri
Unduh skrip
cleanupOrphaned.jsdi server yang dapat terhubung ke database MongoDB yang dikelola sendiri:wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js"Dalam file
cleanupOrphaned.js, gantitestdengan nama database tempat dokumen orphaned akan dihapus.PentingUntuk memproses beberapa database, ulangi langkah 2 dan 3 untuk setiap database.

Di setiap shard, jalankan perintah berikut untuk menghapus dokumen orphaned dari semua koleksi di database yang ditentukan:
Parameter Deskripsi <Shardhost>Alamat IP shard. <Primaryport>Port layanan node primary di shard. <database>Nama database otentikasi untuk akun tersebut. <username>Akun yang digunakan untuk login ke database MongoDB yang dikelola sendiri. <password>Kata sandi yang digunakan untuk login ke database MongoDB yang dikelola sendiri. mongo --host <Shardhost> --port <Primaryport> --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.jsContoh: Untuk database MongoDB yang dikelola sendiri dengan tiga shard, jalankan perintah sekali per shard:
mongo --host 172.16.1.10 --port 27018 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js mongo --host 172.16.1.11 --port 27021 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js mongo --host 172.16.1.12 --port 27024 --authenticationDatabase admin -u dtstest -p 'Test123456' cleanupOrphaned.js
Konfigurasikan tugas sinkronisasi
Prosedur berikut mengonfigurasi tugas DTS sebelum membeli instans DTS. Saat Anda mengonfigurasi tugas terlebih dahulu, Anda tidak perlu menentukan jumlah shard di kluster sharded sumber. Jika Anda membeli instans DTS sebelum mengonfigurasi tugas, tentukan jumlah shard pada saat pembelian.
Langkah 1: Buka halaman sinkronisasi data
Gunakan salah satu konsol berikut:
Konsol DTS
Login ke Konsol DTS.
Di panel navigasi kiri, klik Data Synchronization.
Di pojok kiri atas, pilih wilayah tempat tugas sinkronisasi berada.
Konsol Layanan Manajemen Data (DMS)
Langkah aktual dapat berbeda tergantung pada mode dan tata letak konsol DMS. Untuk informasi selengkapnya, lihat Mode simple dan Sesuaikan tata letak dan gaya konsol DMS.
Login ke Konsol DMS.
Di 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 instans sinkronisasi berada.
Langkah 2: Konfigurasikan database sumber dan tujuan
Klik Create Task untuk membuka halaman konfigurasi tugas.
Konfigurasikan nama tugas, database sumber, dan database tujuan menggunakan parameter berikut:
Bagian Parameter Deskripsi N/A Task Name Nama untuk tugas DTS. DTS menghasilkan nama secara otomatis. Tentukan nama deskriptif agar tugas mudah diidentifikasi. Nama unik tidak wajib. Source Database Select Existing Connection Jika instans terdaftar di DTS, pilih dari daftar drop-down — DTS akan mengisi parameter lainnya secara otomatis. Jika tidak, konfigurasikan parameter di bawah. Di konsol DMS, pilih instans dari daftar drop-down Select a DMS database instance. Database Type Pilih MongoDB. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah tempat instans ApsaraDB for MongoDB sumber berada. Replicate Data Across Alibaba Cloud Accounts Pilih No jika menggunakan Akun Alibaba Cloud saat ini. Architecture Pilih Sharded Cluster. Migration Method Metode untuk menyinkronkan data inkremental. Pilih berdasarkan kebutuhan Anda: Oplog (direkomendasikan) — tersedia jika oplog diaktifkan. Oplog menyinkronkan data inkremental dengan latensi rendah dan diaktifkan secara default baik untuk database MongoDB yang dikelola sendiri maupun instans ApsaraDB for MongoDB. ChangeStream — tersedia jika change streams diaktifkan. Untuk informasi selengkapnya, lihat Change Streams. Jika sumbernya adalah kluster Amazon DocumentDB non-elastis, pilih hanya ChangeStream. Jika Architecture diatur ke Sharded Cluster, parameter Shard account dan Shard password tidak diperlukan. Instance ID ID instans ApsaraDB for MongoDB sumber. Authentication Database Nama database yang menyimpan kredensial akun. Default: admin.Database Account Akun yang digunakan untuk mengakses database sumber. Akun harus memiliki izin baca pada database sumber dan database config,admin, danlocal.Database Password Kata sandi untuk akun database. Shard account Akun yang digunakan untuk mengakses node shard. Hanya diperlukan untuk database MongoDB yang dikelola sendiri. Shard password Kata sandi yang digunakan untuk mengakses node shard. Hanya diperlukan untuk database MongoDB yang dikelola sendiri. Encryption Apakah koneksi dienkripsi. Opsi: Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL. Opsi yang tersedia bergantung pada pengaturan Access Method dan Architecture — lihat konsol DTS untuk opsi yang ditampilkan. Jika Architecture adalah Sharded Cluster dan Migration Method adalah Oplog, SSL-encrypted tidak tersedia. Jika sumbernya adalah database MongoDB yang dikelola sendiri dengan arsitektur set replika dan Encryption diatur ke SSL-encrypted, unggah sertifikat CA untuk memverifikasi koneksi. Destination Database Select Existing Connection Jika instans terdaftar di DTS, pilih dari daftar drop-down. Jika tidak, konfigurasikan parameter di bawah. Database Type Pilih MongoDB. Access Method Pilih Alibaba Cloud Instance. Instance Region Wilayah tempat instans ApsaraDB for MongoDB tujuan berada. Replicate Data Across Alibaba Cloud Accounts Pilih No jika menggunakan Akun Alibaba Cloud saat ini. Architecture Arsitektur instans tujuan. Instance ID ID instans ApsaraDB for MongoDB tujuan. Authentication Database Nama database yang menyimpan kredensial akun. Default: admin.Database Account Akun yang digunakan untuk mengakses database tujuan. Akun harus memiliki izin dbAdminAnyDatabase, izin baca dan tulis pada database tujuan, dan izin baca pada databaselocal.Database Password Kata sandi untuk akun database. Encryption Apakah koneksi dienkripsi. Opsi: Non-encrypted, SSL-encrypted, atau Mongo Atlas SSL. Jika tujuannya adalah kluster sharded ApsaraDB for MongoDB, SSL-encrypted tidak tersedia. Jika tujuannya adalah database MongoDB yang dikelola sendiri dengan arsitektur set replika dan Encryption diatur ke SSL-encrypted, unggah sertifikat CA untuk memverifikasi koneksi. Klik Test Connectivity and Proceed.
- Pastikan blok CIDR server DTS telah ditambahkan ke pengaturan keamanan database sumber dan tujuan. Untuk informasi selengkapnya, lihat Tambahkan blok CIDR server DTS. - Jika sumber atau tujuan adalah database yang dikelola sendiri dengan metode akses selain Alibaba Cloud Instance, klik Test Connectivity di kotak dialog CIDR Blocks of DTS Servers.
Langkah 3: Konfigurasikan objek sinkronisasi
Di langkah Configure Objects, atur parameter berikut:
Parameter Deskripsi Synchronization Types Pilih ketiga jenis: Schema Synchronization, Full Data Synchronization, dan Incremental Data Synchronization. Setelah pemeriksaan awal selesai, DTS menyinkronkan data historis dari sumber ke tujuan sebagai dasar untuk sinkronisasi inkremental. Jika sharding data sudah dikonfigurasi di kluster sharded tujuan dan Anda tidak memerlukan sinkronisasi skema DTS, jangan pilih Schema Synchronization. Melakukannya dapat menyebabkan ketidakkonsistenan data atau kegagalan tugas akibat konflik shard. Processing Mode of Conflicting Tables Precheck and Report Errors: memeriksa apakah tujuan sudah memiliki koleksi dengan nama yang sama seperti di sumber. Jika ditemukan nama yang cocok, error dikembalikan dan tugas tidak dapat dimulai. Untuk menyelesaikan konflik penamaan tanpa menghapus atau mengganti nama koleksi tujuan, gunakan fitur pemetaan nama objek. Untuk informasi selengkapnya, lihat Ganti nama objek yang akan disinkronkan. Ignore Errors and Proceed: melewati pemeriksaan konflik nama. Jika catatan di tujuan memiliki primary key atau unique key yang sama dengan catatan di sumber, DTS tidak menimpa catatan tujuan. PeringatanMemilih opsi ini dapat menyebabkan ketidakkonsistenan data.
Synchronization Topology Pilih One-way Synchronization. Capitalization of Object Names in Destination Instance Kebijakan kapitalisasi untuk nama database dan koleksi di tujuan. Default: DTS default policy. Untuk informasi selengkapnya, lihat Tentukan kapitalisasi nama objek di instans tujuan. Source Objects Pilih database atau koleksi yang akan disinkronkan, lalu klik ikon panah untuk menambahkannya ke Selected Objects. Selected Objects Untuk mengganti nama objek yang disinkronkan di tujuan atau memetakannya ke objek berbeda, klik kanan objek tersebut di Selected Objects. Untuk informasi selengkapnya, lihat Pemetaan nama objek. Untuk menghapus objek, klik objek tersebut lalu klik ikon hapus untuk memindahkannya kembali ke Source Objects. Untuk mengonfigurasi sinkronisasi inkremental berdasarkan database atau koleksi, klik kanan Selected Objects dan atur opsi di kotak dialog. Untuk memfilter data di koleksi, klik kanan koleksi tersebut di Selected Objects dan konfigurasikan kondisi filter. Filter hanya berlaku selama sinkronisasi data penuh, bukan selama sinkronisasi inkremental. Untuk informasi selengkapnya, lihat Tentukan kondisi filter. Jika Anda menggunakan pemetaan nama objek untuk mengganti nama database atau koleksi, objek lain yang bergantung padanya mungkin gagal disinkronkan. Klik Next: Advanced Settings.
Langkah 4: Konfigurasikan pengaturan lanjutan
| Parameter | Deskripsi |
|---|---|
| Dedicated Cluster for Task Scheduling | Secara default, DTS menjadwalkan tugas ke kluster bersama. Untuk meningkatkan stabilitas, beli kluster khusus. Untuk informasi selengkapnya, lihat Apa itu kluster khusus DTS. |
| Retry Time for Failed Connections | Rentang waktu bagi DTS untuk mencoba koneksi yang gagal. Nilai valid: 10–1440 menit. Default: 720 menit. Atur minimal 30 menit. Jika DTS terhubung kembali dalam jendela yang ditentukan, tugas dilanjutkan. Jika tidak, tugas gagal. Jika beberapa tugas berbagi database sumber atau tujuan yang sama, jendela retry terpendek yang berlaku. Biaya DTS berlaku selama periode retry. |
| Retry Time for Other Issues | Rentang waktu bagi DTS untuk mencoba kembali operasi DDL atau DML yang gagal. Nilai valid: 1–1440 menit. Default: 10 menit. Atur minimal 10 menit. Nilai ini harus kurang dari Retry Time for Failed Connections. |
| Enable Throttling for Full Data Synchronization | Membatasi beban baca/tulis pada database sumber dan tujuan selama sinkronisasi penuh. 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. Tersedia hanya jika Full Data Synchronization dipilih. |
| Only one data type for primary key _id in a single table | Menunjukkan apakah _id di koleksi menggunakan satu tipe data. Yes: DTS melewati pemindaian tipe data _id dan hanya menyinkronkan satu tipe data per koleksi. No: DTS memindai semua tipe data _id dan menyinkronkan semua data. Konfigurasikan berdasarkan data aktual Anda. Konfigurasi yang salah dapat menyebabkan kehilangan data. Tersedia hanya jika Full Data Synchronization dipilih. |
| Enable Throttling for Incremental Data Synchronization | Membatasi beban pada database tujuan selama sinkronisasi inkremental. Konfigurasikan RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s). |
| Environment Tag | Tag untuk mengidentifikasi instans DTS. Pilih berdasarkan kebutuhan Anda. |
| Configure ETL | Apakah fitur ekstrak, transformasi, muat (ETL) diaktifkan. Yes: mengaktifkan ETL. Masukkan pernyataan pemrosesan data di editor kode. Untuk informasi selengkapnya, lihat Konfigurasikan ETL dalam tugas migrasi data atau sinkronisasi data. No: menonaktifkan ETL. Untuk informasi selengkapnya tentang ETL, lihat Apa itu ETL? |
| Monitoring and Alerting | Apakah akan mengonfigurasi peringatan untuk tugas. Yes: mengirim peringatan saat tugas gagal atau latensi sinkronisasi melebihi ambang batas. Konfigurasikan ambang batas peringatan dan pengaturan notifikasi. Untuk informasi selengkapnya, lihat bagian "Konfigurasikan pemantauan dan peringatan saat membuat tugas DTS" pada topik Konfigurasikan pemantauan dan peringatan. No: menonaktifkan peringatan. |
Langkah 5: Konfigurasikan verifikasi data (opsional)
Klik Next Step: Data Verification untuk mengonfigurasi verifikasi data. Untuk informasi selengkapnya, lihat Konfigurasikan tugas verifikasi data.
Langkah 6: Simpan pengaturan dan jalankan pemeriksaan awal
Untuk melihat parameter API untuk konfigurasi tugas ini, arahkan kursor ke Next: Save Task Settings and Precheck lalu klik Preview OpenAPI parameters.
Klik Next: Save Task Settings and Precheck.
DTS menjalankan pemeriksaan awal sebelum memulai tugas sinkronisasi. Tugas hanya dapat dimulai setelah lulus pemeriksaan awal.
Jika pemeriksaan awal gagal, klik View Details di sebelah setiap item yang gagal, diagnosa masalahnya, perbaiki, lalu jalankan kembali pemeriksaan awal.
Jika muncul peringatan selama pemeriksaan awal:
Untuk peringatan yang tidak dapat diabaikan: klik View Details, perbaiki masalahnya, lalu jalankan kembali pemeriksaan awal.
Untuk peringatan yang dapat diabaikan: klik Confirm Alert Details, lalu klik Ignore di kotak dialog View Details, klik OK, lalu klik Precheck Again. Mengabaikan peringatan dapat menyebabkan ketidakkonsistenan data.
Langkah 7: Beli instans
Tunggu hingga Success Rate mencapai 100%, lalu klik Next: Purchase Instance.
Di halaman buy, konfigurasikan parameter berikut:
Bagian Parameter Deskripsi New Instance Class Billing Method Subscription: bayar di muka untuk periode tertentu. Lebih hemat biaya untuk penggunaan jangka panjang. Pay-as-you-go: ditagih per jam. Cocok untuk penggunaan jangka pendek. Lepaskan instans saat tidak lagi diperlukan untuk menghentikan biaya. Resource Group Settings Kelompok sumber daya untuk instans sinkronisasi. Default: default resource group. Untuk informasi selengkapnya, lihat Apa itu Manajemen Sumber Daya? Instance Class DTS menyediakan kelas instans dengan kecepatan sinkronisasi berbeda. Pilih berdasarkan kebutuhan Anda. Untuk informasi selengkapnya, lihat Kelas instans untuk instansi sinkronisasi data. Subscription Duration Tersedia hanya untuk penagihan Subscription. Pilih 1–9 bulan, 1 tahun, 2 tahun, 3 tahun, atau 5 tahun. Juga tentukan jumlah instans yang akan dibuat. Baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.
Klik Buy and Start, lalu klik OK di kotak dialog konfirmasi.
Tugas muncul di daftar tugas. Setelah pemeriksaan awal lulus dan instans dibeli, DTS secara otomatis memulai tugas sinkronisasi.
Langkah selanjutnya
Pantau status sinkronisasi dan latensi di daftar tugas konsol DTS.
Setelah sinkronisasi data penuh selesai dan sinkronisasi inkremental dimulai, aktifkan kembali balancer MongoDB di database sumber jika diperlukan.
Jika tujuannya adalah kluster sharded, aktifkan balancer dan lakukan pre-sharding untuk mencegah kesenjangan data. Untuk informasi selengkapnya, lihat Konfigurasikan sharding untuk memaksimalkan kinerja shard.