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:
- Lassen Sie Ihren Mongo-Container einfach Mongo ausführen, ohne die Schritte zum Initiieren und Überwachen des Replikatsatzes.
- 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.
- 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.