Por que, depois de excluir uma coleção de mais de 110 GB, meu diretório / var / lib / mongodb ainda tem o mesmo tamanho?

9

Estou tendo alguns problemas com o MongoDB e uso de espaço. Em particular, eu costumava ter uma grande coleção de cerca de 600 milhões de registros, totalizando mais de 110 GB em disco. Recentemente eu decidi abandoná-lo porque os dados estavam desatualizados, para fazer isso eu deixei cair a coleção através da interface web do rockmongo. Assim, o rockmongo não mostra mais a coleção, no entanto, o uso do meu disco não mudou nada.

Existe alguma operação limpa que eu não conheço, que deve ser executada para sincronizar o banco de dados com arquivos de banco de dados no disco?

Eu tentei executar um "reparo", mas o sistema reclama que não há espaço suficiente no disco ... isso é porque ele é usado pelo MongoDB.

    
por tunnuz 12.05.2011 / 15:08

3 respostas

17

Como na maioria dos sistemas de banco de dados, os arquivos de banco de dados não diminuem quando você exclui dados, os dados são apenas removidos / marcados como excluídos e o espaço é reutilizado.

Você precisará executar db.repairDatabase() para compactar o espaço, conforme indicado aqui

    
por 12.05.2011 / 15:13
2

Embora a abordagem acima de mongodump / drop / mongorestore funcione bem de uma perspectiva técnica, será necessário que você coloque o banco de dados offline enquanto faz isso, o que seria um evento que afeta o serviço.

Se você quiser fazer isso sem tempo de inatividade E se você estiver usando Conjuntos de Réplicas do MongoDB [1], você pode fazer assim:

  1. Selecione um membro e pare o MongoDB lá (service mongodb stop). Se este era o PRIMÁRIO, espere que outro membro seja eleito PRIMÁRIO.
  2. Remova os arquivos de dados desse membro (cd / var / lib / mongodb; rm *).
  3. Reinicie o serviço MongoDB novamente (service mongodb start).
  4. Aguarde o membro sincronizar novamente com o PRIMARY (rs.status ()).
  5. Isso reconstruirá apenas os arquivos de dados necessários (menores).

Em seguida, repita as etapas acima para cada um dos outros membros no conjunto de réplicas.

[1] link )

    
por 04.04.2016 / 23:43
0

De acordo com este FAQ link

a única maneira é fazer o seguinte:

  • configuração fresca & réplica vazia
  • sincronizá-lo com o mestre
  • defina como mestre
por 14.09.2017 / 17:19