PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Opções de backup em nuvem para PostgreSQL


Este blog foi atualizado em 27/11/18 e 29/11/18 para fazer as alterações recomendadas por nossos incríveis comentaristas!

Como acontece com qualquer outro componente de um negócio, os bancos de dados são extremamente importantes para o funcionamento interno.

Seja o núcleo do negócio ou apenas outro componente, os bancos de dados devem ter backups regulares e armazenados em locais seguros para uma possível recuperação futura.

Devo fazer backup na nuvem?


Uma regra geral é ter pelo menos 3 cópias de qualquer coisa de valor e armazenar esses backups em locais diferentes. Os backups na mesma unidade são inúteis se a própria unidade morrer, os backups do mesmo host também correm risco se o host ficar inativo e os backups do mesmo edifício também estão em perigo se o edifício queimar (drástico e improvável, mas possível).

Os backups em nuvem oferecem uma solução fácil para a necessidade de backups externos sem a necessidade de ativar um novo hardware em um local secundário. Existem muitos serviços em nuvem diferentes que oferecem armazenamento de backup, e escolher o correto dependerá das necessidades de backup, requisitos de tamanho, custo e segurança.

Os benefícios de ter backups na nuvem são muitos, mas principalmente giram em torno de ter esses backups armazenados em um local diferente do banco de dados principal, permitindo que tenhamos uma rede de segurança em caso de recuperação de desastres. Embora não entremos em detalhes sobre como configurar cada uma dessas opções de backup, exploraremos algumas ideias e configurações diferentes para backups.

Existem algumas desvantagens em armazenar backups na nuvem, começando com a transferência. Se os backups do banco de dados forem extremamente grandes, pode levar muito tempo para fazer o upload real e pode até aumentar os custos se o serviço de nuvem cobrar pela transferência de largura de banda. A compressão é altamente recomendada para manter o tempo e os custos baixos.

A segurança pode ser outra preocupação com a hospedagem de backups na nuvem, enquanto algumas empresas têm diretrizes rígidas sobre onde seus dados são armazenados e existem. Se a segurança for uma preocupação, qualquer backup pode ser criptografado antes de exportá-los para um serviço de hospedagem na nuvem.

Opções de backup em nuvem


Existem várias maneiras diferentes de criar backups de banco de dados para PostgreSQL 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 inteligente pode ser criada com um pouco de script.

Backups de instantâneos


Snapshots são backups que possuem uma cópia do banco de dados PostgreSQL em um momento específico. Esses backups são criados usando pg_dump, que simplesmente despeja o banco de dados em um único arquivo, ou copiando o diretório de dados base para o PostgreSQL. Qualquer um deles pode ser compactado, copiado para outras unidades e servidores e copiado para a opção de armazenamento em nuvem desejada.

Usando pg_dump com compactação
pg_dump -Fc severalnines > severalnines.dmp

Backup do diretório de dados usando pg_basebackup

O programa pg_basebackup pode ser usado para criar um backup de base muito facilmente. Para obter mais informações sobre todos os recursos e como configurá-los, visite a documentação oficial da versão do PostgreSQL que está sendo usada.
pg_basebackup --format=tar -z -D severalnines_basebackup

Amazon S3

Com a plataforma AWS da Amazon, o S3 é um serviço de armazenamento de dados que pode ser usado para armazenar backups de banco de dados. Embora os backups possam ser carregados por meio da interface da web, a Amazon CLI (Command Line Interface) pode ser usada para fazer isso a partir da linha de comando e por meio de scripts de automação de backup. Informações sobre a AWS CLI podem ser encontradas aqui. 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 Glacier da Amazon, fornecendo armazenamento de longo prazo muito mais barato.
aws s3 cp severalnines.dmp s3://severalninesbucket/backups

A Amazon também possui diferentes regiões para seus serviços em todo o mundo. Embora tenham um bom histórico de tempo de atividade, a distribuição de cópias de backups em várias regiões aumenta as opções de recuperação de desastres e reduz as chances de perda de dados valiosos.

Armazenamento do Microsoft Azure


A plataforma em nuvem da Microsoft, Azure, possui opções de armazenamento com sua própria interface de linha de comando, as informações podem ser encontradas aqui.
az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup

Quaisquer outros serviços modernos de armazenamento em nuvem devem oferecer ferramentas semelhantes para copiar backups em seus servidores em nuvem, consulte sua documentação para obter detalhes.

Backups em espera


Às vezes, os próprios backups podem ser extremamente grandes, mesmo se compactados, e o upload de um backup diário ou semanal para um serviço de nuvem pode estar fora de questão devido às velocidades e/ou custos da largura de banda. Portanto, obter um backup na nuvem para proteção é muito mais difícil.

Uma maneira de fazer isso é ter um warm ou hot standby em execução em uma máquina virtual baseada em nuvem, como uma instância EC2 da Amazon, onde é uma cópia exata do banco de dados mestre principal e os únicos dados enviados para a instância de nuvem é qualquer alteração, em vez de outra cópia de todo o banco de dados. Isso exigiria a transferência de todo o banco de dados de uma só vez, mas depois disso, apenas as alterações precisam ser transferidas.

Mas um servidor em espera é realmente um backup? Se o banco de dados mestre cair, o standby pode ser transformado no mestre e os aplicativos redirecionados para ele, no entanto, se o objetivo for ter backups para um determinado ponto no tempo ao longo da última semana/meses, isso não funcionará.

Para corrigir isso, várias coisas podem ser feitas. O próprio standby pode ser forçado a ter um atraso, ingerindo dados apenas uma vez que tenha um dia, por exemplo. Outra é criar backups de uma das maneiras tradicionais (pg_dump, cópia do diretório de dados) na nuvem em espera, o que significa que esses backups não precisarão ser transferidos pela rede, pois estão sendo criados na própria máquina na nuvem. As transferências na rede geralmente são mais rápidas e baratas.

Backups do ClusterControl e a nuvem


Vários noves criaram o ClusterControl, um sistema de gerenciamento de banco de dados que ajuda a gerenciar muitos bancos de dados diferentes, incluindo o PostgreSQL. É uma caixa de ferramentas definitiva para qualquer administrador de banco de dados ou sistema ter controle e visibilidade completos de seus bancos de dados e inclui recursos de backup muito úteis.

Com o ClusterControl, os backups de bancos de dados PostgreSQL podem ser facilmente gerenciados, agendados e configurados para copiar automaticamente os backups feitos para serviços de “armazenamento em nuvem”, incluindo Amazon S3, Microsoft Azure e Google Cloud. Isso faz com que não seja necessário criar scripts de ferramentas personalizadas para fazer upload de backups para a nuvem, além de fornecer uma interface de usuário agradável para os backups em geral.

O backup de nossos bancos de dados deve sempre acontecer, e armazená-los em segundo, terceiro e quarto locais é uma prática muito boa e comum. Colocar uma opção de nuvem aumenta as opções de recuperação de desastres e coloca mais uma camada de estabilidade de back-end para uma empresa, onde em muitos casos, se o banco de dados desaparecer, a empresa desaparecerá. Explorar as opções de backup na nuvem hoje pode eliminar desastres amanhã.