MongoMultiMaster adalah alat Python yang memungkinkan Anda untuk mengatur replikasi multi-master dengan MongoDB & nbsp;. Hal ini dengan tegas tidak didukung oleh 10gen, pembuat MongoDB.
Ia bekerja dengan query oplog pada satu set replika dan menerapkan operasinya ke set replika lain. Mendukung replikasi dua arah dengan menandai setiap dokumen direplikasi dengan sumbernya.
Instalasi
Untuk menginstal, menggunakan pip:
pip menginstal MongoMultiMaster
MongoDB Pengaturan
MMM membutuhkan akses ke replika ditetapkan oplog untuk setiap guru. Ini berarti tidak bekerja dengan server yang dikonfigurasi sebagai server mandiri. Untuk mengkonversi server mandiri untuk replika set tunggal, pertama-tama Anda harus menceritakannya tentang set itu di saat peluncuran:
& Nbsp; mongod --replSet foo
Kemudian, untuk memulai set replika, anda harus menjalankan perintah berikut pada shell mongo:
> Rs.initiate ()
MongoMultiMaster Replika Pengaturan
Setelah Anda membuat replika master set, Anda harus memberitahu MMM mana server. Hal ini dilakukan melalui file konfigurasi YAML. Contoh file konfigurasi dengan dua server disertakan di bawah ini:
server_a:
& Nbsp; id: '2c88ae84-7cb9-40f7-835d-c05e981f564d'
& Nbsp; uri: 'mongodb: // localhost: 27019'
server_b:
& Nbsp; id: '0d9c284b-b47c-40b5-932c-547b8685edd0'
& Nbsp; uri: 'mongodb: // localhost: 27017'
Pertama, mari kita pastikan bahwa tidak ada konfigurasi dan bahwa kita dapat terhubung ke semua server dalam file konfigurasi:
mmm -c test.yml jelas-config
Tentang untuk konfigurasi pada server jelas: ['server_a', 'server_b'], apakah Anda yakin? (YN) y
Jelas config untuk server_a
Jelas config untuk server_b
& Nbsp; mmm -c test.yml membuang-config
=== Server Config ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27017
=== Server_a Replikasi Config
=== Server_b Replikasi Config
Selanjutnya, kita akan menyiapkan dua koleksi direplikasi:
& Nbsp; mmm c test.yml mereplikasi --src = server_a / test.foo --dst = server_b / test.foo
& Nbsp; mmm c test.yml mereplikasi --src = server_a / test.bar --dst = server_b / test.bar
Dan pastikan mereka dikonfigurasi dengan benar:
mmm -c test.yml sampah-config
=== Server Config ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27017
=== Server_a Replikasi Config
=== Server_b Replikasi Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Sekarang, mari kita membuat dua arah replikasi:
& Nbsp; mmm c test.yml mereplikasi --src = server_b / test.foo --dst = server_a / test.foo
& Nbsp; mmm c test.yml mereplikasi --src = server_b / test.bar --dst = server_a / test.bar
Dan memverifikasi bahwa itu benar ...
mmm -c test.yml sampah-config
=== Server Config ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27017
=== Server_a Replikasi Config
& Nbsp; - test.foo <= server_b / test.foo
& Nbsp; - test.bar <= server_b / test.bar
=== Server_b Replikasi Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Sekarang kita dapat menjalankan replikator:
& Nbsp; mmm -c test.yml run
Hal yang Perlu Dipertimbangkan
- Replikasi dapat jatuh di belakang jika Anda sedang menulis banyak. Ini tidak ditangani sama sekali.
- Replikasi dimulai pada saat run mmm pertama kali disebut. Anda harus dapat menghentikan / memulai mmm dan memilikinya mengambil mana ia tinggalkan.
- Konflik antara master tidak ditangani; jika Anda sedang menulis ke dokumen yang sama pada kedua kepala sering, Anda bisa keluar dari sinkronisasi.
- Replikasi menyisipkan bidang pembukuan ke dalam setiap dokumen untuk menandai UUID server yang terakhir menulis dokumen. Ini memperluas ukuran setiap dokumen sedikit.
Mungkin ada tepi tajam, bug terjawab lainnya, dan berbagai hal-hal buruk yang menunggu untuk Anda jika Anda menggunakan MMM dalam sistem produksi tanpa pengujian menyeluruh. . Tapi jika Anda suka berjalan dengan gunting dan sebaliknya tinggal berbahaya, jangan ragu untuk mencobanya
Persyaratan :
- Python
Komentar tidak ditemukan