MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Uma revisão das opções de backup do MongoDB


O backup do banco de dados nada mais é do que uma maneira de proteger ou restaurar dados. É o processo de armazenamento do estado operacional, arquitetura e dados do seu banco de dados. Pode ser muito útil em situações de interrupção técnica ou desastre. Por isso é fundamental manter o backup do seu banco de dados e que o seu banco de dados tenha um processo bom e fácil de backup.

O MongoDB fornece várias ferramentas/técnicas para fazer backup de seus bancos de dados facilmente.

Neste artigo, discutiremos alguns dos principais fluxos de trabalho de backup e restauração do MongoDB.

Geralmente, existem três opções mais comuns para fazer backup de seu servidor/cluster MongoDB.
  • Mongodump/Mongorestore
  • Gerenciador de Nuvem MongoDB
  • Instantâneos do banco de dados

Além dessas opções gerais, existem outras maneiras de fazer backup do seu MongoDB. Discutiremos todas essas opções também neste artigo. Vamos começar.

MongoDump/MongoRestore


Se você possui um banco de dados pequeno (<100 GB) e deseja ter controle total de seus backups, o Mongodump e o Mongorestore são suas melhores opções. Estes são comandos do shell do mongo que podem ser usados ​​para fazer backup manual de seu banco de dados ou coleções. O Mongodump despeja todos os dados no formato Binary JSON(BSON) para o local especificado. Mongorestore pode usar esses arquivos BSON para restaurar seu banco de dados.

Fazer backup de um banco de dados inteiro

$ sudo mongodump --db mydb --out /var/backups/mongo

Saída:
2018-08-20T10:11:57.685-0500    writing mydb.users to /var/backups/mongo/mydb/users.bson
2018-08-20T10:11:57.907-0500    writing mydb.users metadata to /var/backups/mongo/mydb/users.metadata.json
2018-08-20T10:11:57.911-0500    done dumping mydb.users (25000 documents)
2018-08-20T10:11:57.911-0500    writing mydb.system.indexes to /var/backups/mongo/mydb/system.indexes.bson

Neste comando, o argumento mais importante é --db. Ele especifica o nome do banco de dados do qual você deseja fazer backup. Se você não especificar esse argumento, o comando Mongodump fará backup de todos os seus bancos de dados, o que pode ser um processo muito intensivo.

Fazer backup de uma única coleção

$ mongodump -d mydb -o /var/backups/mongo --collection users

Este comando fará backup apenas da coleção de usuários no banco de dados mydb. Se você não der essa opção, ela fará backup de toda a coleção no banco de dados por padrão.

Fazendo backups regulares usando Mongodump/Mongorestore


Como prática padrão, você deve fazer backups regulares do seu banco de dados MongoDB. Suponha que você queira fazer um backup todos os dias às 3h03, então em um sistema Linux você pode fazer isso adicionando uma entrada cron no crontab.
$ sudo crontab -e

Adicione esta linha no crontab:
3 3 * * * mongodump --out /var/backups/mongo

Restaurar um banco de dados inteiro


Para restaurar o banco de dados, podemos usar o comando Mongorestore com a opção --db. Ele lerá os arquivos BSON criados pelo Mongodump e restaurará seu banco de dados.
$ sudo mongorestore --db mydb /var/backups/mongo/mydb

Saída
2018-07-20T12:44:30.876-0500    building a list of collections to restore from /var/backups/mongo/mydb/ dir
2018-07-20T12:44:30.908-0500    reading metadata file from /var/backups/mongo/mydb/users.metadata.json
2018-07-20T12:44:30.909-0500    restoring mydb.users from file /var/backups/mongo/mydb/users.bson
2018-07-20T12:45:01.591-0500    restoring indexes for collection mydb.users from metadata
2018-07-20T12:45:01.592-0500    finished restoring mydb.users (25000 documents)
2018-07-20T12:45:01.592-0500    done

Restaurar uma coleção inteira


Para restaurar apenas uma única coleção do db, você pode usar o seguinte comando:
$ mongorestore -d mydb -c users mydb/users.bson

