All Products
Search
Document Center

ApsaraDB for MongoDB:Sinkronisasi satu arah instans MongoDB dengan MongoShake

Last Updated:Aug 21, 2026

MongoShake adalah alat open-source yang dikembangkan oleh Alibaba Cloud untuk menyinkronkan data antar database MongoDB dalam berbagai skenario, seperti analitik data, disaster recovery, dan replikasi aktif-aktif. Topik ini menjelaskan cara mengonfigurasi sinkronisasi real-time antar instans ApsaraDB for MongoDB.

MongoShake

MongoShake adalah alat umum yang dikembangkan oleh Alibaba Cloud menggunakan Go. Alat ini mereplikasi data dari MongoDB dengan membaca operation log (oplog) dan memainkannya ulang (replay) pada instans tujuan.

MongoShake juga menyediakan fitur subscription dan konsumsi data. Alat ini terintegrasi dengan SDK, Kafka, dan MetaQ untuk mendukung skenario seperti subscription log, sinkronisasi antarpusat data, dan penghapusan cache secara asinkron.

Catatan

Untuk informasi lebih lanjut, lihat repositori GitHub MongoShake.

Sumber data yang didukung

Source

Destination

Database MongoDB yang dikelola sendiri pada instance ECS

Database MongoDB yang dikelola sendiri pada instance ECS

Database MongoDB yang dikelola sendiri di lingkungan on-premises

Database MongoDB yang dikelola sendiri di lingkungan on-premises

Instans ApsaraDB for MongoDB

Instans ApsaraDB for MongoDB

Database MongoDB cloud pihak ketiga

Database MongoDB cloud pihak ketiga

Catatan

Izin yang diperlukan

Source

Izin yang diperlukan

Instans MongoDB sumber

Izin readAnyDatabase, izin read pada database local, dan izin readWrite pada database mongoshake.

Catatan

Database mongoshake dibuat secara otomatis di instans sumber oleh program MongoShake saat sinkronisasi inkremental dimulai.

Instans MongoDB tujuan

Izin readWriteAnyDatabase atau izin readWrite pada database tujuan.

Catatan

Untuk informasi tentang cara membuat dan memberikan otorisasi kepada pengguna database MongoDB, lihat Gunakan DMS untuk mengelola pengguna database MongoDB atau perintah db.createUser.

Prasyarat

  1. Untuk kinerja sinkronisasi optimal, pastikan instans replica set MongoDB sumber menggunakan VPC. Jika menggunakan jaringan klasik, ubah jenis jaringannya menjadi VPC. Untuk informasi lebih lanjut, lihat Ubah jenis jaringan instans dari jaringan klasik ke VPC.

  2. Buat instans replica set MongoDB tujuan. Untuk meminimalkan latensi jaringan, buat instans tujuan dalam VPC yang sama dengan instans sumber. Untuk informasi lebih lanjut, lihat Buat instans replica set.

  3. Buat instance ECS untuk menjalankan MongoShake. Untuk meminimalkan latensi jaringan, buat instance ECS dalam VPC yang sama dengan instans sumber. Untuk informasi lebih lanjut, lihat Buat instance ECS.

  4. Tambahkan alamat IP pribadi instance ECS ke daftar putih kedua instans MongoDB (sumber dan tujuan), dan verifikasi bahwa instance ECS dapat terhubung ke kedua instans tersebut. Untuk informasi lebih lanjut, lihat Ubah daftar putih.

Catatan

Jika konfigurasi jaringan Anda tidak memenuhi persyaratan di atas, Anda dapat mengajukan titik akhir publik untuk kedua instans MongoDB (sumber dan tujuan). Kemudian, tambahkan alamat IP publik instance ECS ke daftar putih kedua instans MongoDB tersebut untuk melakukan sinkronisasi melalui titik akhir publik. Untuk informasi lebih lanjut, lihat Ajukan titik akhir publik dan Ubah daftar putih.

Prosedur

