Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Faça backup de clusters fragmentados com dumps de reconhecimento de data center

Nesta página

  • Sobre esta tarefa
  • Antes de começar
  • Passos
  • Próximos passos

A partir do MongoDB 7.1, você pode fazer backup de dados em clusters fragmentados usando mongodump.

mongodump é um utilitário que cria uma exportação binária do conteúdo do banco de dados. Você pode usar o utilitário mongodump para fazer backups autogerenciados de um cluster fragmentado.

Para fazer um backup consistente de um cluster fragmentado com mongodump, você deve primeiro parar o balancer, parar as gravações e parar quaisquer operações de transformação de esquema no cluster. Isso garante que o cluster permaneça em um estado consistente durante o backup.

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

Esta tarefa utiliza mongodump para fazer backup de um cluster fragmentado. Certifique-se de ter um cluster em execução que contenha dados em coleções fragmentadas.

Este procedimento requer uma versão do MongoDB que suporte o bloqueio de sincronização do mongos.

A partir do MongoDB 7.1 (também disponível a partir de 7.0.2, 6.0.11 e 5.0.22) o fsync e Os comandos do fsyncUnlock podem ser executados no mongos para realizar o bloqueio e desbloquear um cluster fragmentado.

Para executar estas tarefas, o usuário deve ter a autorização do fsync , que permite ao usuário 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.

Para obter mais informações, consulte Janela de agendamento de backup para clusters fragmentados.

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 aguardará a conclusão do balanceamento.

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

sh.getBalancerState()
false

O comando retorna false quando o balanceador está parado.

3

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

Para bloquear um cluster fragmentado, conecte-se a mongos e use 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 garanta que todos os shards estejam bloqueados:

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

Para fazer o backup do cluster fragmentado, use mongodump para se conectar ao 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 primary dos servidores de configuração, execute o seguinte pipeline de agregação e garanta que todos os shards estejam desbloqueados:

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { } },
{ $facet: {
"locked": [
{ $match: { $and: [
{ fsyncLock: { $exists: true } },
{ fsyncLock: 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 balancer, 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.

Você pode restaurar um banco de dados a partir de um backup mongodump usando mongorestore.

  • Para restaurar um cluster fragmentado, execute mongorestore em mongos.

  • Para migrar para um conjunto de réplica ou servidor independente, execute mongorestore contra mongod.

Para mais informações, consulte Fazer Backup e Restaurar com as Ferramentas do MongoDB.

← Faça backup de um cluster fragmentado com snapshots do sistema de arquivos