All Products
Search
Document Center

Data Transmission Service:Sinkronisasi satu arah untuk kluster sharded

Last Updated:Jul 21, 2026

Data Transmission Service (DTS) memungkinkan Anda menyinkronkan data dari kluster sharded MongoDB ke instans set replika atau kluster sharded. Topik ini menjelaskan cara menyinkronkan data antar instans ApsaraDB for MongoDB.

Prasyarat

  • Buat instans target ApsaraDB for MongoDB (set replika atau kluster sharded). Untuk informasi selengkapnya, lihat Buat instans set replika atau Buat instans kluster sharded.

    Penting
    • Ruang penyimpanan instans target ApsaraDB for MongoDB harus minimal 10% lebih besar daripada instans sumber ApsaraDB for MongoDB.

    • Untuk versi yang didukung, lihat Skema sinkronisasi data.

  • Untuk instans sumber ApsaraDB for MongoDB berupa kluster sharded, ajukan endpoint untuk setiap node shard dan pastikan semua node shard menggunakan akun dan kata sandi yang sama. Untuk informasi selengkapnya, lihat Ajukan endpoint shard.

  • Jika target adalah instans kluster sharded, Anda harus membuat database dan koleksi yang akan di-shard pada instans target ApsaraDB for MongoDB (kluster sharded), mengonfigurasi sharding data, mengaktifkan balancer, serta melakukan pre-sharding sesuai kebutuhan bisnis. Untuk informasi selengkapnya, lihat Konfigurasi sharding untuk memaksimalkan kinerja shard dan Bagaimana menangani distribusi data yang tidak merata dalam kluster MongoDB sharded?.

    Catatan
    • Konfigurasi sharding data mencegah seluruh data disinkronkan ke satu shard saja, sehingga menghindari bottleneck kinerja. Mengaktifkan balancer dan melakukan pre-sharding membantu mencegah kesenjangan data.

    • Topik ini memberikan contoh konfigurasi tugas DTS sebelum pembelian. Dalam skenario ini, Anda tidak perlu menentukan jumlah shard pada instans sumber ApsaraDB for MongoDB (kluster sharded).

      Jika Anda membeli tugas DTS sebelum mengonfigurasinya, Anda harus menentukan jumlah shard yang benar saat pembelian.

Perhatian

Tipe

Deskripsi