Prosedur ini mengasumsikan bahwa MongoShake diinstal di direktori /test/mongoshake.

  1. Login ke instance ECS.

    Catatan

    Anda dapat memilih metode login sesuai skenario Anda. Untuk informasi lebih lanjut, lihat Ikhtisar metode login untuk server ECS.

  2. Jalankan perintah berikut untuk mengunduh program MongoShake dan mengganti namanya menjadi mongoshake.tar.gz.

    wget "https://github.com/alibaba/MongoShake/releases/download/release-v2.8.7-20251218/mongo-shake-v2.8.7.tgz" -O mongoshake.tar.gz
    Catatan

    Perintah ini mengunduh MongoShake versi 2.8.7. Untuk mengunduh versi terbaru, lihat halaman rilis.

  3. Jalankan perintah berikut untuk mengekstrak paket MongoShake ke direktori /test/mongoshake.

    tar zxvf mongoshake.tar.gz && mv mongo-shake-v2.8.7 /test/mongoshake && cd /test/mongoshake
  4. Jalankan perintah vi collector.conf untuk mengubah file konfigurasi MongoShake collector.conf. Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    Contoh

    mongo_urls

    URI string koneksi instans MongoDB sumber. Pada contoh ini, akun database adalah test, yang berada di database admin.

    Catatan

    mongo_urls = mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

    Catatan

    Password tidak boleh mengandung tanda at (@). Jika tidak, koneksi akan gagal.

    tunnel.address

    URI string koneksi instans MongoDB tujuan. Pada contoh ini, akun database adalah test, yang berada di database admin.

    Catatan

    tunnel.address = mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

    Catatan

    Password tidak boleh mengandung tanda at (@). Jika tidak, koneksi akan gagal.

    sync_mode

    Mode sinkronisasi data. Nilai yang valid:

    • all: melakukan sinkronisasi penuh dan sinkronisasi inkremental.

    • full: hanya melakukan sinkronisasi penuh.

    • incr: hanya melakukan sinkronisasi inkremental.

    Catatan

    Nilai default adalah incr.

    sync_mode = all

    Catatan

    Untuk daftar lengkap parameter dalam collector.conf, lihat bagian "parameter collector.conf" di Lampiran.

  5. Jalankan perintah berikut untuk memulai tugas sinkronisasi dan mencetak log.

    ./collector.linux -conf=collector.conf -verbose
  6. Amati output log. Ketika muncul entri yang mirip dengan berikut, itu menandakan bahwa sinkronisasi penuh telah selesai dan sinkronisasi inkremental telah dimulai.

    [09:38:57 CST 2019/06/20] [INFO] (mongoshake/collector.(*ReplicationCoordinator).Run:80) finish full sync, start incr sync with timestamp: fullBeginTs[1560994443], fullFinishTs[1560994737]

Status pemantauan

Setelah sinkronisasi inkremental dimulai, buka jendela terminal baru dan jalankan perintah berikut:

cd /test/mongoshake && ./mongoshake-stat --port=9100
Catatan

mongoshake-stat adalah skrip Python dan memerlukan Python 2.7 untuk diinstal. Untuk informasi lebih lanjut, lihat situs web resmi Python.

Contoh output:

./mongoshake-stat --port=9100

  logs_get/sec  |  logs_repl/sec  |  logs_success/sec  |          lsn.time          |        lsn_ack.time        |       lsn_ckpt.time        |         now.time           |   replset
      none      |      none       |        none        |  2019-06-20 10:34:14       |  2019-06-20 10:34:13       |  2019-06-20 10:33:36       |  2019-06-20 10:34:14       |  mgset-10
      545       |      768        |        768         |  2019-06-20 10:34:15       |  2019-06-20 10:34:15       |  2019-06-20 10:34:14       |  2019-06-20 10:34:15       |  mgset-10
      541       |      511        |        511         |  2019-06-20 10:34:15       |  2019-06-20 10:34:15       |  2019-06-20 10:34:14       |  2019-06-20 10:34:16       |  mgset-10
      639       |      512        |        512         |  2019-06-20 10:34:16       |  2019-06-20 10:34:16       |  2019-06-20 10:34:14       |  2019-06-20 10:34:17       |  mgset-10
      543       |      512        |        512         |  2019-06-20 10:34:17       |  2019-06-20 10:34:17       |  2019-06-20 10:34:14       |  2019-06-20 10:34:18       |  mgset-10
      546       |      768        |        768         |  2019-06-20 10:34:19       |  2019-06-20 10:34:19       |  2019-06-20 10:34:14       |  2019-06-20 10:34:19       |  mgset-10
      538       |      512        |        512         |  2019-06-20 10:34:20       |  2019-06-20 10:34:20       |  2019-06-20 10:34:19       |  2019-06-20 10:34:20       |  mgset-10
      550       |      511        |        511         |  2019-06-20 10:34:21       |  2019-06-20 10:34:21       |  2019-06-20 10:34:19       |  2019-06-20 10:34:21       |  mgset-10
      546       |      512        |        512         |  2019-06-20 10:34:22       |  2019-06-20 10:34:22       |  2019-06-20 10:34:19       |  2019-06-20 10:34:22       |  mgset-10
      531       |      512        |        512         |  2019-06-20 10:34:23       |  2019-06-20 10:34:23       |  2019-06-20 10:34:19       |  2019-06-20 10:34:23       |  mgset-10
      547       |      512        |        512         |  2019-06-20 10:34:24       |  2019-06-20 10:34:24       |  2019-06-20 10:34:19       |  2019-06-20 10:34:24       |  mgset-10
      541       |      512        |        512         |  2019-06-20 10:34:24       |  2019-06-20 10:34:24       |  2019-06-20 10:34:19       |  2019-06-20 10:34:25       |  mgset-10

