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

Dicas para armazenar backups do MongoDB na nuvem

Quando se trata de backups e arquivamento de dados, os departamentos de TI estão sob pressão para cumprir acordos de nível de serviço mais rígidos, fornecer mais relatórios personalizados e aderir a requisitos de conformidade em expansão, enquanto continuam gerenciando tarefas diárias de arquivamento e backup. Sem dúvida, o servidor de banco de dados armazena algumas das informações mais valiosas da sua empresa. Garantir backups de banco de dados confiáveis ​​para evitar perda de dados em caso de acidente ou falha de hardware é uma caixa de seleção crítica.

Mas como torná-lo verdadeiramente DR quando todos os seus dados estão em um único data center ou mesmo data centers que estão na geolocalização próxima? Além disso, seja um servidor altamente carregado 24 horas por dia, 7 dias por semana ou um ambiente de baixo volume de transações, você precisará tornar os backups um procedimento contínuo sem interromper o desempenho do servidor em um ambiente de produção.

Neste blog, revisaremos o backup do MongoDB na nuvem. A nuvem mudou a indústria de backup de dados. Devido ao seu preço acessível, as empresas menores têm uma solução externa que faz backup de todos os seus dados.

Mostraremos como realizar backups seguros do MongoDB usando os serviços do mongo, bem como outros métodos que você pode usar para estender as opções de recuperação de desastres do banco de dados.

Se o seu servidor ou destino de backup estiver localizado em uma infraestrutura exposta como uma nuvem pública, provedor de hospedagem ou conectado por meio de uma rede WAN não confiável, você precisa pensar em ações adicionais em sua política de backup. Existem algumas maneiras diferentes de realizar backups de banco de dados para o MongoDB e, dependendo do tipo de backup, o tempo de recuperação, o tamanho e as opções de infraestrutura variam. Como muitas das soluções de armazenamento em nuvem são simplesmente armazenamento com diferentes front-ends de API, qualquer solução de backup pode ser executada com um pouco de script. Então, quais são as opções que temos para tornar o processo tranquilo e seguro?

Criptografia de backup do MongoDB

A segurança deve estar no centro de todas as ações que as equipes de TI realizam. É sempre uma boa ideia aplicar a criptografia para aumentar a segurança dos dados de backup. Um caso de uso simples para implementar a criptografia é onde você deseja enviar o backup para armazenamento de backup externo localizado na nuvem pública.

Ao criar um backup criptografado, lembre-se de que geralmente leva mais tempo para recuperar. O backup deve ser descriptografado antes de qualquer atividade de recuperação. Com um grande conjunto de dados, isso pode introduzir alguns atrasos no RTO.

Por outro lado, se você estiver usando as chaves privadas para criptografia, certifique-se de armazenar a chave em um local seguro. Se a chave privada estiver ausente, o backup será inútil e irrecuperável. Se a chave for roubada, todos os backups criados que usam a mesma chave serão comprometidos, pois não são mais seguros. Você pode usar o popular GnuPG ou OpenSSL para gerar chaves privadas ou públicas.

Para executar a criptografia do MongoDBdump usando o GnuPG, gere uma chave privada e siga o assistente de acordo:

$ gpg --gen-key

Crie um backup simples do MongoDBdump como de costume:
$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Criptografe o arquivo de despejo e remova o backup simples mais antigo:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz

$ rm -f db1.tar.gz
O GnuPG anexará automaticamente a extensão .gpg no arquivo criptografado. Para descriptografar,

simplesmente execute o comando gpg com o sinalizador --decrypt:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Para criar um MongoDBdump criptografado usando OpenSSL, é preciso gerar uma chave privada e uma chave pública:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Esta chave privada (dump.priv.pem) deve ser mantida em um local seguro para futura descriptografia. Para Mongodump, um backup criptografado pode ser criado canalizando o conteúdo para openssl, por exemplo

mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256

-out database.sql.enc -outform DER dump.pub.pem
Para descriptografar, basta usar a chave privada (dump.priv.pem) junto com o sinalizador -decrypt:

openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out db1.tar.gz

Compressão de Backup MongoDB

No mundo do backup em nuvem de banco de dados, a compactação é uma de suas melhores amigas. Ele pode não apenas economizar espaço de armazenamento, mas também reduzir significativamente o tempo necessário para baixar/carregar dados.

Além do arquivamento, também adicionamos suporte para compactação usando gzip. Isso é exposto pela introdução de uma nova opção de linha de comando “--gzip” tanto no mongodump quanto no mongorestore. A compactação funciona tanto para backups criados usando o diretório quanto no modo de arquivamento e reduz o uso do espaço em disco.

Normalmente, o dump do MongoDB pode ter as melhores taxas de compactação, pois é um arquivo de texto simples. Dependendo da ferramenta de compactação e da proporção, um MongoDBdump compactado pode ser até 6 vezes menor que o tamanho do backup original. Para compactar o backup, você pode canalizar a saída do MongoDBdump para uma ferramenta de compactação e redirecioná-la para um arquivo de destino

Ter um backup compactado pode economizar até 50% do tamanho do backup original, dependendo do conjunto de dados.

mongodump --db country --gzip --archive=country.archive

Limitando a taxa de transferência da rede

Uma ótima opção para backups em nuvem é limitar a largura de banda de streaming de rede (Mb/s) ao fazer um backup. Você pode conseguir isso com a ferramenta pv. O utilitário pv vem com a opção de modificadores de dados -L RATE, --rate-limit RATE que limita a transferência a um máximo de RATE bytes por segundo. O exemplo abaixo irá restringi-lo a 2 MB/s.

$ pv -q -L 2m

Transferindo backups do MongoDB para a nuvem