Batasan database sumber dan tujuan

  • Kebutuhan bandwidth: Server tempat database sumber berada harus memiliki bandwidth outbound yang mencukupi. Jika tidak, kecepatan sinkronisasi dapat terpengaruh.

  • Koleksi yang akan disinkronkan harus memiliki primary key atau kendala UNIQUE, dan nilai field-nya harus unik. Jika tidak, data duplikat dapat muncul di database tujuan.

  • Nama field dalam data tidak boleh mengandung karakter "." (titik); jika tidak, ketidakkonsistenan data dapat terjadi.

  • Field _id dalam koleksi yang akan disinkronkan harus memiliki nilai unik. Jika tidak, ketidakkonsistenan data dapat terjadi.

  • Jika Anda melakukan sinkronisasi pada level koleksi dan perlu mengedit objek (seperti mengganti nama koleksi), satu tugas sinkronisasi mendukung hingga 1.000 koleksi. Jika melebihi batas ini, tugas akan gagal dengan error setelah dikirim. Untuk mengatasi hal ini, bagi koleksi menjadi beberapa batch dan konfigurasikan beberapa tugas. Atau konfigurasikan tugas sinkronisasi seluruh database.

  • Satu dokumen dalam database sumber Anda tidak boleh melebihi 16 MB. Jika tidak, tugas akan gagal.

  • Database sumber Anda tidak boleh Azure Cosmos DB for MongoDB atau Amazon DocumentDB (elastic cluster).

  • Database sumber Anda harus mengaktifkan Oplog dan menyimpan Oplog minimal selama tujuh hari. Atau aktifkan Change Streams dan pastikan DTS dapat berlangganan perubahan data dalam tujuh hari terakhir melalui Change Streams. Jika tidak, DTS mungkin gagal menangkap perubahan data, menyebabkan kegagalan tugas. Dalam kasus ekstrem, hal ini dapat menyebabkan ketidakkonsistenan atau kehilangan data. Masalah ini tidak dicakup oleh Perjanjian Tingkat Layanan (SLA) DTS.

    Penting
    • Kami merekomendasikan penggunaan Oplog untuk menangkap perubahan data.

    • Hanya MongoDB 4.0 dan versi setelahnya yang mendukung Change Streams. Change Streams tidak mendukung sinkronisasi dua arah.

    • Jika database sumber Anda adalah Amazon DocumentDB (non-elastic cluster), aktifkan Change Streams secara manual. Saat mengonfigurasi tugas, atur Migration Method ke ChangeStream dan atur Architecture ke Sharded Cluster.

  • Jika DTS menggunakan Oplog untuk sinkronisasi inkremental, penskalaan jumlah shard tidak didukung untuk kluster sharded MongoDB sumber. Jika tidak, tugas DTS dapat gagal dan menyebabkan ketidakkonsistenan data.

  • Jika instans sumber Anda adalah kluster sharded MongoDB yang dikelola sendiri:

    • Access Method hanya mendukung Express Connect, VPN Gateway, or Smart Access Gateway dan Cloud Enterprise Network (CEN).

    • Jika versi MongoDB Anda 8.0 atau lebih baru dan Migration Method adalah Oplog, pastikan akun Shard yang digunakan oleh tugas sinkronisasi memiliki izin directShardOperations. Tambahkan izin ini menggunakan perintah db.adminCommand({ grantRolesToUser: "username", roles: [{ role: "directShardOperations", db: "admin"}]}).

      Catatan

      Ganti username dalam perintah dengan akun Shard yang digunakan oleh tugas sinkronisasi.

    • Jika Migration Method adalah Oplog dan tugas mencakup sinkronisasi data penuh, pastikan akun Mongos untuk kluster sharded MongoDB sumber Anda memiliki izin untuk menjalankan perintah db.runCommand({"balancerStatus":1}). DTS memeriksa apakah Balancer dinonaktifkan menggunakan perintah ini selama pemeriksaan awal.

  • Jumlah node Mongos dalam instans kluster sharded MongoDB sumber Anda tidak boleh melebihi 10.

  • Jika koleksi yang akan disinkronkan berisi indeks TTL, ketidakkonsistenan data atau latensi dapat terjadi.

  • Pastikan tidak ada dokumen yatim (orphaned documents) di instans sumber dan tujuan. Jika tidak, ketidakkonsistenan data atau kegagalan tugas dapat terjadi. Untuk informasi selengkapnya, lihat orphaned documents dan Cara membersihkan dokumen yatim di MongoDB (arsitektur kluster sharded).

  • Batasan operasi database sumber:

    • Selama sinkronisasi skema dan sinkronisasi data penuh, jangan mengubah skema database atau koleksi (termasuk pembaruan data bertipe array). Jika tidak, tugas sinkronisasi dapat gagal atau menyebabkan ketidakkonsistenan data antara database sumber dan tujuan.

    • Jika Anda hanya melakukan sinkronisasi data penuh, jangan menulis data baru ke instans sumber. Jika tidak, ketidakkonsistenan data dapat terjadi antara database sumber dan tujuan.

    • Saat instans sinkronisasi sedang berjalan, jangan jalankan perintah yang mengubah distribusi data pada objek yang akan disinkronkan di database sumber (misalnya, shardCollection, reshardCollection, unshardCollection, moveCollection, atau movePrimary). Jika tidak, ketidakkonsistenan data dapat terjadi.

  • Jika Balancer di database sumber Anda menyeimbangkan data, latensi dapat terjadi.

  • DTS tidak mendukung koneksi ke database MongoDB menggunakan alamat SRV.

  • Jika database sumber adalah MongoDB 5.0 atau lebih baru dan versi database tujuan lebih lama dari 5.0, Anda tidak dapat menyinkronkan capped collection. Jika Anda mencoba menyinkronkannya, tugas akan gagal atau terjadi ketidakkonsistenan data antara database sumber dan tujuan. Hal ini karena, mulai MongoDB 5.0, perilaku capped collection berubah untuk mengizinkan operasi seperti penghapusan eksplisit dan peningkatan ukuran dokumen selama pembaruan, dan versi kernel database yang lebih lama tidak dapat mendukung fitur-fitur baru ini.

Batasan lainnya

  • Sebelum memulai tugas, tambahkan shard key yang digunakan oleh tujuan ke data di sumber. Setelah tugas dimulai, pernyataan INSERT untuk data yang akan disinkronkan harus menyertakan shard key. Pernyataan UPDATE tidak boleh memodifikasi shard key.

  • Kami merekomendasikan menggunakan versi MongoDB yang sama untuk database sumber dan tujuan. Atau gunakan versi yang lebih tinggi untuk tujuan guna memastikan kompatibilitas. Menyinkronkan dari versi yang lebih tinggi ke versi yang lebih rendah dapat menyebabkan masalah kompatibilitas.

  • DTS tidak mendukung penyinkronan data dari database admin, config, dan local.

  • Informasi transaksi tidak dipertahankan. Transaksi di database sumber menjadi catatan individual di database tujuan.

  • Saat DTS menulis data ke koleksi tujuan, jika terjadi konflik primary key atau unique key, DTS melewati pernyataan tulis tersebut dan mempertahankan data yang sudah ada di koleksi tujuan.

  • Jika versi MongoDB sumber Anda lebih lama dari 3.6 dan versi MongoDB tujuan Anda 3.6 atau lebih baru, perbedaan dalam rencana eksekusi dapat menyebabkan urutan field yang tidak konsisten dalam data yang disinkronkan. Hubungan nilai-field tetap tidak berubah. Jika bisnis Anda menggunakan kueri pencocokan teks pada struktur bersarang, evaluasi dampak dari urutan field yang tidak konsisten.

  • Evaluasi kinerja database sumber dan tujuan sebelum sinkronisasi. Jalankan sinkronisasi selama jam sepi. Jika tidak, inisialisasi data penuh akan mengonsumsi sumber daya baca dan tulis, meningkatkan beban database.

  • Inisialisasi penuh menjalankan operasi INSERT secara konkuren. Hal ini menciptakan fragmentasi dalam koleksi database tujuan. Setelah inisialisasi penuh, ruang koleksi di instans tujuan lebih besar daripada di instans sumber.

  • Jika koleksi tujuan memiliki indeks unik atau properti capped-nya diatur ke true, replay konkuren tidak didukung selama sinkronisasi inkremental. Hanya penulisan single-threaded yang diizinkan. Hal ini dapat meningkatkan latensi tugas.

  • Karena DTS menulis data secara konkuren, ruang penyimpanan yang digunakan oleh tujuan 5% hingga 10% lebih besar daripada sumber.

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

  • Pastikan MongoDB tujuan tidak memiliki primary key yang sama (defaultnya adalah _id) dengan sumber. Jika tidak, kehilangan data dapat terjadi. Jika tujuan memiliki primary key yang sama, hapus data terkait di tujuan tanpa memengaruhi bisnis Anda (hapus dokumen dengan nilai _id yang sama di tujuan).

  • Nonaktifkan Balancer di database MongoDB sumber Anda selama sinkronisasi penuh. Biarkan nonaktif hingga semua subtugas mencapai fase inkremental. Jika tidak, ketidakkonsistenan data dapat terjadi. Untuk informasi selengkapnya tentang pengelolaan Balancer, lihat Kelola Balancer MongoDB.

  • Jika Anda tidak memerlukan fitur sinkronisasi skema yang disediakan oleh DTS—misalnya, jika partisi data sudah dikonfigurasi di tujuan—jangan pilih Configure Objects, lalu pilih Synchronization Types dan Schema Synchronization. Jika tidak, konflik sharding dapat menyebabkan ketidakkonsistenan data atau kegagalan tugas.

  • Jika Anda mengalihkan trafik ke database MongoDB tujuan, pastikan perilaku bisnis Anda memenuhi persyaratan MongoDB untuk koleksi sharded.

  • DTS tidak mendukung penyinkronan koleksi time-series yang diperkenalkan di MongoDB 5.0 dan versi setelahnya.

  • Jika tugas gagal, staf dukungan DTS akan mencoba memulihkannya dalam waktu delapan jam. Selama pemulihan, mereka mungkin me-restart tugas atau menyesuaikan parameternya.

    Catatan

    Hanya parameter tugas DTS yang dimodifikasi—bukan parameter database. Parameter yang mungkin disesuaikan termasuk yang tercantum dalam Modifikasi parameter instans.

