sql >> Database >  >> NoSQL >> MongoDB

Kan mongo-container niet uitvoeren met replicaset met docker-compose

Uw opstartscript mag de replicaset niet initialiseren of bewaken; dat zouden handmatige taken moeten zijn.

Houd er rekening mee dat:

  • het initiëren van een replicaset is strikt een eenmalige taak; zodra het is gestart, blijft de MongoDB-service, wanneer deze opnieuw wordt opgestart, deel uitmaken van dezelfde replicaset.
  • een replicaset bevat normaal gesproken meerdere knooppunten die uitwisselbaar moeten zijn; als elk van hen probeert de replicaset te initialiseren bij het opstarten, zullen ze fouten veroorzaken
  • het herstarten van een service is normaal, verwacht gedrag; bijvoorbeeld wanneer u een upgrade uitvoert naar de volgende versie van MongoDB, of nadat patches naar uw serverhost opnieuw moeten worden opgestart, of na een stroomstoring
  • als uw script een reeds geïnitialiseerde replicaset probeert te initialiseren telkens wanneer het de MongoDB-service start, zal het fouten veroorzaken

Ik raad u ten zeerste aan om drie wijzigingen aan te brengen:

  1. Laat uw mongo-container gewoon mongo uitvoeren, zonder de stappen om de replicaset te starten en te controleren.
  2. Als je een replicaset wilt draaien, start deze dan zorgvuldig en op een gecontroleerde handmatige manier; idem als je knooppunten wilt toevoegen/verwijderen, of opnieuw wilt configureren.
  3. Als je de gezondheid van je replicaset wilt controleren, gebruik dan een aparte tool om dat te doen; laat de mongo-service gewoon zijn gewone werk doen.


  1. Manytomany-veld in Django mongoengine-document

  2. Tips voor het upgraden van Percona Server voor MongoDB

  3. MongoDB:Hoe DBref op client-side op te lossen?

  4. Meteor, definieer collecties dynamisch