Se o backup da sua coleção for feito no formato JSON em vez de BSON, você poderá usar o seguinte comando:
$ mongoimport --db mydb --collection users --file users.json --jsonArray

Vantagens

  • Muito simples de usar
  • Você tem acesso total ao seu backup
  • Você pode colocar seus backups em qualquer local, como compartilhamentos NFS, AWS S3 etc.

Desvantagens

  • Toda vez será necessário um backup completo do banco de dados, não apenas a diferença.
  • Para bancos de dados grandes, pode levar horas para fazer backup e restaurar o banco de dados.
  • Não é pontual por padrão, o que significa que, se seus dados forem alterados durante o backup, seu backup poderá resultar em inconsistência. Você pode usar a opção --oplog para resolver esse problema. Ele fará um instantâneo do banco de dados no final do processo mongodump.

Gerente de operações do MongoDB


O Ops Manager é um aplicativo de gerenciamento para MongoDB que é executado em seu data center. Ele faz backup contínuo de seus dados e fornece processos de restauração pontuais para seu banco de dados. Dentro deste aplicativo, há um agente que se conecta às suas instâncias do MongoDB. Ele primeiro executará uma sincronização inicial para fazer backup do estado atual do banco de dados. O agente continuará enviando os dados de oplog compactados e criptografados para o Ops Manager para que você possa ter um backup contínuo. Usando esses dados, o Ops Manager criará instantâneos de banco de dados. Ele criará um instantâneo do seu banco de dados a cada 6 horas e os dados do oplog serão armazenados por 24 horas. Você pode configurar o agendamento de snapshots a qualquer momento usando o Ops Manager.

Vantagens

  • É pontual por padrão
  • Não afeta o desempenho da produção, exceto na sincronização inicial
  • Suporte para instantâneos consistentes de clusters fragmentados
  • Flexibilidade para excluir coleções não críticas

Desvantagens

  • A latência da rede aumenta com o tamanho do instantâneo durante a restauração do banco de dados.

Gerenciador de Nuvem MongoDB


O MongoDB Cloud Manager é uma solução de backup baseada em nuvem que fornece restauração pontual, solução de backup contínuo e online como um serviço totalmente gerenciado. Você pode simplesmente instalar o agente do Cloud Manager para gerenciar o backup e a restauração do seu banco de dados. Ele armazenará seus dados de backup na nuvem MongoDB.

Vantagens

  • Muito simples de usar. Boa interface gráfica.
  • Backup contínuo de consultas e oplog.

Desvantagens

  • Sem controle sobre os dados de backup. Ele é armazenado na nuvem do MongoDB.
  • O custo depende do tamanho dos dados e da quantidade de alterações do oplog.
  • O processo de restauração é lento.

Arquivos de banco de dados de instantâneo


Esta é a solução mais simples para fazer backup de seu banco de dados. Você pode copiar todos os arquivos subjacentes (conteúdo de dados/diretório) e colocá-los em qualquer local seguro. Antes de copiar todos os arquivos, você deve interromper todas as operações de gravação em andamento em um banco de dados para garantir a consistência dos dados. Você pode usar o comando db.fsyncLock() para parar todas as operações de gravação.

Existem dois tipos de instantâneos:um é instantâneos em nível de nuvem e outro é instantâneos em nível de sistema operacional.

Se você estiver armazenando dados de banco de dados com um provedor de serviços de nuvem como a AWS, precisará obter snapshots do AWS EBS para backup. Por outro lado, se você estiver armazenando arquivos de banco de dados em um sistema operacional nativo como o Linux, precisará tirar instantâneos do LVM. Os instantâneos do LVM não são portáteis para outras máquinas. Portanto, os instantâneos baseados em nuvem são melhores do que os instantâneos baseados em SO.

Vantagens

  • Fácil de usar.
  • Controle total sobre instantâneos. Você pode movê-lo para qualquer data center.
  • Esses instantâneos são instantâneos de diferenças que armazenam apenas as diferenças dos instantâneos anteriores.
  • Não há necessidade de baixar os instantâneos para restaurar seu banco de dados. Você pode simplesmente criar um novo volume a partir do seu instantâneo.