Penagihan

Jenis sinkronisasi

Harga

Sinkronisasi skema dan sinkronisasi data penuh

Gratis.

Sinkronisasi data inkremental

Dikenai biaya. Untuk informasi selengkapnya, lihat Ikhtisar penagihan.

Topologi sinkronisasi satu arah

DTS hanya mendukung sinkronisasi data satu arah antara dua instans ApsaraDB for MongoDB kluster sharded. Sinkronisasi di antara beberapa instans ApsaraDB for MongoDB tidak didukung.

Jenis sinkronisasi

Tipe

Deskripsi

Sinkronisasi skema

Menyinkronkan skema objek sinkronisasi di ApsaraDB for MongoDB sumber ke ApsaraDB for MongoDB target.

Sinkronisasi data penuh

Menyinkronkan semua data yang ada dari objek sinkronisasi di ApsaraDB for MongoDB sumber ke ApsaraDB for MongoDB tujuan.

Catatan

Sinkronisasi data penuh didukung untuk database dan koleksi.

Sinkronisasi data inkremental

Berdasarkan sinkronisasi data penuh, pembaruan inkremental dari ApsaraDB for MongoDB sumber disinkronkan ke ApsaraDB for MongoDB target.

Oplog

Sinkronisasi data inkremental tidak mereplikasi database yang dibuat setelah tugas dimulai. Perubahan berikut direplikasi:

  • CREATE COLLECTION dan CREATE INDEX

  • DROP DATABASE, DROP COLLECTION, dan DROP INDEX

  • RENAME COLLECTION

    Catatan

    Operasi RENAME COLLECTION tidak direplikasi jika opsi dropTarget diatur ke true.

  • Insert, update, dan delete dokumen dalam koleksi.

    Catatan

    Untuk update dokumen, hanya mereplikasi operasi yang menggunakan perintah $set.

Change stream

Perubahan berikut direplikasi:

  • DROP DATABASE dan DROP COLLECTION

  • RENAME COLLECTION

    Catatan

    Operasi RENAME COLLECTION tidak direplikasi jika opsi dropTarget diatur ke true.

  • Insert, update, dan delete dokumen dalam koleksi.

    Catatan

    Untuk update dokumen, hanya mereplikasi operasi yang menggunakan perintah $set.

Bersihkan dokumen yatim

Bersihkan dokumen yatim dari database MongoDB sumber sebelum melakukan migrasi data.

Penting

Kegagalan membersihkan dokumen yatim memengaruhi kinerja migrasi dan dapat menyebabkan error migrasi data karena konflik _id.

ApsaraDB for MongoDB

Catatan

Menjalankan skrip pembersihan pada Instans dengan versi utama MongoDB sebelum 4.2 atau versi minor sebelum 4.0.6 akan menyebabkan error. Untuk melihat versi Instans Anda saat ini, lihat Versi minor MongoDB. Untuk meningkatkan versi utama atau minor, lihat Meningkatkan versi utama database dan Meningkatkan versi minor database.

Gunakan perintah cleanupOrphaned untuk membersihkan dokumen yatim. Prosedurnya sedikit berbeda untuk MongoDB 4.4 dan versi setelahnya serta MongoDB 4.2 dan versi sebelumnya.

