sql >> Databasteknik >  >> NoSQL >> MongoDB

Det går inte att köra mongo-behållare med replikuppsättning med docker-compose

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:

  1. Låt din mongo-behållare bara köra mongo, utan steg för att initiera och övervaka replikuppsättningen.
  2. 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.
  3. 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.


  1. Hur kan jag räkna månadsvis nutid i laravel?

  2. Behöver lagra hög precision decimalvärden i MongoDB

  3. Fel räkning av dokument i MongoDB shard kluster

  4. Uppdatera en kapslad post i mongodb-arrayen när du inte känner till dokumentindexet