Ditt startskript bör inte initiera eller övervaka replikuppsättningen; det bör vara manuella uppgifter.
Du bör komma ihåg att:
- att initiera en replikuppsättning är strikt ett engångsjobb; när den väl har initierats kommer MongoDB-tjänsten, när den startas om, att fortsätta vara en del av samma replikuppsättning.
- en replikuppsättning innehåller normalt flera noder som bör vara utbytbara; om var och en av dem försöker initiera replikuppsättningen vid uppstart kommer de att skapa fel
- att starta om en tjänst är normalt, förväntat beteende; till exempel när du uppgraderar till nästa version av MongoDB, eller efter att patchar till din servervärd kräver en omstart eller efter ett strömavbrott
- om ditt skript försöker initiera en redan initierad replikuppsättning varje gång det startar MongoDB-tjänsten, kommer det att skapa fel
Jag rekommenderar starkt att du gör tre ändringar:
- Låt din mongo-behållare bara köra mongo, utan steg för att initiera och övervaka replikuppsättningen.
- Om du vill köra en replikuppsättning, initiera den försiktigt och på ett kontrollerat manuellt sätt; dito om du vill lägga till/ta bort noder, eller konfigurera om.
- Om du vill övervaka tillståndet för din replikuppsättning, använd ett separat verktyg för att göra det; låt mongotjänsten bara göra sitt vanliga jobb.