MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongo-Container mit Replikatsatz kann nicht mit docker-compose ausgeführt werden

Ihr Startskript sollte das Replikatset nicht initialisieren oder überwachen; das sollten manuelle Aufgaben sein.

Folgendes sollten Sie beachten:

  • das Initiieren eines Replikatsatzes ist streng genommen ein einmaliger Job; Nach der Initiierung bleibt der MongoDB-Dienst nach dem Neustart weiterhin Teil desselben Replikatsatzes.
  • Ein Replikatsatz enthält normalerweise mehrere Knoten, die austauschbar sein sollten; Wenn jeder von ihnen versucht, den Replikatsatz beim Start zu initialisieren, werden Fehler ausgegeben
  • das Neustarten eines Dienstes ist normales, erwartetes Verhalten; zum Beispiel, wenn Sie auf die nächste Version von MongoDB aktualisieren, oder nachdem Patches auf Ihrem Serverhost einen Neustart erfordern, oder nach einem Stromausfall
  • Wenn Ihr Skript bei jedem Start des MongoDB-Dienstes versucht, einen bereits initialisierten Replikatsatz zu initialisieren, gibt es Fehler aus

Ich empfehle Ihnen dringend, drei Änderungen vorzunehmen:

  1. Lassen Sie Ihren Mongo-Container einfach Mongo ausführen, ohne die Schritte zum Initiieren und Überwachen des Replikatsatzes.
  2. Wenn Sie einen Replikatsatz ausführen möchten, initiieren Sie ihn sorgfältig und auf kontrollierte manuelle Weise. dito, wenn Sie Knoten hinzufügen/entfernen oder neu konfigurieren möchten.
  3. Wenn Sie den Zustand Ihres Replikatsatzes überwachen möchten, verwenden Sie dazu ein separates Tool. lassen Sie den Mongo-Dienst einfach seine normale Arbeit erledigen.