Você tem uma corrupção de arquivo de dados da desmontagem não limpa do disco durante o desligamento. Mesmo se você restaurar o banco de dados, ainda poderá enfrentar problemas devido à inconsistência das chaves no banco de dados. A seguir está um procedimento para abordar adequadamente esses problemas
Recuperação do MongoDB de falha abrupta
-
Se os arquivos do banco de dados estiverem em seu host, faça uma cópia deles antes de iniciar este procedimento. Para copiá-los, você pode usar
docker cp <container_name>:<location of files in container> <location on host>
Se os arquivos de banco de dados ainda estiverem dentro do contêiner, pegue o fora do contêiner e faça uma cópia
-
Inicie um contêiner de reparo sobre os arquivos da seguinte maneira:
docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
O nome da imagem depende da plataforma e, para Raspberry PI3, o nome éandresvidal/rpi3-mongodb3
, para arm64v8 ou para amd64 o contêiner émongo
Certifique-se de ter a mesma versão da imagem do MongoDB usada para criar os arquivos de dados.
Se os arquivos não puderem ser reparados, tente:
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
-
Uma vez que os arquivos são reparados, você precisa iniciar um container sobre o banco de dados e exportar os arquivos com
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
Inicie um banco de dados limpo para seu projeto e usemongorestore
para importar os dados no novo banco de dados.
Você pode verificar os seguintes links para obter mais informações:
- Exportando banco de dados com reparo
- Restaurar após a exclusão do arquivo
- Despejo e restauração do MongoDB