Por que o journaling usa tanto espaço no mongodb?

7

Eu tenho um banco de dados mongodb que usa aproximadamente 1GB de espaço. Fiquei surpreso quando meu servidor ficou sem espaço, e então percebi que o jornal usa 3 GB.

A documentação diz que "Depois que o MongoDB aplicar todas as operações de gravação nos arquivos de diário, ele excluirá essas arquivos ", mas isso não parece ser o caso, uma vez que o banco de dados é sincronizado e o registro no diário é 3 vezes maior que o banco de dados inteiro.

Como posso ter esses arquivos de registro no diário excluídos e configurar o sistema para usar menos espaço?

    
por lfagundes 10.10.2013 / 21:29

1 resposta

3

A documentação que você cita está correta, se você executar o db.fsyncLock () comando você irá liberar todas as alterações no disco e os arquivos de diário serão excluídos. Assim que você executar db.fsyncUnlock () e outra gravação chegar, esses arquivos de diário serão reaparecer:

Veja um exemplo rápido de um sistema de teste:

> db.foo.insert({"id" : 1})

Veja como o diretório de revistas se parece:

$ls /usr/local/var/mongodb/journal/
j._1 lsn
$

Agora, vamos bloqueá-lo e liberar tudo no disco:

> db.fsyncLock()
{
    "info" : "now locked against writes, use db.fsyncUnlock() to unlock",
    "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
    "ok" : 1
}

O diretório do diário está vazio:

$ls /usr/local/var/mongodb/journal/
$

Desbloqueie, insira:

> db.fsyncUnlock()
{ "ok" : 1, "info" : "unlock completed" }
> db.foo.insert({"id" : 1})

Agora, temos arquivos de diário novamente:

$ls /usr/local/var/mongodb/journal/
j._2 lsn
$

Portanto, se você não estiver bloqueando, liberando os bancos de dados para o disco e constantemente gravando, você sempre terá arquivos de diário.

Da mesma forma, quando você encerra uma instância de mongod de forma limpa, os arquivos de diário serão excluídos depois que a liberação para o disco for concluída com êxito.

Se você gostaria de tornar os arquivos de diário menores, você pode analisar a execução com o --smallfiles opção. Isso fornecerá 3 x 128 MB em vez de 3 x 1 GB.

    
por 22.10.2013 / 19:29