MongoMultiMaster ay isang Python tool na nagbibigay-daan sa iyo upang i-set up ang multi-master pagtitiklop sa MongoDB. & Nbsp; mariin Ito ay hindi suportado sa pamamagitan ng 10gen, mga gumagawa ng MongoDB.
Gumagana ito sa pamamagitan ng querying ang oplog sa isa replica set at paglalapat ng mga operasyon nito sa isa pang replica set. Sinusuportahan ito ng pandalawang direksyong pagtitiklop sa pamamagitan ng pag-tag sa bawat dokumento Ginagaya sa pinagmulan nito.
Pag-install ng
Upang i-install, gamitin ang buto ng bungang-kahoy:
buto ng bungang-kahoy-install MongoMultiMaster
MongoDB Setup
MMM nangangailangan ng access sa mga replica set oplog para sa bawat master. Ang ibig sabihin nito hindi ito gumana sa server na naisaayos bilang nakapag-iisang server. Upang mag-convert ng isang nakapag-iisang server sa isang walang pareho replica set, kailangan mo munang upang sabihin dito ang tungkol sa mga hanay ito ay nasa sa oras ng paglunsad:
& Nbsp; mongod --replSet foo
Pagkatapos, upang simulan ang replica set, kailangan mong gawin ang sumusunod sa mongo shell:
> Rs.initiate ()
MongoMultiMaster pagtitiklop Setup
Sa sandaling nalikha mo na ang replica set master, kailangan mong sabihin sa MMM kung saan ang mga server ay. Ginagawa ito sa pamamagitan ng isang YAML config file. Ang isang halimbawa ng config file gamit ang dalawang mga server ay kasama sa ibaba:
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'
Una, sabihin i-verify na walang configuration at maaari naming ikonekta sa lahat ng mga server sa config file:
MMM -c test.yml malinaw-config
Tungkol sa mga malinaw na config sa server na ito: ['server_a', 'server_b'], sigurado ka ba? (YN) y
I-clear ang config para sa server_a
I-clear ang config para sa server_b
& Nbsp; MMM -c test.yml dump-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 pagtitiklop Config
=== Server_b pagtitiklop Config
Susunod, kailangan i-set up kami ng dalawang Ginagaya ang mga koleksyon:
& Nbsp; MMM -c test.yml ginagaya --src = server_a / test.foo --dst = server_b / test.foo
& Nbsp; MMM -c test.yml ginagaya --src = server_a / test.bar --dst = server_b / test.bar
At kumpirmahin ang mga ito ay naka-configure nang tama:
MMM -c test.yml dump-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 pagtitiklop Config
=== Server_b pagtitiklop Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Ngayon, gumawa ng mga pagtitiklop pandalawang direksyong ipaalam:
& Nbsp; MMM -c test.yml ginagaya --src = server_b / test.foo --dst = server_a / test.foo
& Nbsp; MMM -c test.yml ginagaya --src = server_b / test.bar --dst = server_a / test.bar
At i-verify na ito ay tama ...
MMM -c test.yml dump-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 pagtitiklop Config
& Nbsp; - test.foo <= server_b / test.foo
& Nbsp; - test.bar <= server_b / test.bar
=== Server_b pagtitiklop Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Ngayon ay maaari naming patakbuhin ang replicator:
& Nbsp; MMM -c test.yml run
Mga bagay na Isaalang-alang
- Pagtitiklop maaaring mahuli kung sumusulat ka ng maraming. Ito ay hindi mapangasiwaan sa lahat.
- Pagtitiklop ay nagsisimula sa panahon na MMM run ay unang tinatawag. Dapat mo magagawang upang ihinto / simulan MMM at mayroon itong bumalik sa kung saan ito tumigil.
- Pula ang mga salungatan sa pagitan ng Masters ay hindi mapangasiwaan; kung ikaw ay sumusulat upang ang parehong dokumento sa parehong ulo madalas, makakakuha ka ng wala sa sync.
- Pagtitiklop pagsingit ng isang patlang Bookkeeping sa bawat dokumento upang magpahiwatig ang UUID server na huling sinulat dokumento. Pinapalaki nito ang laki ng bawat dokumento bahagyang.
May mga malamang na matulis na dulo, iba pang mga hindi nasagot na mga bug, at iba't ibang mga bastos na bagay naghihintay para sa iyo kung gumamit ka ng MMM sa isang produksyon na sistema nang walang masusing pagsubok. . Ngunit kung gusto mo tumatakbo sa gunting at kung hindi man nakatira dangerously, huwag mag-atubiling subukan ito
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan