MongoMultiMaster yra Python įrankis, kuris leidžia jums sukurti multi-master replikacijos su MongoDB & nbsp;. Jis kategoriškai nepalaiko 10gen, kad iš MongoDB kūrėjai.
Jis veikia užklausų apie vieną replika rinkinys oplog ir taikyti savo veiklą į kitą replika rinkinys. Jis palaiko dvipusį replikaciją žymėjimas kiekvieną dokumentą pakartotas su savo šaltiniu.
Diegimas
Jei norite įdiegti, pip:
PIP įdiegti MongoMultiMaster
MongoDB Sąranka "
MMM turi prieigą prie replika nustatytą oplog kiekvieno šeimininko. Tai reiškia, kad jis neveikia su serveriais, kurie yra sukonfigūruotas kaip atskiri serveriai. Norėdami konvertuoti atskirą serverį į pavienį replika rinkinys, pirmiausia reikia pasakyti, apie rinkinio Tai ne paleidimo metu:
& Nbsp; mongod --replSet foo
Tada pradėti replika rinkinį, jums reikia atlikti po tuo Mongo lukštais:
> Rs.initiate ()
MongoMultiMaster replikacijos Sąranka "
Sukūrę replika Nustatyti pagrindinį, jums reikia pasakyti mmm kur serveriai yra. Tai daroma per yaml config failą. Imties konfigūracijos failą su dviem serveriais yra įtrauktas žemiau:
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: 27.017"
Pirma, galime įsitikinti, kad nėra jokių konfigūracija ir kad mes galime prisijungti prie visų į config failą serveriuose:
mmm -c test.yml aišku-config
Apie išvalyti config serveriuose: ['server_a "," server_b'], tu tikrai? (In) Y
Išvalyti config už server_a
Išvalyti config už server_b
& Nbsp; mmm -c test.yml dump-config
=== Serverio konfig ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27.017
=== Server_a replikacijos Config
=== Server_b replikacijos Config
Be to, mes įsteigti dvi pakartotas kolekcijas:
& Nbsp; mmm -c test.yml pakartoja --src = server_a / test.foo --dst = server_b / test.foo
& Nbsp; mmm -c test.yml pakartoja --src = server_a / test.bar --dst = server_b / test.bar
Ir patvirtinkite jie tinkamai sukonfigūruotas:
mmm -c test.yml sąvartynas-config
=== Serverio konfig ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27.017
=== Server_a replikacijos Config
=== Server_b replikacijos Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Dabar padarykime replikacijos dviem kryptimis:
& Nbsp; mmm -c test.yml pakartoja --src = server_b / test.foo --dst = server_a / test.foo
& Nbsp; mmm -c test.yml pakartoja --src = server_b / test.bar --dst = server_a / test.bar
Ir įsitikinkite, kad ji yra teisinga ...
mmm -c test.yml sąvartynas-config
=== Serverio konfig ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27.017
=== Server_a replikacijos Config
& Nbsp; - test.foo <= server_b / test.foo
& Nbsp; - test.bar <= server_b / test.bar
=== Server_b replikacijos Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Dabar mes galime paleisti Replicator:
& Nbsp; mmm -c test.yml paleisti
Ką reikia apsvarstyti
- Replikuoti gali atsilikti, jei rašote daug. Tai nėra tvarkoma ne visiems.
- Replikacijos prasideda tuo metu, kai mmm paleisti pirmą kartą buvo vadinamas. Turėtumėte galėti sustabdyti / paleisti mmm ir jį pasiimti kur baigėte.
- Konfliktai tarp meistrų nėra tvarkomi; jei rašote, kad tame pačiame dokumente abiejų vadovų dažnai, galite gauti out of sync.
- Replikacijos įterpia buhalterijos srityje į kiekvieno dokumento, reiškia serverio UUID kad praėjusiais parašė dokumentą. Tai praplečia kiekvieno dokumento formatą, šiek tiek.
Yra tikriausiai aštrių briaunų, kitų praleistų klaidų, ir įvairių nemalonių dalykų laukia tavęs, jei jūs naudojate mmm į gamybos sistemą be nuodugnaus tikrinimo. . Bet jei jums patinka veikia su žirklėmis ir kitaip gyvena pavojingai, nedvejodami išbandyti
Reikalavimai :
- Python
Komentarai nerastas