Deskripsi parameter:

Parameter

Deskripsi

logs_get/sec

Jumlah oplog yang diambil per detik.

logs_repl/sec

Jumlah operasi replay oplog yang dilakukan per detik.

logs_success/sec

Jumlah operasi replay oplog yang berhasil per detik.

lsn.time

Timestamp oplog terakhir yang dikirim.

lsn_ack.time

Timestamp saat operasi tulis dikonfirmasi oleh instans tujuan.

lsn_ckpt.time

Timestamp saat checkpoint dipersistensikan.

now.time

Waktu saat ini.

replset

Nama replica set database sumber.

Migrasikan data dari database admin

MongoDB tidak merekomendasikan secara resmi menyimpan data bisnis di database admin karena perilaku locking dan konflik dengan perintah internal dapat menurunkan kinerja instans.

MongoShake mendukung sinkronisasi data bisnis dari database admin ke database non-admin.

Untuk melakukannya, ikuti Prosedur. Pada Langkah 4, saat Anda mengubah file collector.conf, tambahkan item konfigurasi berikut:

filter.pass.special.db = admin

# Migrasikan semua koleksi bisnis dari database admin ke newDB.
transform.namespace = admin:newDB
# Atau, migrasikan koleksi abc di database admin ke koleksi def di database target. Anda dapat mengonfigurasi beberapa aturan.
transform.namespace = admin.abc:target.def

Lampiran

Tabel 1. parameter collector.conf

Kategori

Parameter

Deskripsi

Contoh

N/A

conf.version

Versi file konfigurasi. Jangan ubah nilai ini.

conf.version = 4

Opsi global

id

ID tugas sinkronisasi. Anda dapat menyesuaikan nilai ini. ID ini digunakan untuk nama file log, nama database penyimpanan informasi checkpoint, dan nama database pada instans tujuan.

id = mongoshake

master_quorum

Opsi ketersediaan tinggi. Saat node primary dan standby MongoShake menyinkronkan data dari sumber yang sama, atur parameter ini ke true pada node MongoShake primary.

Nilai yang valid:

  • true: diaktifkan

  • false: dinonaktifkan

Catatan

Nilai default adalah false.

master_quorum = false

full_sync.http_port

Port HTTP untuk melihat status sinkronisasi penuh.

Catatan

Nilai default adalah 9101.

full_sync.http_port = 9101

incr_sync.http_port

Port HTTP untuk melihat status sinkronisasi inkremental.

Catatan

Nilai default adalah 9100.

incr_sync.http_port = 9100

system_profile_port

Port profiling yang digunakan untuk melihat informasi stack internal.

system_profile_port = 9200

log.level

Tingkat log. Nilai yang valid:

  • error: Informasi tingkat error.

  • warning: Informasi tingkat warning.

  • info: Pesan informatif tentang status sistem saat ini.

  • debug: Informasi debugging.

Nilai default: info.

log.level = info

log.dir

Direktori untuk file log dan file PID. Jika parameter ini tidak diatur, direktori logs di path saat ini digunakan secara default.

Catatan

Anda harus menentukan jalur mutlak untuk parameter ini.

log.dir = ./logs/

log.file

Nama file log. Anda dapat menyesuaikan nilai ini.

Catatan

Nilai default adalah collector.log.

log.file = collector.log

log.flush

Frekuensi penyegaran log di layar. Nilai yang valid:

  • true: mencetak setiap entri log segera. Ini dapat memengaruhi kinerja.

  • false: tidak menjamin setiap entri log dicetak segera. Opsi ini meningkatkan kinerja.

Catatan

Nilai default adalah false.

log.flush = false

sync_mode

Mode sinkronisasi data. Nilai yang valid:

  • all: melakukan sinkronisasi penuh dan sinkronisasi inkremental.

  • full: hanya melakukan sinkronisasi penuh.

  • incr: hanya melakukan sinkronisasi inkremental.

Catatan

Nilai default adalah incr.

sync_mode = all

mongo_urls

URI string koneksi instans MongoDB sumber. Pada contoh ini, akun database adalah test, yang berada di database admin.

Catatan

mongo_urls = mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

mongo_cs_url

Jika sumbernya adalah instans kluster sharded, Anda harus menentukan URI string koneksi node ConfigServer (CS). Untuk informasi cara mendapatkan URI string koneksi node ConfigServer, lihat Ajukan titik akhir untuk shard.

Pada contoh ini, akun database adalah test, yang berada di database admin.

mongo_cs_url = mongodb://test:****@dds-bp19f409d7512****-csxxx.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****-csxxx.mongodb.rds.aliyuncs.com:3717/admin

mongo_s_url

Jika sumbernya adalah instans kluster sharded, Anda harus menentukan URI string koneksi minimal satu node mongos. Pisahkan beberapa alamat mongos dengan koma (,). Untuk informasi cara mendapatkan URI string koneksi node mongos, lihat Ajukan titik akhir untuk shard.

Pada contoh ini, akun database adalah test, yang berada di database admin.

mongos_s_url = mongodb://test:****@s-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,s-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin

tunnel

Jenis channel sinkronisasi. Nilai yang valid:

  • direct: menyinkronkan data langsung ke instans MongoDB tujuan.

  • rpc: menyinkronkan data menggunakan NET/RPC.

  • tcp: menyinkronkan data menggunakan TCP.

  • file: menyinkronkan data menggunakan transfer file.

  • kafka: menyinkronkan data menggunakan Kafka.

  • mock: hanya untuk tujuan pengujian. Data tidak ditulis ke channel.

Catatan

Nilai default adalah direct.

tunnel = direct

tunnel.address

Alamat tujuan. Format alamat yang didukung bervariasi berdasarkan jenis tunnel:

  • Jika tunnel diatur ke direct, tentukan URI string koneksi instans MongoDB tujuan.

  • Jika tunnel diatur ke rpc, tentukan alamat penerima RPC instans tujuan.

  • Jika tunnel diatur ke tcp, tentukan alamat penerima TCP instans tujuan.

  • Jika tunnel diatur ke file, tentukan jalur file data instans tujuan.

  • Jika tunnel diatur ke kafka, tentukan alamat Kafka, seperti topic@brokers1,brokers2.

  • Jika tunnel diatur ke mock, biarkan parameter ini kosong.

Pada contoh ini, akun database adalah test, yang berada di database admin.

tunnel.address = mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

tunnel.message

Tipe data dalam channel. Parameter ini hanya berlaku jika tunnel diatur ke kafka atau file. Nilai yang valid:

  • raw: tipe default. Data ditulis dan dibaca dalam batch.

  • json: data ditulis ke Kafka dalam format JSON, sehingga pengguna dapat membacanya secara langsung.

  • bson: data ditulis ke Kafka dalam format biner BSON.

Catatan

Nilai default adalah raw.

tunnel.message = raw

mongo_connect_mode

Mode koneksi instans MongoDB. Parameter ini hanya berlaku jika tunnel diatur ke direct. Nilai yang valid:

  • primary: menarik data dari node primary.

  • secondaryPreferred: menarik data dari node secondary.

  • standalone: menarik data dari node tunggal tertentu.

Catatan

Nilai default adalah secondaryPreferred.

mongo_connect_mode = secondaryPreferred

filter.namespace.black

Menentukan daftar hitam untuk sinkronisasi data. Namespace yang ditentukan tidak disinkronkan ke database tujuan. Pisahkan beberapa namespace dengan titik koma (;).

Catatan

Namespace adalah nama kanonis koleksi atau indeks di MongoDB. Ini merupakan kombinasi nama database dan nama koleksi atau indeks, seperti mongodbtest.customer.

filter.namespace.black = mongodbtest.customer;testdata.test123

filter.namespace.white

Menentukan daftar putih untuk sinkronisasi data. Hanya namespace yang ditentukan yang disinkronkan ke database tujuan. Pisahkan beberapa namespace dengan titik koma (;).

filter.namespace.white = mongodbtest.customer;test123

