MongoMultiMaster este un instrument Python care vă permite să configurați replicare multi-master cu MongoDB. & Nbsp; este categoric nu este acceptat de 10gen, factorii de decizie de MongoDB.
Acesta acționează prin interogarea oplog pe un set replica și aplicarea operațiunilor sale la un alt set de replici. Aceasta susține replicarea bidirecțională prin etichetarea fiecărui document replicat cu sursa acesteia.
Instalarea
Pentru a instala, utiliza PIP:
Pip instala MongoMultiMaster
MongoDB Setup
MMM are nevoie de acces la replica seta oplog pentru fiecare maestru. Acest lucru înseamnă că nu funcționează cu servere care sunt configurate ca servere de sine stătătoare. Pentru a converti un server independent pentru un set de replici Singleton, mai întâi trebuie să-l spun despre set este în cel moment de lansare:
& Nbsp; mongod --replSet foo
Apoi, pentru a porni set de replici, aveți nevoie pentru a executa următoarele la shell Mongo:
> Rs.initiate ()
MongoMultiMaster Replication Setup
După ce ați creat comandantul set de replici, va trebui să-i spuneți MMM în cazul în care serverele sunt. Acest lucru se face printr-un fișier de configurare YAML. Un fișier de configurare probă cu două servere este inclus de mai jos:
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"
În primul rând, să verificați că nu există nici o configurare și pe care ne putem conecta la toate serverele din fișierul de configurare:
mmm -c test.yml clar-config
Despre să îndepărteze config pe serverele: ['server_a "," server_b "], ești sigur? (In) y
Config Clear pentru server_a
Config Clear pentru server_b
& Nbsp; mmm -c test.yml benă-config
=== Config Server ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => MongoDB: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => MongoDB: // localhost: 27017
=== Server_a Replication Config
=== Server_b Replication Config
Mai departe, vom înființat două colecții replicat:
& Nbsp; mmm -c test.yml reprodusă --src = server_a / test.foo --dst = server_b / test.foo
& Nbsp; mmm -c test.yml reprodusă --src = server_a / test.bar --dst = server_b / test.bar
Și a confirma că sunt configurate corect:
mmm -c test.yml benă-config
=== Config Server ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => MongoDB: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => MongoDB: // localhost: 27017
=== Server_a Replication Config
=== Server_b Replication Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Acum, hai să facem bidirecțional de replicare:
& Nbsp; mmm -c test.yml reprodusă --src = server_b / test.foo --dst = server_a / test.foo
& Nbsp; mmm -c test.yml reprodusă --src = server_b / test.bar --dst = server_a / test.bar
Și verificați dacă este corect ...
mmm -c test.yml benă-config
=== Config Server ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => MongoDB: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => MongoDB: // localhost: 27017
=== Server_a Replication Config
& Nbsp; - test.foo <= server_b / test.foo
& Nbsp; - test.bar <= server_b / test.bar
=== Server_b Replication Config
& Nbsp; - test.foo <= server_a / test.foo
& Nbsp; - test.bar <= server_a / test.bar
Acum putem rula replicator:
& Nbsp; mmm -c test.yml centrare
Lucruri să ia în considerare
- Replication pot cădea în spatele dacă scrii foarte mult. Acest lucru nu este manipulat deloc.
- Replication începe în momentul în care mmm centrare fost chemat întâi. Tu ar trebui să poată opri / porni mmm și l-au ridica de unde a rămas.
- Conflictele dintre stăpâni nu sunt tratate; dacă sunteți scris aceluiași document pe ambele capete frecvent, puteți obține de sincronizare.
- Replication introduce un câmp de contabilitate în fiecare document pentru a semnifica UUID server care ultimul a scris documentul. Acest lucru extinde dimensiunea fiecărui document ușor.
Există, probabil, muchii ascuțite, alte bug-uri pierdute, și diverse lucruri urât de așteptare pentru tine, dacă utilizați MMM într-un sistem de producție fără testare aprofundată. . Dar dacă vă place rulează cu foarfece și alte trai periculos, nu ezitați să-l încercați
Cerințe :
- Python
Comentariile nu a fost găsit