MongoMultiMaster הוא כלי Python המאפשר לך להגדיר את שכפול רב-אמן עם MongoDB & nbsp;. זה בהחלט לא נתמך על ידי 10gen, יצרני MongoDB.
זה עובד על ידי תשאול oplog על סט העתק אחד וליישם את פעילותה לקבוצת העתק נוספת. הוא תומך בשכפול דו-כיוונית על ידי תיוג כל מסמך משוכפל עם המקור שלה.
התקנה
כדי להתקין, פיפס שימוש:
PIP להתקין MongoMultiMaster
התקנה MongoDB
MMM צריך גישה לקבוצת העותקים המשוכפלת oplog לכל אמן. משמעות דבר היא שזה לא עובד עם שרתים שמוגדרים כשרתים עצמאיים. כדי להמיר שרת עצמאי לסט העתק סינגלטון, ראשון שאתה צריך לספר על הסט זה בזמן השקתו:
& Nbsp; mongod --replSet foo
ואז, כדי להתחיל את סט ההעתק, אתה צריך לבצע את הפעולות הבאות בקליפת Mongo:
> Rs.initiate ()
התקנה MongoMultiMaster Replication
לאחר שיצרת אמן סט העתק, תצטרך להגיד לי MMM בי השרתים. הדבר נעשה באמצעות קובץ config YAML. קובץ config מדגם עם שני שרתים כלולים להלן:
server_a:
& Nbsp; id: '2c88ae84-7cb9-40f7-835d-c05e981f564d'
& Nbsp; אורי: "MongoDB: // localhost: 27019"
server_b:
& Nbsp; id: '0d9c284b-b47c-40b5-932c-547b8685edd0'
& Nbsp; אורי: "MongoDB: // localhost: 27017"
ראשית, בואו נוודא שאין תצורה ושאנחנו יכולים להתחבר לכל השרתים בקובץ config:
mmm -c test.yml ברור-config
אודות לנקות config על שרתים: ['server_a', 'server_b'], אתה בטוח? (Yn) y
config ברור לserver_a
config ברור לserver_b
& Nbsp; mmm -c test.yml לזרוק-config
=== 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; mmm -c test.yml לשכפל --src = server_a / test.foo --dst = server_b / test.foo
& Nbsp; mmm -c test.yml לשכפל --src = server_a / test.bar --dst = server_b / test.bar
ולאשר שהם מוגדרים כראוי:
mmm -c test.yml מזבלה-config
=== 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
עכשיו, בואו נעשה את דו-כיווני שכפול:
& Nbsp; mmm -c test.yml לשכפל --src = server_b / test.foo --dst = server_a / test.foo
& Nbsp; mmm -c test.yml לשכפל --src = server_b / test.bar --dst = server_a / test.bar
ולוודא שזה נכון ...
mmm -c test.yml מזבלה-config
=== 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
עכשיו אנחנו יכולים להפעיל את המשכפל:
& Nbsp; mmm -c test.yml ריצה
דברים יש להביא בחשבון
- שכפול יכול לפגר אם אתה כותב הרבה. זה לא מטופל כלל.
- שכפול מתחיל במועד שבי mmm ריצה נקראת ראשונה. אתה אמור להיות מסוגל להפסיק / להתחיל mmm ויש לו להרים בו נעצר.
- ניגודים בין האדונים אינם מטופלים; אם אתה כותב לאותו המסמך בשני הראשים בתדירות גבוהה, אתה יכול לצאת מסנכרון.
- שכפול מוסיף שדה הנהלת חשבונות לכל מסמך לסמל את UUID השרת שכתב את המסמך אחרון. זה מרחיב את הגודל של כל מסמך מעט.
יש כנראה קצוות חדים, באגים שלא נענו אחרים, ודברים מגעילים שונים מחכים לך אם אתה משתמש בMMM במערכת ייצור ללא בדיקה יסודית. . אבל אם אתה אוהב לרוץ עם מספריים ואחרים המתגוררים באופן מסוכן, אל תהסס לנסות אותו
דרישות :
- Python
תגובות לא נמצא