MongoDB 4.4 dan versi setelahnya

  1. Pada server yang dapat terhubung ke instans kluster sharded Anda, buat skrip JavaScript (JS) bernama cleanupOrphaned.js.

    Catatan

    Skrip ini membersihkan dokumen yatim dari semua koleksi di beberapa database di beberapa shard. Jika Anda perlu membersihkan dokumen yatim dari koleksi tertentu, Anda dapat memodifikasi skrip JS tersebut.

    // Daftar nama shard
    var shardNames = ["shardName1", "shardName2"];
    // Daftar database
    var databasesToProcess = ["database1", "database2", "database3"];
    shardNames.forEach(function(shardName) {
        // Iterasi daftar database yang ditentukan
        databasesToProcess.forEach(function(dbName) {
            var dbInstance = db.getSiblingDB(dbName);
            // Dapatkan nama semua koleksi dalam instans database
            var collectionNames = dbInstance.getCollectionNames();
            // Iterasi setiap koleksi
            collectionNames.forEach(function(collectionName) {
                // Nama lengkap koleksi
                var fullCollectionName = dbName + "." + collectionName;
                // Bangun perintah cleanupOrphaned
                var command = {
                    runCommandOnShard: shardName,
                    command: { cleanupOrphaned: fullCollectionName }
                };
                // Jalankan perintah
                var result = db.adminCommand(command); 
                if (result.ok) {
                    print("Membersihkan dokumen yatim untuk koleksi " + fullCollectionName + " pada shard " + shardName);
                    printjson(result);
                } else {
                    print("Gagal membersihkan dokumen yatim untuk koleksi " + fullCollectionName + " pada shard " + shardName);
                }
            });
        });
    });

    Dalam skrip, modifikasi nilai parameter shardNames dan databasesToProcess:

    • shardNames: Array ID shard tempat dokumen yatim akan dibersihkan. Anda dapat memperoleh ID shard dari Daftar Shard pada halaman Informasi Dasar instans. Contoh: d-bp15a3796d3a****.

    • databasesToProcess: Array nama database tempat dokumen yatim akan dibersihkan.

  2. Di direktori tempat skrip cleanupOrphaned.js berada, jalankan perintah berikut untuk membersihkan dokumen yatim.

    mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

    Parameter

    Deskripsi

    <Mongoshost>

    Alamat koneksi node mongos dari instans kluster sharded. Contoh: s-bp14423a2a51****.mongodb.rds.aliyuncs.com.

    <Primaryport>

    Nomor port node mongos dari instans kluster sharded. Nilai defaultnya adalah 3717.

    <database>

    Nama database otentikasi. Ini adalah database tempat akun database tersebut berada.

    <username>

    Akun database.

    <password>

    Password untuk akun database.

    output.txt

    File output untuk hasil eksekusi.

MongoDB 4.2 dan versi sebelumnya

  1. Pada server yang dapat terhubung ke instans kluster sharded Anda, buat skrip JS bernama cleanupOrphaned.js.

    Catatan

    Skrip ini membersihkan dokumen yatim dari koleksi tertentu dalam database tertentu di beberapa shard. Untuk membersihkan dokumen yatim dari beberapa koleksi, Anda dapat memodifikasi parameter fullCollectionName dan menjalankan skrip beberapa kali, atau memodifikasi skrip agar melakukan iterasi melalui koleksi-koleksi tersebut.

    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 + " pada shard: " + shardName)
    }
    var shardNames = ["shardName1", "shardName2", "shardName3"]
    var fullCollectionName = "database.collection"
    shardNames.forEach(function(shardName) {
        cleanupOrphanedOnShard(shardName, fullCollectionName);
    });

    Dalam skrip, modifikasi nilai parameter shardNames dan fullCollectionName:

    • shardNames: Array ID shard tempat dokumen yatim akan dibersihkan. Anda dapat memperoleh ID shard dari Daftar Shard pada halaman Informasi Dasar instans. Contoh: d-bp15a3796d3a****.

    • fullCollectionName: Nama koleksi tempat dokumen yatim akan dibersihkan, dalam format database.collection.

  2. Di direktori tempat skrip cleanupOrphaned.js berada, jalankan perintah berikut untuk membersihkan dokumen yatim.

    mongo --host <Mongoshost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js > output.txt

    Parameter

    Deskripsi

    <Mongoshost>

    Alamat koneksi node mongos dari instans kluster sharded. Contoh: s-bp14423a2a51****.mongodb.rds.aliyuncs.com.

    <Primaryport>

    Nomor port node mongos dari instans kluster sharded. Nilai defaultnya adalah 3717.

    <database>

    Nama database otentikasi. Ini adalah database tempat akun database tersebut berada.

    <username>

    Akun database.

    <password>

    Password untuk akun database.

    output.txt

    File output untuk hasil eksekusi.

