MongoMultiMaster είναι ένα εργαλείο Python η οποία σας επιτρέπει να δημιουργήσει μηχανισμό αντιγραφής με MongoDB & nbsp?. Είναι κατηγορηματικά δεν υποστηρίζεται από 10gen, οι ιθύνοντες της MongoDB.
Λειτουργεί με την ερώτηση της oplog σε ένα σύνολο ρεπλίκα και εφαρμόζοντας τις δραστηριότητές της σε ένα άλλο σύνολο ρεπλίκα. Υποστηρίζει αμφίδρομη αντιγραφή από την τοποθέτηση πινακίδων σε κάθε έγγραφο που αναπαράγονται με την πηγή του.
Εγκατάσταση
Για την εγκατάσταση, τη χρήση PIP:
Pip εγκαταστήσετε MongoMultiMaster
MongoDB Ρύθμιση
ΜΜΜ χρειάζεται πρόσβαση στο αντίγραφο που oplog για κάθε πλοίαρχο. Αυτό σημαίνει ότι δεν λειτουργεί με διακομιστές που έχουν ρυθμιστεί ως αυτόνομο διακομιστές. Για να μετατρέψετε ένα διακομιστή αυτόνομο σε μονήρεις σύνολο ρεπλίκα, θα πρέπει πρώτα να το πω για το σύνολο είναι σε ώρα έναρξης:
& Nbsp? Mongod --replSet foo
Στη συνέχεια, για να ξεκινήσει η σειρά ρεπλίκα, θα πρέπει να εκτελέσετε την ακόλουθη στο κέλυφος Mongo:
> Rs.initiate ()
Ρύθμιση MongoMultiMaster αναπαραγωγής
Αφού έχετε δημιουργήσει το σύνολο ρεπλίκα πλοίαρχος, θα πρέπει να πω ΜΜΜ, όπου βρίσκονται οι διακομιστές. Αυτό γίνεται μέσω ενός αρχείου config YAML. Ένα δείγμα αρχείου ρυθμίσεων με δύο διακομιστές περιλαμβάνεται παρακάτω:
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 '
Κατ 'αρχάς, ας βεβαιωθείτε ότι δεν υπάρχει καμία ρύθμιση και ότι μπορούμε να συνδεθεί με όλους τους διακομιστές στο αρχείο ρυθμίσεων:
μμμ -c test.yml σαφής-config
Σχετικά με το να καθαρίσει config σε διακομιστές: [«server_a», «server_b»], είστε σίγουροι; (ΥΝ) y
Σαφή config για server_a
Σαφή config για server_b
& Nbsp? Μμμ -c test.yml χωματερή-config
=== Διαμόρφωση διακομιστή ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => MongoDB: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => MongoDB: // localhost: 27017
=== Server_a αναπαραγωγής Config
=== Server_b αναπαραγωγής Config
Στη συνέχεια, θα δημιουργήσει δύο αναπαραχθεί συλλογές:
& Nbsp? Μμμ -c test.yml επαναληπτικές --src = server_a / test.foo --dst = server_b / test.foo
& Nbsp? Μμμ -c test.yml επαναληπτικές --src = server_a / test.bar --dst = server_b / test.bar
Και επιβεβαιώνουν ότι είναι σωστά ρυθμισμένο:
μμμ -c test.yml χωματερή-config
=== Διαμόρφωση διακομιστή ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => MongoDB: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => MongoDB: // localhost: 27017
=== Server_a αναπαραγωγής Config
=== Server_b αναπαραγωγής Config
& Nbsp? - Test.foo <= server_a / test.foo
& Nbsp? - Test.bar <= server_a / test.bar
Τώρα, ας κάνουμε την αμφίδρομη αντιγραφή:
& Nbsp? Μμμ -c test.yml επαναληπτικές --src = server_b / test.foo --dst = server_a / test.foo
& Nbsp? Μμμ -c test.yml επαναληπτικές --src = server_b / test.bar --dst = server_a / test.bar
Και βεβαιωθείτε ότι είναι σωστό ...
μμμ -c test.yml χωματερή-config
=== Διαμόρφωση διακομιστή ===
server_a (2c88ae84-7cb9-40f7-835d-c05e981f564d) => MongoDB: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => MongoDB: // localhost: 27017
=== Server_a αναπαραγωγής Config
& Nbsp? - Test.foo <= server_b / test.foo
& Nbsp? - Test.bar <= server_b / test.bar
=== Server_b αναπαραγωγής Config
& Nbsp? - Test.foo <= server_a / test.foo
& Nbsp? - Test.bar <= server_a / test.bar
Τώρα μπορούμε να τρέξουμε το πρόγραμμα αναπαραγωγής:
& Nbsp? Μμμ -c test.yml τρέξιμο
Πράγματα που εξετάζουν
- Η αναπαραγωγή μπορεί να πέσει πίσω και αν γράφεις πολλά. Αυτό δεν γίνεται καθόλου.
- Η αναπαραγωγή ξεκινά από τη στιγμή μμμ τρέχει αρχικά είχε ονομαστεί. Θα πρέπει να είναι σε θέση να σταματήσει / ξεκινήσει μμμ και να το παραλάβετε από εκεί που σταμάτησε.
- Συγκρούσεις μεταξύ τους πλοιάρχους δεν αντιμετωπίζονται? αν είστε γραπτώς στο ίδιο έγγραφο και στις δύο κεφάλια συχνά, μπορείτε να πάρετε εκτός συγχρονισμού.
- Η αναπαραγωγή εισάγει ένα πεδίο τήρησης βιβλίων σε κάθε έγγραφο που να σηματοδοτούν το UUID διακομιστή που τελευταία έγραψε το έγγραφο. Αυτό διευρύνει το μέγεθος του κάθε εγγράφου ελαφρώς.
Υπάρχουν πιθανώς αιχμηρά άκρα, άλλες αναπάντητες σφάλματα, και διάφορα δυσάρεστα πράγματα σας περιμένει αν χρησιμοποιείτε ΜΜΜ σε ένα σύστημα παραγωγής χωρίς ενδελεχή έλεγχο. . Αλλά αν σας αρέσει να τρέχετε με ψαλίδι και αλλιώς ζουν επικίνδυνα, μη διστάσετε να το δοκιμάσετε
Απαιτήσεις :
- Python
Τα σχόλια δεν βρέθηκε