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

Fazer backup de um cluster fragmentado autogerenciado com um despejo de banco de dados

Starting in MongoDB 7.1 (also available starting in 7.0.2, 6.0.11, and 5.0.22), you can back up data on sharded clusters using mongodump.

mongodump is a utility that creates a binary export of database content. You can use the mongodump utility to take self-managed backups of a sharded cluster.

Para fazer backup de um cluster fragmentado com mongodump, você deve parar o balanceador, parar gravações e interromper quaisquer operações de transformação de esquema no cluster. Isso ajuda a reduzir a probabilidade de inconsistências no backup.

O MongoDB fornece operações de backup e restauração que podem ser executadas com o balanceador e as transações em execução por meio dos seguintes serviços:

Os backups oferecem um snapshot do estado atual do banco de dados. Ao restaurar de um backup, o banco de dados restaurado não inclui alterações feitas após a conclusão do backup, o que pode resultar em perda de dados.

This task uses mongodump to back up a sharded cluster. Ensure that you have a cluster running that contains data in sharded collections.

Esse procedimento requer uma versão do MongoDB que seja compatível com o bloqueio fsync do mongos.

A partir do MongoDB 7.0.2, (também disponível a partir de 6.0.11 e 5.0.22) os comandos fsync e fsyncUnlock podem ser executados em mongos para bloquear e desbloquear um cluster fragmentado.

Para usar esse procedimento, o usuário do MongoDB deve ter a autorização fsync, que pode estar disponível por meio de uma função personalizada ou usando a função hostManager integrada.

Com essa autorização, você pode executar os comandos fsync e fsyncUnlock.

Para fazer um backup autogerenciado de um cluster fragmentado, conclua as seguintes etapas:

1

Para encontrar um bom momento para executar um backup, monitore o uso do aplicativo e do banco de dados para encontrar um horário em que seja improvável que migrações de partes, refragmentação e operações de transformação de esquema ocorram, pois podem causar um backup inconsistente.

Observação

Essas etapas só podem produzir um backup consistente se forem seguidas exatamente e se nenhuma operação estiver em andamento quando você começar.

Para obter mais informações, consulte Janela de agendamento de backup para um cluster fragmentado autogerenciado.

2

Para evitar que migrações de partes atrapalhem o backup, conecte-se a mongos e use o método sh.stopBalancer() para interromper o balanceador:

sh.stopBalancer()

Se uma rodada de balanceamento estiver em andamento, a operação aguarda a conclusão do balanceamento.

Para verificar se o balanceador está parado, use o método sh.getBalancerState():

use config
while( sh.isBalancerRunning().mode != "off" ) {
print( "Waiting for Balancer to stop..." );
sleep( 1000 );
}
3

O cluster fragmentado deve permanecer bloqueado durante o processo de backup para proteger o banco de dados de gravações, o que pode causar inconsistências no backup.

Para bloquear um cluster fragmentado, conecte mongos e utilize o método db.fsyncLock():

db.getSiblingDB("admin").fsyncLock()

Para confirmar o bloqueio, no mongos e no mongod primário dos servidores de configuração, execute o seguinte pipeline de agregação e certifique-se de que todos os fragmentos estejam bloqueados:

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { } },
{ $facet: {
"locked": [
{ $match: { $and: [
{ fsyncLock: { $exists: true } }
] } }],
"unlocked": [
{ $match: { fsyncLock: { $exists: false } } }
]
} },
{ $project: {
"fsyncLocked": { $gt: [ { $size: "$locked" }, 0 ] },
"fsyncUnlocked": { $gt: [ { $size: "$unlocked" }, 0 ] }
} }
] )
[ { fsyncLocked: true }, { fsyncUnlocked: false } ]
4

Para fazer backup do cluster fragmentado, use mongodump para se conectar a mongos e executar o backup:

mongodump \
--host mongos.example.net \
--port 27017 \
--username user \
--password "passwd" \
--out /opt/backups/example-cluster-1
5

Após a conclusão do backup, você poderá desbloquear o cluster para permitir que as gravações sejam retomadas.

Para desbloquear o cluster, use o método db.fsyncUnlock():

db.getSibling("admin").fsyncUnlock()

Para confirmar o desbloqueio, no mongos e no mongod primário dos servidores de configuração, execute o seguinte pipeline de agregação e certifique-se de que todos os fragmentos estejam desbloqueados:

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { } },
{ $facet: {
"locked": [
{ $match: { $and: [
{ fsyncLock: { $exists: true } }
] } }],
"unlocked": [
{ $match: { fsyncLock: { $exists: false } } }
]
} },
{ $project: {
"fsyncLocked": { $gt: [ { $size: "$locked" }, 0 ] },
"fsyncUnlocked": { $gt: [ { $size: "$unlocked" }, 0 ] }
} }
] )
[ { fsyncLocked: false }, { fsyncUnlocked: true } ]
6

Para reiniciar o balanceador, use o método sh.startBalancer():

sh.startBalancer()

Para confirmar que o balanceador está em execução, use o método sh.getBalancerState():

sh.getBalancerState()
true

O comando retorna true quando o balanceador está em execução.

Para restaurar o backup:

Para obter mais informações, consulte Fazer backup e restaurar com as ferramentas do MongoDB.