MongoDB yang dikelola sendiri

  1. Pada server yang dapat terhubung ke database MongoDB yang dikelola sendiri Anda, unduh file skrip cleanupOrphaned.js.

    wget "https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/120562/cn_zh/1564451237979/cleanupOrphaned.js"
  2. Modifikasi file skrip cleanupOrphaned.js. Ganti test dengan nama database tempat Anda ingin membersihkan dokumen yatim.

    Penting

    Jika Anda memiliki beberapa database, Anda harus mengulangi Langkah 2 dan Langkah 3 untuk setiap database.

    function cleanupOrphaned(coll) {
      var nextKey = { };
      var result;
      while ( nextKey != null ) {
        result = db.adminCommand( { cleanupOrphaned: coll, startingFromKey: nextKey } );
        if (result.ok != 1)
           print("Tidak dapat menyelesaikan saat ini: kegagalan atau timeout.")
        printjson(result);
        nextKey = result.stoppedAtKey;
      }
    }
    var dbName = "test"
    db = db.getSiblingDB(dbName)
    db.getCollectionNames().forEach(function(collName) {
            cleanupOrphaned(dbName + "." + collName);
    });
  3. Jalankan perintah berikut untuk membersihkan dokumen yatim dari semua koleksi dalam database yang ditentukan pada sebuah shard.

    Catatan

    Anda harus mengulangi langkah ini untuk setiap shard.

    mongo --host <Shardhost> --port <Primaryport>  --authenticationDatabase <database> -u <username> -p <password> cleanupOrphaned.js
    Catatan
    • <Shardhost>: Alamat IP shard.

    • <Primaryport>: Port layanan node primary dalam shard.

    • <database>: Nama database otentikasi. Ini adalah database tempat akun database tersebut berada.

    • <username>: Akun database.

    • <password>: Kata sandi untuk akun tersebut.

    Contoh:

    Dalam contoh ini, database MongoDB yang dikelola sendiri memiliki tiga shard. Anda harus menjalankan perintah untuk setiap shard untuk membersihkan dokumen yatim.

    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

Prosedur

Penting

Topik ini menggunakan contoh konfigurasi tugas DTS sebelum pembelian, di mana Anda tidak perlu menentukan jumlah shard untuk kluster sharded ApsaraDB for MongoDB sumber.

