Faça backup e restaure um sistema autogerenciado com ferramentas MongoDB
Nesta página
Este tutorial descreve o processo para criar cópias de segurança e restaurar dados usando os utilitários de linha de comando mongorestore
e mongodump
fornecidos com o MongoDB.
Para restaurar um backup de sua implantação auto-hospedada para uma implantação gerenciada do MongoDB Atlas, consulte Seed with mongorestore.
Para um método de backup totalmente gerenciado, use os Cloud Backups no MongoDB Atlas, que fornecem armazenamento de backup localizado usando a funcionalidade nativa de snapshot do provedor de serviços em nuvem do cluster.
Considerações
Implantações
Os utilitários mongorestore
e mongodump
usam despejos de dados BSON e são úteis para criar backups de pequenas implantações. Para backups resilientes e sem interrupções, use snapshots do sistema de arquivos ou snapshots de disco no nível de bloco com os backups em nuvem do MongoDB Atlas.
Observação
Faça backup de clusters fragmentados com MongoDB Atlas
Para usar mongodump
e mongorestore
como uma estratégia de backup para clusters fragmentados, consulte Fazer backup de um cluster fragmentado autogerenciado com um despejo de banco de dados.
Os clusters fragmentados também podem usar um dos seguintes processos coordenados de backup e restauração, que mantêm as garantias de atomicidade das transações entre shards:
Impacto no desempenho
Como o mongodump
e o mongorestore
operam interagindo com uma instância do mongod
em execução, eles podem afetar o desempenho do seu banco de dados em execução. As ferramentas não apenas criam tráfego para uma instância de banco de dados em execução, mas também forçam o banco de dados a ler todos os dados por meio da memória. Quando o MongoDB lê dados usados com pouca frequência, ele pode remover dados acessados com mais frequência, causando uma queda no desempenho da carga de trabalho regular do banco de dados.
Ao fazer backup de seus dados com as ferramentas do MongoDB, considere as seguintes orientações:
Rotule arquivos para que possa identificar o conteúdo do backup, bem como o ponto no tempo que o backup reflete.
Utilize uma estratégia alternativa de backup como Snapshots do sistema de arquivos ou os Backups em nuvem do MongoDB Atlas se o impacto de desempenho do
mongodump
emongorestore
for inaceitável para seu caso de uso.Para garantir que o
mongodump
possa fazer um backup consistente de um conjunto de réplicas, você deve usar a opção--oplog
para capturar gravações recebidas durante as operações de backup ou interromper todas as gravações no conjunto de réplicas durante o backup.Para conjuntos de réplicas de clusters fragmentados, consulte Fazer backup de um cluster fragmentado autogerenciado com um despejode banco de dados.
Garanta que seus backups sejam utilizáveis restaurando-os para um MongoDB deployment de teste.
Para ajudar a reduzir a probabilidade de inconsistências em um backup de cluster fragmentado, você deve interromper o balanceador, interromper todas as operações de gravação e interromper qualquer transformação do esquema durante o backup.
Dica
Veja também:
Métodos de Backup para uma Implementação Autogerenciada e Backups do MongoDB Atlas Cloud para obter mais informações sobre o backup de instâncias do MongoDB. Além disso, considere a seguinte documentação de referência para as MongoDB Database Tools:
Formato de saída
mongorestore
e mongodump
podem enviar dados para um arquivo compactado, que é uma alternativa de arquivo único a vários arquivos BSON. Os arquivos compactados são formatos voltados para fins especiais compatíveis com gravações de arquivos não contíguas. Eles permitem backups simultâneos do MongoDB, bem como restaurações no MongoDB. O uso de arquivos compactados otimiza a entrada/saída de disco enquanto as operações de backup e restauração são executadas.
Você também pode arquivar arquivos de saída na saída padrão (stdout
). A gravação na saída padrão permite a migração de dados em redes, a redução da pegada de entrada/saída de disco e ganhos de simultaneidade nas ferramentas do MongoDB e no mecanismo de armazenamento.
Para mais informações sobre arquivos compactados, veja a opção --archive
.
Procedimentos
Faça backup de um banco de dados com mongodump
Observação
Faça backup de clusters fragmentados com MongoDB Atlas
Para usar mongodump
e mongorestore
como uma estratégia de backup para clusters fragmentados, consulte Fazer backup de um cluster fragmentado autogerenciado com um despejo de banco de dados.
Os clusters fragmentados também podem usar um dos seguintes processos coordenados de backup e restauração, que mantêm as garantias de atomicidade das transações entre shards:
Excluir local
banco de dados
mongodump
exclui o conteúdo do banco de dados local
em sua saída.
Acesso necessário
Para executar mongodump
em uma implantação do MongoDB que tenha controle de acesso habilitado, você deve ter privilégios que concedam a ação find
para cada banco de dados a ser submetido a backup. A função backup
integrada fornece os privilégios necessários para realizar o backup de todo e qualquer banco de dados.
O papel do backup
fornece privilégios adicionais para criar uma cópia de segurança da coleção do system.profile
que existe ao executar com perfil do banco de dados.
mongodump
Operações básicas
O utilitário mongodump
faz o backup dos dados conectando-se a um mongod
em execução.
A utilidade pode criar um backup para um servidor inteiro, banco de dados ou collection, ou pode usar uma query para fazer backup de apenas parte de uma collection.
Na execução do mongodump
sem nenhum argumento, o comando se conecta à instância do MongoDB no sistema local (por exemplo, localhost
) na porta 27017
e cria um backup do banco de dados denominado dump/
no diretório atual.
Para criar cópia de segurança de dados de uma instância do mongod
executando na mesma máquina e na porta padrão do 27017
, utilize o seguinte comando:
mongodump
Para especificar o host e a porta da instância MongoDB, você pode:
Especifique o nome do host e a porta na connection string
--uri
, usando uma string de conexão SRV ou padrão:mongodump --uri="mongodb+srv://username:password@cluster0.example.mongodb.net" <additional_options> Especifique o nome do host e a porta na string
--host
:mongodump --host="mongodb0.example.com:27017" <additional_options> Especifique o nome de host e a porta no
--host
e--port
:mongodump --host="mongodb0.example.com" --port=27017 <additional_options>
O mongodump
gravará arquivos BSON que contêm uma cópia dos dados acessíveis por meio da escuta mongod
na porta do host 27017
mongodb.example.net
. Consulte Criar backups de instâncias não locais mongod
para obter mais informações.
Para especificar um diretório de saída diferente, você pode utilizar a opção --out
or -o
:
mongodump --out=/opt/backup/mongodump-1
Para limitar a quantidade de dados incluídos no despejo do banco de dados, você pode especificar --db
e --collection
como opções para mongodump
. Por exemplo:
mongodump --collection=myCollection --db=test
Essa operação cria um despejo da coleção denominada myCollection
a partir do banco de dados test
em um subdiretório do dump/
do diretório de trabalho atual.
mongodump
substitui os arquivos de saída se houver algum na pasta de dados de backup. Antes de executar o comando mongodump
várias vezes, verifique se você não precisa mais dos arquivos na pasta de saída (o padrão é a pasta dump/
) ou renomeie as pastas ou arquivos.
Criar backups utilizando oplogs
A opção --oplog
com mongodump
coleta as entradas de oplog e permite que você execute um backup em um banco de dados ativo. Se você restaurar o banco de dados posteriormente a partir do backup, o banco de dados será o mesmo que era quando o processo de backup foi concluído.
Com --oplog
, mongodump
copia todos os dados do banco de dados de origem, bem como todas as entradas de oplog do início ao fim do procedimento de backup. Essa operação, em conjunto com mongorestore
--oplogReplay
, permite restaurar um backup que reflete o momento específico que corresponde ao momento em que mongodump
concluiu a criação do arquivo de despejo.
Crie backups a partir de mongod
instâncias não locais
As opções --host
e --port
para mongodump
permitem que você se conecte e faça backup de um host remoto. Considere o seguinte exemplo:
mongodump \ --host=mongodb1.example.net \ --port=3017 \ --username=user \ --password="pass" \ --out=/opt/backup/mongodump-1
Em qualquer comando mongodump
, você pode, como acima, especificar credenciais de nome de usuário e senha para especificar a autenticação do banco de dados.
Restaurar um banco de dados com mongorestore
Observação
Faça backup de clusters fragmentados com MongoDB Atlas
Para usar mongodump
e mongorestore
como uma estratégia de backup para clusters fragmentados, consulte Fazer backup de um cluster fragmentado autogerenciado com um despejo de banco de dados.
Os clusters fragmentados também podem usar um dos seguintes processos coordenados de backup e restauração, que mantêm as garantias de atomicidade das transações entre shards:
Controle de acesso
Para restaurar dados em uma implantação do MongoDB que tenha o controle de acesso ativado, a função restore
fornece os privilégios necessários para restaurar dados de backups se os dados não contiverem dados da coleção system.profile
e se você executar mongorestore
sem a opção --oplogReplay
.
Se o backup de dados incluir dados de coleção do system.profile
ou se executar com --oplogReplay
, você precisará de privilégios adicionais:
system.profile | Se os dados de backup incluírem dados de coleção As funções incorporadas |
--oplogReplay | Para executar com Conceda somente aos usuários que devem executar |
mongorestore
Operações básicas
O utilitário mongorestore
restaura um backup binário criado pelo mongodump
. Por padrão, mongorestore
procura um backup do banco de dados no diretório dump/
.
O utilitário mongorestore
restaura dados conectando-se diretamente a um mongod
em execução.
mongorestore
pode restaurar um backup de banco de dados inteiro
ou um subconjunto do backup.
Observação
Todas as coleções MongoDB têm UUIDs por padrão. Quando o MongoDB restaura as coleções, as coleções restauradas retêm seus UUIDs originais. Ao restaurar uma coleção onde nenhum UUID estava presente, o MongoDB gera um UUID para a coleção restaurada.
Para mais informações sobre UUIDs de coleção, consulte Coleções.
Para usar mongorestore
para conectar a um mongod
ativo, use um comando com o seguinte formulário de protótipo:
mongorestore --uri <connection string> <path to the backup>
Considere o seguinte exemplo:
mongorestore /opt/backup/mongodump-1
Aqui, o mongorestore
importa a cópia de segurança do banco de dados no diretório /opt/backup/mongodump-1
para a instância do mongod
executando na interface do localhost na porta 27017
padrão.
Usar um arquivo oplog para fazer backup e restaurar dados
Para capturar gravações que podem ocorrer durante a execução do mongodump
, use mongodump --oplog
. mongodump
cria um arquivo oplog.bson
com entradas de oplog para cada gravação ocorrida durante a execução. Você pode aplicar as operações de oplog com mongorestore
--oplogReplay
.
Para ver exemplos, consulte Exemplos de mongodump e Exemplos de mongorestore.
Todos os dados do arquivo oplog.bson
são restaurados.
mongorestore --oplogReplay
não permite restaurar dados para um ponto no tempo arbitrário. Use mongorestore --oplogReplay
para garantir que os dados restaurados estejam atualizados com todas as gravações que ocorreram durante a execução do mongodump --oplog
.
Observação
--oplog
destina-se ao uso com conjuntos de réplicas. Para clusters fragmentados, incluindo conjuntos de réplicas que fazem parte de um ambiente fragmentado, consulte Fazer backup de um cluster fragmentado autogerenciado com um despejo de banco de dados.
Você pode considerar usar também a opção mongorestore --objcheck
para verificar a integridade dos objetos quando inseri-los no banco de dados, ou pode considerar a opção mongorestore --drop
para descartar cada coleção do banco de dados antes de restaurá-los a partir dos backups.
Restaurar backups para mongod
instâncias não locais
Por padrão, mongorestore
se conecta a uma instância do MongoDB em execução na interface localhost e na porta padrão (27017
). Se você quiser restaurar para um host ou porta diferente, use as opções --host
e --port
.
O exemplo a seguir que especifica as opções --host
e --port
:
mongorestore --host=mongodb1.example.net --port=3017
Se estiver fazer a restauração de uma instância que impõe controle de acesso, inclua o --username
e o --authenticationDatabase
. Omita a opção --password
para que o mongorestore
solicite a senha:
mongorestore \ --host=mongodb1.example.net \ --port=3017 \ --username=user \ --authenticationDatabase=admin \ /opt/backup/mongodump-1