Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

db.fsyncLock() (método mongosh)

db.fsyncLock()

Limpa todas as escritas pendentes da camada de armazenamento para o disco e bloqueia o servidor para evitar escritas adicionais até que a trava seja liberada.

Começando no MongoDB 7.0.2 (também disponível a partir de 6.0.11 e 5.0.22) os métodos db.fsyncLock() e db.fsyncUnlock() podem ser executados em mongos para bloquear e desbloquear um cluster fragmentado.

Importante

Método mongosh

This page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.

Para o comando do banco de dados, consulte o comando fsync.

Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.

Servers maintain an fsync lock count. The fsyncLock() method increments the lock count while the fsyncUnlock() method decrements it. To unlock writes on a server or cluster, call the fsyncUnlock() method until the lock count reaches zero.

db.fsyncLock() tem a sintaxe:

db.fsyncLock()

A operação retorna um documento com os seguintes campos:

Campo
Descrição

info

Informações sobre o status da operação.

lockCount

Número de travas atualmente na instância.

seeAlso

Link para a documentação do comando fsync .

ok

O código de status.

db.fsyncLock() is an administrative command. Use this method to lock a server or cluster before backup operations.

Esse método está disponível em implantações hospedadas nos seguintes ambientes:

Importante

Este comando não é aceito em clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

db.fsyncLock() ensures that the data files are safe to copy using low-level backup utilities such as cp, scp, or tar. A mongod started using the copied files contains user-written data that is indistinguishable from the user-written data on the locked mongod.

Os arquivos de dados de um mongod bloqueado podem mudar devido a operações como sincronizações do registro no diário ou snapshots do WiredTiger. Embora isso não tenha efeito sobre os dados lógicos (por exemplo dados acessados pelos clientes), alguns utilidades de backup podem detectar essas alterações e emitir avisos ou não funcionar com os erros. Para obter mais informações sobre MongoDB- utilidades e procedimentos de backup recomendados, consulte Métodos de backup para um sistema autogerenciado.

Os bloqueios do Fsync são executados na primária em um conjunto de réplicas ou cluster fragmentado.

Se o primário ficar inativo ou ficar inacessível devido a problemas de rede, o cluster elege um novo primário dentre os secundários disponíveis. Se um primário com um bloqueio fsync ficar inativo, o novo primário não reterá o bloqueio fsync e poderá lidar com operações de gravação. Quando as eleições ocorrem durante as operações de backup, o backup resultante pode ser inconsistente ou inutilizável.

Para se recuperar da queda primária:

  1. Execute o método db.fsyncUnlock() até que a contagem de bloqueio atinja zero para liberar a trava em todos os nós.

  2. Issue the db.fsyncLock() command to reestablish the fsync lock on the cluster.

  3. Reinicie o backup.

Além disso, as travas de sincronização são persistentes. Quando o primário antigo ficar online de novo, você precisará executar o comando db.fsyncUnlock() para liberar a trava no nó.

The following operation runs db.fsyncLock():

db.fsyncLock()

A operação retorna o seguinte documento de status que inclui lockCount:

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

If you run db.fsyncLock() again, the operation increments the lockCount:

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

Para desbloquear a instância para escritas, execute db.fsyncUnlock() duas vezes para reduzir lockCount para 0.