Desvantagens

  • Usando esse método, você só pode restaurar seu banco de dados em pontos de interrupção.
  • Às vezes, a manutenção se torna muito complexa.
  • Para coordenar backups em todos os conjuntos de réplicas (no sistema fragmentado), você precisa de uma equipe especial de devops.

Ferramenta de backup consistente do MongoDB


O backup consistente do MongoDB é uma ferramenta para realizar backups consistentes de clusters do MongoDB. Ele pode fazer backup de um cluster com um ou vários shards em um único ponto do banco de dados. Ele usa o Mongodump como método de backup padrão. Execute o seguinte comando para fazer backup usando esta ferramenta.
$ mongodb-consistent-backup -H localhost -P 27017 -u USERNAME -p PASSWORD -l /var/backups/mongo

Todos os backups gerados por esses comandos são compatíveis com MongoRestore. Você pode usar o comando mongorestore com a opção --oplogReplay para garantir a consistência.
$ mongorestore --host localhost --port 27017 -u USERNAME -p PASSWORD --oplogReplay --dir /var/backups/mongo/mydb/dump

Vantagens

  • Código totalmente aberto
  • Funciona com cluster fragmentado
  • Fornece uma opção para backup remoto, como Amazon S3
  • Escalonamento automático disponível
  • Muito fácil de instalar e executar

Desvantagem

  • Produto não totalmente maduro
  • Poucas opções de upload remoto
  • Não suporta criptografia de dados antes de salvar em disco
  • O repositório de código oficial não possui testes adequados

Backup de controle de cluster


ClusterControl é um sistema de gerenciamento de banco de dados automatizado tudo em um. Ele permite monitorar, implantar, gerenciar e dimensionar seus clusters de banco de dados com facilidade. Suporta MySQL, MongoDB, PostgreSQL, Percona XtraDB e Galera Cluster. Este software automatiza quase todas as operações do banco de dados, como implantar um cluster, adicionar ou remover um nó de qualquer cluster, backups contínuos, dimensionar o cluster etc. Todas essas coisas, você pode fazer a partir de uma única GUI fornecida pelo sistema ClusterControl.

O ClusterControl fornece uma interface gráfica muito boa para gerenciamento de backup do MongoDB com suporte para agendamento e relatórios criativos. Ele oferece duas opções para métodos de backup.
  1. Mongodump
  2. Backup consistente do Mongodb

Assim, os usuários podem escolher qualquer opção de acordo com suas necessidades. Essa ferramenta atribui um ID exclusivo a todos os backups e o armazena neste caminho:ClusterControl> Configurações> Backup> BackupID. Se o nó especificado não estiver ativo durante o backup, a ferramenta localizará automaticamente o nó ativo do cluster e continuará o processo de backup nesse nó. Essa ferramenta também oferece uma opção para agendar os backups usando qualquer um dos métodos de backup acima. Você pode ativar/desativar qualquer trabalho de agendamento apenas alternando um botão. O ClusterControl executa o processo de backup em segundo plano para que não afete os outros trabalhos na fila.

Vantagens

  • Fácil instalação e muito simples de usar
  • Várias opções para métodos de backup
  • A programação de backup é muito fácil usando um formulário GUI simples
  • Verificação de backup automatizada
  • Relatórios de backup com status

Desvantagem

  • Ambos os métodos de backup usam internamente o mongodump, que apresenta alguns problemas ao lidar com bancos de dados muito grandes.

Conclusão


Uma boa estratégia de backup é uma parte crítica de qualquer sistema de gerenciamento de banco de dados. O MongoDB oferece muitas opções para backups e recuperação/restauração. Junto com um bom método de backup, é muito importante ter várias réplicas do banco de dados. Isso ajuda a restaurar o banco de dados sem o tempo de inatividade de nem um segundo. Às vezes, para bancos de dados maiores, o processo de backup pode consumir muitos recursos. Portanto, seu servidor deve estar equipado com boa CPU, RAM e mais espaço em disco para lidar com esse tipo de carga. O processo de backup pode aumentar a carga no servidor devido a esses motivos, portanto, você deve executar o processo de backup durante a noite ou fora do horário de pico.