Jika Anda membeli tugas DTS sebelum mengonfigurasinya, Anda harus menentukan jumlah shard yang benar saat pembelian.

  1. Buka halaman daftar tugas migrasi untuk wilayah tujuan menggunakan salah satu metode berikut.

    Dari Konsol DTS

    1. Login ke Konsol Data Transmission Service (DTS).

    2. Di panel navigasi kiri, klik Data Migration.

    3. Di pojok kiri atas halaman, pilih wilayah tempat instans migrasi berada.

    Dari Konsol DMS

    Catatan

    Operasi aktual dapat berbeda tergantung mode dan tata letak konsol DMS. Untuk informasi selengkapnya, lihat Konsol mode sederhana dan Sesuaikan tata letak dan gaya konsol DMS.

    1. Login ke Konsol Data Management (DMS).

    2. Di bilah menu atas, pilih Data + AI > Data Transmission (DTS) > Data Migration.

    3. Di sebelah kanan Data Migration Tasks, pilih wilayah tempat instans migrasi berada.

  2. Klik Create Task dan konfigurasikan database sumber dan tujuan.

    Bagian

    Parameter

    Deskripsi

    N/A

    Task Name

    DTS secara otomatis menghasilkan nama tugas. Kami merekomendasikan agar Anda menentukan nama deskriptif untuk memudahkan identifikasi. Nama tersebut tidak harus unik.

    Source Database

    Select an existing DMS database instance. (Optional. If you have not registered a DMS database instance, ignore this option and configure database settings in the section below.) (Opsional. Jika Anda belum membuat koneksi, Anda dapat melewati ini dan langsung mengonfigurasi informasi database di bawah.)

    Pilih instans yang ada sesuai kebutuhan.

    • Jika Anda menggunakan instans yang ada, informasi database akan diisi otomatis. Anda tidak perlu memasukkannya lagi.

    • Jika Anda tidak menggunakan instans yang ada, masukkan informasi database berikut.

    Database Type

    Pilih MongoDB.

    Access Method

    Pilih Alibaba Cloud Instance.

    Instance Region

    Pilih wilayah tempat instans ApsaraDB for MongoDB sumber berada.

    Replicate Data Across Alibaba Cloud Accounts

    Contoh ini menunjukkan cara menyinkronkan data dalam satu akun Alibaba Cloud. Pilih No.

    Architecture

    Pilih Sharded Cluster.

    Migration Method

    Pilih metode untuk sinkronisasi data inkremental sesuai kebutuhan Anda.

    • Oplog (Direkomendasikan):

      Opsi ini tersedia jika Oplog diaktifkan untuk database sumber.

      Catatan

      Oplog diaktifkan secara default untuk database MongoDB yang dikelola sendiri dan instans ApsaraDB for MongoDB. Metode ini menawarkan latensi lebih rendah untuk tugas sinkronisasi inkremental karena log diambil lebih cepat. Kami merekomendasikan memilih Oplog.

    • ChangeStream:

      Opsi ini tersedia jika Change Streams diaktifkan untuk database sumber.

      Catatan
      • Jika database sumber adalah instans Amazon DocumentDB (non-elastic cluster), Anda hanya dapat memilih ChangeStream.

      • Jika Anda mengatur Architecture database sumber ke Sharded Cluster, Anda tidak perlu menentukan Shard account dan Shard password.

    Instance ID

    Pilih ID instans ApsaraDB for MongoDB sumber.

    Database Name

    Masukkan nama database tempat akun database ApsaraDB for MongoDB sumber berada. Nilai defaultnya adalah admin.

    Database Account

    Masukkan akun database ApsaraDB for MongoDB sumber. Akun ini harus memiliki izin baca pada database yang akan disinkronkan, serta pada database config, admin, dan local.

    Catatan

    Jika Anda menggunakan ChangeStream sebagai metode sinkronisasi inkremental, akun database sumber memerlukan izin baca Change Streams di seluruh instans (seperti readAnyDatabase). Jika sumber adalah instans ApsaraDB for MongoDB dengan akun kustom, Anda juga harus memberikan izin baca akun tersebut pada database admin. Untuk detailnya, lihat Izin akun root yang ditentukan saat pembuatan instans.

    Database Password

    Masukkan password yang sesuai dengan akun database.

    Shard account

    Masukkan akun shard ApsaraDB for MongoDB sumber.

    Catatan

    Jika sumber Anda adalah database MongoDB yang dikelola sendiri, Anda juga harus memasukkan shard connection information untuk node-node shard.

    Shard password

    Masukkan password shard untuk instans ApsaraDB for MongoDB sumber.

    Destination Database

    Select an existing DMS database instance. (Optional. If you have not registered a DMS database instance, ignore this option and configure database settings in the section below.) (Opsional. Jika Anda belum membuat koneksi, Anda dapat melewati ini dan langsung mengonfigurasi informasi database di bawah.)

    Pilih instans yang ada sesuai kebutuhan.

    • Jika Anda menggunakan instans yang ada, informasi database akan diisi otomatis. Anda tidak perlu memasukkannya lagi.

    • Jika Anda tidak menggunakan instans yang ada, masukkan informasi database berikut.

    Database Type

    Pilih MongoDB.

    Access Method

    Pilih Alibaba Cloud Instance.

    Instance Region

    Pilih wilayah tempat instans ApsaraDB for MongoDB tujuan berada.

    Architecture

    Pilih tipe arsitektur instans ApsaraDB for MongoDB tujuan.

    Instance ID

    Pilih ID instans ApsaraDB for MongoDB tujuan.

    Database Name

    Masukkan nama database tempat akun database ApsaraDB for MongoDB tujuan berada. Nilai defaultnya adalah admin.

    Database Account

    Masukkan akun database ApsaraDB for MongoDB tujuan. Akun ini memerlukan izin dbAdminAnyDatabase, izin baca-tulis pada database tujuan, dan izin baca pada database local.

    Database Password

    Masukkan password yang sesuai dengan akun database.

    Encryption

    DTS mendukung tiga metode koneksi: Non-encrypted, SSL-encrypted, dan Mongo Atlas SSL. Opsi untuk Encryption bervariasi berdasarkan Access Method dan Architecture yang dipilih. Opsi yang ditampilkan di konsol berlaku.

    Catatan
    • Database MongoDB dengan Architecture Sharded Cluster tidak mendukung SSL-encrypted.

    • Jika tujuan adalah database MongoDB yang dikelola sendiri (Access Method bukan Alibaba Cloud Instance) dengan Replica Set, dan Anda memilih SSL-encrypted, DTS juga memungkinkan Anda mengunggah sertifikat CA untuk memverifikasi koneksi.

  3. Di bagian bawah halaman, klik Test Connectivity and Proceed.

    Jika database sumber atau tujuan adalah instans database Alibaba Cloud, seperti instans ApsaraDB RDS for MySQL atau ApsaraDB for MongoDB, DTS secara otomatis menambahkan blok CIDR server DTS ke daftar putih instans tersebut. Jika database sumber atau tujuan adalah database yang dikelola sendiri yang di-host di instans Elastic Compute Service (ECS), DTS secara otomatis menambahkan blok CIDR server DTS ke aturan grup keamanan ECS, dan Anda harus memastikan bahwa instans ECS dapat mengakses database tersebut. Jika database sumber atau tujuan adalah database yang dikelola sendiri yang dideploy di pusat data atau disediakan oleh penyedia layanan cloud pihak ketiga, Anda harus secara manual menambahkan blok CIDR server DTS ke daftar putih database tersebut agar DTS dapat mengakses database. Untuk informasi selengkapnya, lihat Daftarkan alamat IP server DTS.

    Peringatan

    Jika blok CIDR server DTS ditambahkan secara otomatis atau manual ke daftar putih database atau instans, atau ke aturan grup keamanan ECS, risiko keamanan dapat muncul. Oleh karena itu, sebelum Anda menggunakan DTS untuk menyinkronkan data, Anda harus memahami dan mengakui risiko potensial serta mengambil tindakan pencegahan, termasuk namun tidak terbatas pada langkah-langkah berikut: memperkuat keamanan username dan kata sandi Anda, membatasi port yang diekspos, mengotentikasi panggilan API, secara berkala memeriksa daftar putih atau aturan grup keamanan ECS dan melarang blok CIDR yang tidak sah, atau menghubungkan database ke DTS menggunakan Express Connect, VPN Gateway, atau Smart Access Gateway.

  4. Konfigurasikan objek sinkronisasi dan pengaturan lanjutan.

    Parameter

    Deskripsi

    Synchronization Types

    Incremental Data Synchronization dipilih. Secara default, Anda juga harus memilih Schema Synchronization dan Full Data Synchronization. Setelah pemeriksaan awal selesai, DTS melakukan sinkronisasi data penuh objek yang dipilih dari instans sumber ke kluster tujuan. Ini berfungsi sebagai data dasar untuk sinkronisasi data inkremental berikutnya.

    Synchronization Topology

    Pilih One-way Synchronization.

    Processing Mode of Conflicting Tables

    • Precheck and Report Errors: Memeriksa koleksi dengan nama yang sama di database tujuan. Jika ditemukan koleksi dengan nama yang sama, error dilaporkan dan tugas sinkronisasi data tidak dimulai. Jika tidak, pemeriksaan awal berhasil.

      Catatan

      Jika Anda tidak dapat menghapus atau mengganti nama koleksi dengan nama yang sama di database tujuan, Anda dapat mengubah nama koleksi di database tujuan. Untuk informasi selengkapnya, lihat Atur nama objek sinkronisasi di instans tujuan.

    • Ignore Errors and Proceed: Melewati pemeriksaan koleksi dengan nama yang sama di database tujuan.

      Peringatan

      Memilih Ignore Errors and Proceed dapat menyebabkan ketidakkonsistenan data dan membahayakan bisnis Anda. Misalnya:

      • Jika catatan di database tujuan memiliki nilai primary key atau unique key yang sama dengan catatan di database sumber, catatan di database tujuan dipertahankan. Catatan dari database sumber tidak disinkronkan ke database tujuan.

      • Hal ini dapat menyebabkan inisialisasi data gagal, hanya sebagian data yang disinkronkan, atau seluruh sinkronisasi gagal.

    Capitalization of Object Names in Destination Instance

    Anda dapat mengonfigurasi kebijakan sensitivitas huruf besar/kecil untuk nama objek database, tabel, dan kolom yang disinkronkan ke instans tujuan. Secara default, DTS default policy dipilih. Anda juga dapat memilih untuk menggunakan kebijakan default database sumber dan tujuan. Untuk informasi selengkapnya, lihat Kebijakan sensitivitas huruf besar/kecil untuk nama objek tujuan.

    Source Objects

    Di kotak Source Objects, klik objek yang akan disinkronkan, lalu klik 向右 untuk memindahkannya ke kotak Selected Objects.

    Catatan

    Sinkronisasi dapat dilakukan pada level DATABASE dan COLLECTION.

    Selected Objects

    • Untuk mengganti nama objek sinkronisasi tunggal di instans tujuan, klik kanan objek tersebut di kotak Selected Objects. Untuk informasi selengkapnya tentang penggantian nama objek, lihat Memetakan satu database, tabel, atau kolom.

    • Untuk mengubah nama beberapa objek sinkronisasi di instans tujuan secara batch, klik Batch Edit di pojok kanan atas kotak Selected Objects. Untuk informasi selengkapnya, lihat Petakan database, tabel, dan kolom secara batch.

  5. Klik Next: Advanced Settings untuk mengonfigurasi pengaturan lanjutan.

    • Data Verification Settings

      Untuk mengonfigurasi validasi data, lihat Konfigurasi validasi data.

    • Advanced Settings

      Parameter

      Deskripsi

      Dedicated Cluster for Task Scheduling

      Secara default, DTS menjadwalkan tugas pada kluster bersama, dan Anda tidak perlu memilih kluster. Untuk kinerja yang lebih stabil, Anda dapat membeli kluster khusus untuk menjalankan tugas sinkronisasi DTS. Untuk informasi selengkapnya, lihat Apa itu kluster khusus DTS?.

      Retry Time for Failed Connections

      Setelah tugas sinkronisasi dimulai, jika koneksi ke database sumber atau tujuan gagal, DTS melaporkan error dan segera mulai mencoba koneksi ulang. Durasi percobaan ulang default adalah 720 menit. Anda juga dapat menentukan durasi percobaan ulang kustom dari 10 hingga 1.440 menit. Kami merekomendasikan agar Anda mengatur durasi minimal 30 menit. Jika DTS berhasil terhubung kembali ke database dalam durasi yang ditentukan, tugas sinkronisasi secara otomatis dilanjutkan. Jika tidak, tugas gagal.

      Catatan
      • Jika Anda memiliki beberapa instans DTS (misalnya, Instans A dan Instans B) yang berbagi sumber atau tujuan yang sama, dan Anda mengatur waktu percobaan ulang jaringan menjadi 30 menit untuk Instans A dan 60 menit untuk Instans B, durasi yang lebih pendek yaitu 30 menit akan digunakan untuk keduanya.

      • Karena DTS membebankan biaya untuk waktu proses tugas selama periode percobaan ulang koneksi, kami merekomendasikan agar Anda menyesuaikan durasi percobaan ulang berdasarkan kebutuhan bisnis Anda atau segera melepas instans DTS setelah instans database sumber dan tujuan dilepas.

      Retry Time for Other Issues

      Setelah tugas sinkronisasi dimulai, jika terjadi masalah non-konektivitas lainnya pada database sumber atau tujuan (seperti exception eksekusi DDL atau DML), DTS melaporkan error dan segera mulai operasi percobaan ulang terus-menerus. Durasi percobaan ulang default adalah 10 menit. Anda juga dapat menyesuaikan durasi percobaan ulang dalam rentang 1 hingga 1.440 menit. Kami merekomendasikan agar Anda mengaturnya minimal 10 menit. Jika operasi terkait berhasil dalam durasi percobaan ulang yang ditetapkan, tugas sinkronisasi secara otomatis dilanjutkan. Jika tidak, tugas gagal.

      Penting

      Nilai untuk Retry Time for Other Issues harus lebih kecil daripada Retry Time for Failed Connections.

      Enable Throttling for Full Data Synchronization

      Selama tahap sinkronisasi penuh, DTS mengonsumsi sumber daya baca dan tulis dari database sumber dan tujuan, yang dapat meningkatkan beban database. Untuk mengurangi beban pada database sumber dan tujuan, Anda dapat mengatur batas laju untuk tugas sinkronisasi penuh dengan mengonfigurasi parameter Queries per second (QPS) to the source database, RPS of Full Data Migration, dan Data migration speed for full migration (MB/s).

      Catatan
      • Item konfigurasi ini hanya tersedia ketika Synchronization Types diatur ke Full Data Synchronization.

      • Anda juga dapat menyesuaikan laju sinkronisasi penuh setelah instans sinkronisasi sedang berjalan.

      Enable Throttling for Incremental Data Synchronization

      Anda juga dapat mengatur batas laju untuk tugas sinkronisasi inkremental. Untuk mengurangi tekanan pada database tujuan, atur RPS of Incremental Data Synchronization dan Data synchronization speed for incremental synchronization (MB/s).

      Environment Tag

      Anda dapat memilih tag lingkungan untuk mengidentifikasi instans berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, Anda tidak perlu memilih tag.

      Configure ETL

      Pilih apakah akan mengaktifkan fitur extract, transform, and load (ETL). Untuk informasi selengkapnya, lihat Apa itu ETL? Nilai yang valid:

      Monitoring and Alerting

      Tentukan apakah akan mengonfigurasi peringatan. Jika sinkronisasi gagal atau latensi melebihi ambang batas yang ditentukan, notifikasi akan dikirim ke kontak peringatan.

  6. Simpan tugas dan jalankan pemeriksaan awal.

    • Untuk melihat parameter API untuk mengonfigurasi instans ini, arahkan kursor ke tombol Next: Save Task Settings and Precheck dan klik Preview OpenAPI parameters di gelembung.

    • Jika Anda telah selesai melihat parameter API, klik Next: Save Task Settings and Precheck di bagian bawah halaman.

    Catatan
    • Sebelum tugas sinkronisasi dimulai, DTS menjalankan pemeriksaan awal. Tugas hanya dapat dimulai setelah semua item pemeriksaan awal lolos.

    • Jika pemeriksaan awal gagal, klik View Details untuk item yang gagal. Perbaiki masalah sesuai petunjuk, lalu jalankan pemeriksaan awal lagi.

    • Jika pemeriksaan awal mengembalikan peringatan:

      • Jika item pemeriksaan gagal dan tidak dapat diabaikan, klik View Details di sebelah item tersebut. Ikuti instruksi untuk memperbaiki masalah, lalu jalankan pemeriksaan awal lagi.

      • Untuk item pemeriksaan yang dapat diabaikan, Anda dapat mengklik Confirm Alert Details, Ignore, OK, dan Precheck Again secara berurutan untuk melewati peringatan dan menjalankan kembali pemeriksaan awal. Jika Anda memilih untuk mengabaikan item peringatan, hal ini dapat menyebabkan masalah seperti ketidakkonsistenan data dan menimbulkan risiko bagi bisnis Anda.

  7. Ketika Success Rate mencapai 100%, klik Next: Purchase Instance.

  8. Di halaman Purchase, pilih metode penagihan dan spesifikasi link untuk instans sinkronisasi data. Tabel berikut menjelaskan parameter-parameter ini secara detail.

    Kategori

    Parameter

    Deskripsi

    New Instance Class

    Billing Method

    • Langganan: Anda membayar saat membuat instans. Ini cocok untuk kebutuhan jangka panjang dan lebih hemat biaya dibandingkan bayar sesuai penggunaan. Semakin lama durasi langganan, semakin tinggi diskonnya.

    • Bayar sesuai penggunaan: Anda dikenai biaya per jam. Ini cocok untuk kebutuhan jangka pendek. Anda dapat melepas instans segera setelah digunakan untuk menghemat biaya.

    Resource Group Configuration

    Kelompok sumber daya tempat instans tersebut berada. Defaultnya adalah kelompok sumber daya default. Untuk informasi selengkapnya, lihat Apa itu Resource Management?.

    Link Specification

    DTS menyediakan spesifikasi sinkronisasi dengan tingkat kinerja berbeda. Spesifikasi link sinkronisasi memengaruhi laju sinkronisasi. Anda dapat memilih spesifikasi berdasarkan skenario bisnis Anda. Untuk informasi selengkapnya, lihat Spesifikasi link sinkronisasi data.

    Subscription Duration

    Dalam mode langganan, pilih durasi dan jumlah untuk instans langganan. Anda dapat memilih langganan bulanan dari 1 hingga 9 bulan, atau langganan tahunan selama 1, 2, 3, atau 5 tahun.

    Catatan

    Opsi ini hanya tersedia ketika metode penagihan adalah Subscription.

  9. Setelah menyelesaikan konfigurasi, baca dan pilih Data Transmission Service (Pay-as-you-go) Service Terms.

  10. Klik Buy and Start. Di kotak dialog OK, klik OK.

    Anda dapat melihat progres tugas di halaman Sinkronisasi Data.