filter.pass.special.db

Mengaktifkan sinkronisasi database khusus. Secara default, database seperti admin, local, mongoshake, config, dan system.views difilter. Anda dapat mengaktifkan sinkronisasi untuk database ini sesuai kebutuhan tertentu. Pisahkan beberapa nama database dengan titik koma (;).

filter.pass.special.db = admin;mongoshake

filter.ddl_enable

Menentukan apakah sinkronisasi DDL diaktifkan. Nilai yang valid:

  • true: diaktifkan

  • false: dinonaktifkan

Catatan

Fitur ini tidak didukung jika sumbernya adalah instans kluster sharded.

filter.ddl_enable = false

checkpoint.storage.url

Alamat penyimpanan untuk checkpoint, yang digunakan untuk mendukung sinkronisasi yang dapat dilanjutkan. Jika parameter ini tidak dikonfigurasi, program menulis checkpoint ke salah satu database berikut berdasarkan jenis instans:

  • Instans replica set MongoDB: ditulis ke database mongoshake.

  • Instans kluster sharded MongoDB: ditulis ke database admin pada node ConfigServer.

Pada contoh ini, akun database adalah test, yang berada di database admin.

checkpoint.storage.url = mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717

checkpoint.storage.db

Nama database untuk menyimpan checkpoint.

Catatan

Nilai default adalah mongoshake.

checkpoint.storage.db = mongoshake

checkpoint.storage.collection

Nama koleksi untuk menyimpan checkpoint. Saat node primary dan standby MongoShake menyinkronkan data dari sumber yang sama, Anda dapat mengubah nama koleksi ini untuk mencegah konflik.

Catatan

Nilai default adalah ckpt_default.

checkpoint.storage.collection = ckpt_default

checkpoint.start_position

Posisi awal untuk sinkronisasi. Parameter ini hanya digunakan jika tidak ditemukan checkpoint. Formatnya adalah YYYY-MM-DDTHH:MM:SSZ.

Catatan

Nilai default adalah 1970-01-01T00:00:00Z.

checkpoint.start_position = 1970-01-01T00:00:00Z

transform.namespace

Mengganti nama database atau koleksi sumber dan menyinkronkannya ke tujuan. Misalnya, Anda dapat mengganti nama database A.koleksi B dari instans sumber menjadi database C.koleksi D pada instans tujuan.

transform.namespace = fromA.fromB:toC.toD

Opsi sinkronisasi penuh

full_sync.reader.collection_parallel

Jumlah maksimum koleksi yang dapat ditarik MongoShake secara konkuren dalam satu waktu.

full_sync.reader.collection_parallel = 6

full_sync.reader.write_document_parallel

Jumlah thread penulisan konkuren per koleksi untuk MongoShake.

full_sync.reader.write_document_parallel = 8

full_sync.reader.document_batch_size

Ukuran batch untuk menulis dokumen ke instans tujuan. Misalnya, nilai 128 menunjukkan bahwa 128 dokumen dikelompokkan sebelum ditulis.

full_sync.reader.document_batch_size = 128

full_sync.collection_exist_drop

Menentukan tindakan jika koleksi tujuan memiliki nama yang sama dengan koleksi sumber. Nilai yang valid:

  • true: menghapus koleksi tujuan lalu menyinkronkan koleksi sumber.

    Peringatan

    Operasi ini menghapus koleksi tujuan. Pastikan Anda memiliki backup sebelum melanjutkan.

  • false: melaporkan error dan keluar jika ditemukan koleksi dengan nama yang sama di database tujuan.

full_sync.collection_exist_drop = true

full_sync.create_index

Menentukan apakah akan membuat indeks setelah sinkronisasi selesai. Nilai yang valid:

  • foreground: membuat indeks foreground.

  • background: membuat indeks background.

  • none: tidak membuat indeks.

full_sync.create_index = none

full_sync.executor.insert_on_dup_update

Menentukan apakah akan mengonversi pernyataan INSERT menjadi pernyataan UPDATE jika database tujuan berisi field _id duplikat. Nilai yang valid:

  • true: mengonversi pernyataan.

  • false: tidak mengonversi pernyataan.

full_sync.executor.insert_on_dup_update = false

full_sync.executor.filter.orphan_document

Menentukan apakah akan memfilter dokumen yatim jika sumbernya adalah instans kluster sharded. Nilai yang valid:

  • true: memfilter dokumen yatim.

  • false: tidak memfilter dokumen yatim.

