sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo docker-opsætning brudt efter genstart (unifi-controller på raspberry pi)

Du har en datafil korruption fra den urene afmontering af disken under nedlukningen. Selvom du gendanner databasen, kan du stadig få problemer på grund af inkonsistens mellem nøglerne i databasen. Følgende er en procedure til at løse disse problemer korrekt

Gendan MongoDB fra pludselig fejl

  1. Hvis databasefilerne er på din vært, skal du lave en kopi af dem, før du starter denne procedure. For at kopiere dem kan du bruge

    docker cp <container_name>:<location of files in container> <location on host>
    

    Hvis databasefilerne stadig er inde i containeren, skal du hente den udvendige container og lave en kopi

  2. Start en reparationsbeholder over filerne som følger:

    docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
    

    Billednavnet afhænger af platformen, og for Raspberry PI3 er navnet andresvidal/rpi3-mongodb3 , for arm64v8 eller for amd64 er containeren mongo

    Sørg for, at du har den samme version af MongoDB-billedet som den, der blev brugt til at oprette datafilerne.

    Hvis filerne ikke kan repareres, prøv:

    docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
    
  3. Når filerne er repareret, skal du starte en container over databasen og eksportere filerne med

    docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
    
  4. Start en ren database til dit projekt og brug mongorestore for at importere dataene i den nye database.

Du kan tjekke følgende links for mere information:



  1. Sørg for, at indekset ikke virker - MongoDB

  2. Brug Mongosniff til at afklare, hvad din MongoDB hører og siger

  3. hvordan man opdaterer et objekt fra mLab-samlingen ved hjælp af _id

  4. Hvordan installerer man mongoDB på Windows?