MongoMultiMaster is een Python-tool waarbij je voor het opzetten van multi-master-replicatie met MongoDB & nbsp;. Het is nadrukkelijk niet ondersteund door 10gen, de makers van MongoDB.
Het werkt door het bevragen van de oplog op een replica set en het toepassen van haar activiteiten naar een andere replica set. Het ondersteunt bidirectionele replicatie door tagging elk document gerepliceerd met zijn bron.
Het installeren
Te installeren, gebruiken pip:
pip MongoMultiMaster installeren
MongoDB Setup
MMM moet de toegang tot het stellen oplog voor elke master replica. Dit betekent dat het niet werkt met servers die zijn geconfigureerd als standalone servers. Om een standalone server te zetten in een singleton replica set, moet u eerst om het te vertellen over de set is het in bij de lancering tijd:
& Nbsp; mongod --replSet foo
Dan, om de replica set te beginnen, moet u het volgende in de Mongo shell uit te voeren:
> Rs.initiate ()
MongoMultiMaster Replicatie Setup
Zodra u de replica set meester hebt gemaakt, moet u MMM vertellen waar de servers zijn. Dit wordt gedaan door middel van een YAML config file. Een voorbeeld van een config file met twee servers is hieronder opgenomen:
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'
Laten we eerst eens na te gaan of er geen configuratie en dat we kunnen aansluiten op alle servers in het configuratiebestand:
mmm -c test.yml duidelijk-config
Over naar config op servers te wissen: ['Server_A', 'server_b'], weet je het zeker? (Yn) y
Duidelijke config voor Server_A
Duidelijke config voor server_b
& Nbsp; mmm -c test.yml stortplaats-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 Replication Config
=== Server_b Replication Config
Vervolgens zullen we het opzetten van twee gerepliceerde collecties:
& Nbsp; mmm -c test.yml repliceren --src = Server_A / test.foo --dst = server_b / test.foo
& Nbsp; mmm -c test.yml repliceren --src = Server_A / test.bar --dst = server_b / test.bar
En bevestig ze correct is geconfigureerd:
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 Replication Config
=== Server_b Replication Config
& Nbsp; - test.foo <= Server_A / test.foo
& Nbsp; - test.bar <= Server_A / test.bar
Nu, laten we de replicatie in twee richtingen:
& Nbsp; mmm -c test.yml repliceren --src = server_b / test.foo --dst = Server_A / test.foo
& Nbsp; mmm -c test.yml repliceren --src = server_b / test.bar --dst = Server_A / test.bar
En controleer of het correct is ...
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 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
Nu kunnen we de replicator uit te voeren:
& Nbsp; mmm -c test.yml run
Wat te Overweeg
- Replicatie kan achterblijven als je het schrijven van een stuk. Dit is helemaal niet behandeld.
- Replicatie begint op het moment waarop mmm run voor het eerst werd genoemd. Je moet in staat zijn om te stoppen / starten mmm en hebben het oppakken waar het gebleven was.
- Conflicten tussen meesters worden niet behandeld; als je aan het schrijven bent om hetzelfde document op beide hoofden vaak, kan je uit sync.
- Replicatie voegt een boekhouding veld in elk document naar de server UUID dat laatste het document schreef betekenen. Dit vergroot de omvang van elk document licht.
Er zijn waarschijnlijk scherpe randen, andere gemiste bugs, en diverse nare dingen voor u klaar als u MMM gebruiken in een productie-systeem zonder grondig testen. . Maar als je wilt lopen met schaar en anderszins gevaarlijk aan het leven, voel je vrij om het uit te proberen
Eisen
- Python
Reacties niet gevonden