full_sync.executor.filter.orphan_document = false

full_sync.executor.majority_enable

Menentukan apakah akan mengaktifkan majority write pada instans tujuan. Nilai yang valid:

  • true: mengaktifkan majority write.

  • false: menonaktifkan majority write.

full_sync.executor.majority_enable = false

Opsi sinkronisasi inkremental

incr_sync.mongo_fetch_method

Metode untuk menarik data inkremental. Nilai yang valid:

  • oplog: menarik oplog dari database sumber.

  • change_stream: menarik event perubahan dari database sumber. Ini hanya didukung untuk MongoDB 4.0 ke atas.

Nilai default: oplog.

incr_sync.mongo_fetch_method = oplog

incr_sync.oplog.gids

Digunakan untuk mengatur replikasi dua arah untuk kluster cloud.

incr_sync.oplog.gids = xxxxxxxxxxxx

incr_sync.shard_key

Metode konkurensi internal untuk MongoShake. Jangan ubah parameter ini.

incr_sync.shard_key = collection

incr_sync.worker

Jumlah thread konkuren untuk mengirimkan oplog. Anda dapat menambah nilai ini jika kinerja host mencukupi.

Catatan

Jika sumbernya adalah instans kluster sharded, jumlah thread harus sama dengan jumlah shard.

incr_sync.worker = 8

incr_sync.worker.oplog_compressor

Mengaktifkan kompresi data untuk mengurangi konsumsi lebar pita jaringan. Nilai yang valid:

  • none: tanpa kompresi

  • gzip: mengompresi data dalam format gzip

  • zlib: mengompresi data dalam format zlib

  • deflate: mengompresi data dalam format deflate

Catatan

Parameter ini hanya berlaku jika parameter tunnel tidak diatur ke direct. Jika parameter tunnel diatur ke direct, Anda harus mengatur parameter ini ke none.

incr_sync.worker.oplog_compressor = none

incr_sync.target_delay

Penundaan, dalam detik, sebelum perubahan dari sumber diterapkan ke tujuan. Anda dapat mengatur parameter ini untuk mencegah operasi tidak disengaja. Misalnya, incr_sync.target_delay = 1800 membuat penundaan 30 menit.

Catatan

Nilai 0 menunjukkan sinkronisasi real-time.

incr_sync.target_delay = 1800

incr_sync.worker.batch_queue_size

Parameter konfigurasi antrian internal MongoShake. Jangan ubah parameter ini kecuali diperlukan.

incr_sync.worker.batch_queue_size = 64

incr_sync.adaptive.batching_max_size

incr_sync.adaptive.batching_max_size = 1024

incr_sync.fetcher.buffer_capacity

incr_sync.fetcher.buffer_capacity = 256

Opsi sinkronisasi MongoDB (hanya untuk mode direct)

incr_sync.executor.upsert

Menentukan apakah akan mengonversi pernyataan UPDATE menjadi pernyataan INSERT jika dokumen dengan _id atau indeks unik yang sesuai tidak ada. Nilai yang valid:

  • true: mengonversi pernyataan.

  • false: tidak mengonversi pernyataan.

incr_sync.executor.upsert = false

incr_sync.executor.insert_on_dup_update

Menentukan apakah akan mengonversi pernyataan INSERT menjadi pernyataan UPDATE jika dokumen dengan _id atau indeks unik yang sesuai sudah ada. Nilai yang valid:

  • true: mengonversi pernyataan.

  • false: tidak mengonversi pernyataan.

incr_sync.executor.insert_on_dup_update = false

incr_sync.conflict_write_to

Menentukan apakah akan mencatat dokumen yang bentrok jika terjadi konflik tulis selama sinkronisasi. Nilai yang valid:

  • none: tidak mencatat dokumen yang bentrok.

  • db: mencatat log konflik di database mongoshake_conflict.

  • sdk: mencatat log konflik di SDK.

incr_sync.conflict_write_to = none

incr_sync.executor.majority_enable

Menentukan apakah akan mengaktifkan majority write pada instans tujuan. Nilai yang valid:

  • true: mengaktifkan majority write.

  • false: menonaktifkan majority write.

Catatan

Mengaktifkan fitur ini dapat memengaruhi kinerja.

incr_sync.executor.majority_enable = false

FAQ

Lihat FAQ MongoShake. Jika Anda mengalami masalah lain saat menggunakan MongoShake, Anda dapat membuat issue di GitHub Issues.