Agora, quando seu backup estiver compactado e protegido (criptografado), ele estará pronto para transferência.

Google Cloud

A ferramenta de linha de comando gsutil é usada para gerenciar, monitorar e usar seus intervalos de armazenamento no Google Cloud Storage. Se você já instalou o gcloud util, já tem o gsutil instalado. Caso contrário, siga as instruções para sua distribuição Linux aqui.

Para instalar a CLI do gcloud, você pode seguir o procedimento abaixo:

curl https://sdk.cloud.google.com | bash
Reinicie seu shell:
exec -l $SHELL
Execute gcloud init para inicializar o ambiente gcloud:
gcloud init
Com a ferramenta de linha de comando gsutil instalada e autenticada, crie um bucket de armazenamento regional chamado MongoDB-backups-storage em seu projeto atual.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/

Creating gs://MongoDB-backups-storage/

Amazon S3

Se você não estiver usando o RDS para hospedar seus bancos de dados, é muito provável que esteja fazendo seus próprios backups. A plataforma AWS da Amazon, S3 (Amazon Simple Storage Service) é um serviço de armazenamento de dados que pode ser usado para armazenar backups de banco de dados ou outros arquivos críticos para os negócios. Seja na instância do Amazon EC2 ou no seu ambiente local, você pode usar o serviço para proteger seus dados.

Embora os backups possam ser carregados por meio da interface da Web, a interface de linha de comando s3 dedicada pode ser usada para fazer isso a partir da linha de comando e por meio de scripts de automação de backup. Se os backups devem ser mantidos por muito tempo e o tempo de recuperação não é uma preocupação, os backups podem ser transferidos para o serviço Amazon Glacier, fornecendo armazenamento de longo prazo muito mais barato. Os arquivos (objetos da Amazon) são armazenados logicamente em um enorme contêiner plano chamado bucket. O S3 apresenta uma interface REST para seus internos. Você pode usar essa API para realizar operações CRUD em buckets e objetos, bem como alterar permissões e configurações em ambos.

O principal método de distribuição da AWS CLI no Linux, Windows e macOS é o pip, um gerenciador de pacotes para Python. Instruções podem ser encontradas aqui.

aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Por padrão, o S3 fornece durabilidade de objeto de onze 9s. Isso significa que se você armazenar 1.000.000.000 (1 bilhão) de objetos nele, você pode esperar perder 1 objeto a cada 10 anos em média. A maneira como o S3 alcança esse número impressionante de 9s é replicando o objeto automaticamente em várias zonas de disponibilidade, sobre as quais falaremos em outro post. A Amazon possui data centers regionais em todo o mundo.

Armazenamento do Microsoft Azure

A plataforma de nuvem pública da Microsoft, Azure, tem opções de armazenamento com sua interface de linha de controle. Informações podem ser encontradas aqui. A CLI do Azure de plataforma cruzada de código aberto fornece um conjunto de comandos para trabalhar com a plataforma do Azure. Ele oferece grande parte da funcionalidade vista no portal do Azure, incluindo acesso avançado a dados.

A instalação da CLI do Azure é bastante simples, você pode encontrar instruções aqui. Abaixo, você pode encontrar como transferir seu backup para o armazenamento da Microsoft.

az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup

Armazenamento Híbrido para Backups do MongoDB

Com a crescente indústria de armazenamento em nuvem pública e privada, temos uma nova categoria chamada armazenamento híbrido. A abordagem típica é manter os dados em unidades de disco locais por um período mais curto, enquanto o armazenamento de backup em nuvem seria mantido por mais tempo. Muitas vezes, a necessidade de retenção de backup mais longa vem de obrigações legais para diferentes setores (como telecomunicações que precisam armazenar metadados de conexão). Essa tecnologia permite que os arquivos sejam armazenados localmente, com as alterações sincronizadas automaticamente com o remoto na nuvem. Tal abordagem vem da necessidade de ter backups recentes armazenados localmente para restauração rápida (RTO menor), bem como objetivos de continuidade de negócios.

O aspecto importante do uso eficiente de recursos é ter retenções de backup separadas. Os dados armazenados localmente em unidades de disco redundantes seriam mantidos por um período mais curto, enquanto o armazenamento de backup em nuvem seria mantido por mais tempo. Muitas vezes, o requisito de retenção de backup mais longa vem de obrigações legais para diferentes setores (como telecomunicações que precisam armazenar metadados de conexão).

Provedores de nuvem como Google Cloud Services, Microsoft Azure e Amazon S3 oferecem armazenamento praticamente ilimitado, diminuindo as necessidades de espaço local. Ele permite que você retenha seus arquivos de backup por mais tempo, pelo tempo que desejar e não tenha preocupações com o espaço em disco local.

Gerenciamento de backup do ClusterControl - Armazenamento híbrido

Ao agendar backup com ClusterControl, cada um dos métodos de backup é configurável com um conjunto de opções sobre como você deseja que o backup seja executado. O mais importante para o armazenamento em nuvem híbrida seria:

  • Limitação de rede
  • Criptografia com gerenciamento de chaves integrado
  • Compressão
  • O período de retenção dos backups locais
  • O período de retenção dos backups na nuvem

Recursos de backup avançados do ClusterControl para nuvem, compactação paralela, limite de largura de banda de rede, criptografia , etc. Sua empresa pode aproveitar a escalabilidade da nuvem e os preços pagos conforme o uso para necessidades crescentes de armazenamento. Você pode criar uma estratégia de backup para fornecer cópias locais no datacenter para restauração imediata e um gateway perfeito para serviços de armazenamento em nuvem da AWS, Google e Azure.

TLS avançado e AES 256 Os recursos de criptografia e compactação de bits oferecem suporte a backups seguros que ocupam significativamente menos espaço na nuvem.