Dit opstartsscript bør ikke initialisere eller overvåge repliksættet; det burde være manuelle opgaver.
Du skal huske på, at:
- at starte et replikasæt er strengt taget en enkeltstående opgave; når den først er startet, vil MongoDB-tjenesten, når den genstartes, fortsat være en del af det samme replikasæt.
- et replikasæt indeholder normalt flere noder, som bør være udskiftelige; hvis hver af dem forsøger at initialisere replikasættet ved opstart, vil de give fejl
- genstart af en tjeneste er normal, forventet adfærd; for eksempel når du opgraderer til den næste version af MongoDB, eller efter patches til din servervært kræver en genstart eller efter en strømafbrydelse
- hvis dit script forsøger at initialisere et allerede initialiseret replikasæt, hver gang det starter MongoDB-tjenesten, vil det give fejl
Jeg anbefaler kraftigt, at du foretager tre ændringer:
- Lad din mongo-beholder bare køre mongo uden trinene til at starte og overvåge replikasættet.
- Hvis du vil køre et replikasæt, skal du starte det omhyggeligt og på en kontrolleret manuel måde; ditto hvis du vil tilføje/fjerne noder eller omkonfigurere.
- Hvis du vil overvåge tilstanden af dit replikasæt, skal du bruge et separat værktøj til at gøre det; lad mongotjenesten bare gøre sit almindelige arbejde.