Todas as empresas hoje têm (ou deveriam ter) um Plano de Recuperação de Desastres (DRP) para evitar a perda de dados em caso de falha; construído de acordo com um Objetivo de Ponto de Recuperação (RPO) aceitável para o negócio.
Um backup é um começo básico em qualquer DRP, mas para garantir a usabilidade do backup, um único backup não é suficiente. A melhor prática é armazenar os arquivos de backup em três locais diferentes, um armazenado localmente no servidor de banco de dados (para uma recuperação mais rápida), outro em um servidor de backup centralizado e o último na nuvem. Para esta última etapa, você deve escolher um provedor de nuvem estável e robusto para garantir que seus dados sejam armazenados corretamente e estejam acessíveis a qualquer momento.
Neste blog, veremos um dos provedores de nuvem mais famosos, o Google Cloud Platform (GCP) e como usá-lo para armazenar seus backups PostgreSQL na nuvem.
Sobre o Google Cloud
O Google Cloud oferece uma ampla variedade de produtos para sua carga de trabalho. Vejamos alguns deles e como eles estão relacionados ao armazenamento de backups do PostgreSQL na nuvem.
- Armazenamento em nuvem:permite armazenamento e recuperação em todo o mundo de qualquer quantidade de dados a qualquer momento. Você pode usar o Cloud Storage para diversos cenários, incluindo veiculação de conteúdo do site, armazenamento de dados para arquivamento e recuperação de desastres ou distribuição de grandes objetos de dados aos usuários por meio de download direto.
- Cloud SQL:é um serviço de banco de dados totalmente gerenciado que facilita a configuração, manutenção, gerenciamento e administração de seus bancos de dados relacionais PostgreSQL, MySQL e SQL Server na nuvem.
- Compute Engine:fornece máquinas virtuais executadas no Google Cloud com suporte para dimensionamento de instâncias únicas para computação em nuvem global com balanceamento de carga. As VMs do Compute Engine são inicializadas rapidamente, vêm com opções de disco local e permanente de alto desempenho e oferecem desempenho consistente.
Armazenando backups no Google Cloud
Se você estiver executando seu banco de dados PostgreSQL no Google Cloud com Cloud SQL, poderá fazer backup dele diretamente do Google Cloud Platform. No entanto, não é necessário executá-lo aqui para armazenar seus backups PostgreSQL.
Google Cloud Storage
Semelhante ao conhecido produto Amazon S3, se você não estiver executando seu banco de dados PostgreSQL com Cloud SQL, esta é a opção mais usada para armazenar backups ou arquivos no Google Cloud. Ele pode ser acessado no Google Cloud Platform, na seção Primeiros passos ou no menu esquerdo de Armazenamento. Com o Cloud Storage, você pode facilmente transferir seu conteúdo S3 aqui usando o recurso Transfer.
Como usar o Google Cloud Storage
Primeiro, você precisa criar um novo bucket para armazenar seus dados, então vá para Google Cloud Platform -> Storage -> Create Bucket
Na primeira etapa, você precisa apenas adicionar um novo nome de bucket.
Na próxima etapa, você pode especificar o tipo de local (multi-region por padrão) e o local de localização.
Então, você pode alterar a classe de armazenamento de padrão (opção padrão) para nearline ou coldline.
E então, você pode alterar o controle de acesso.
Finalmente, você tem algumas configurações opcionais, como criptografia ou política de retenção.
Agora que você criou seu novo bucket, veremos como usá-lo.
Usando a ferramenta GSutil
GSutil é um aplicativo Python que permite acessar o Cloud Storage a partir da linha de comando. Ele permite que você execute diferentes tarefas de gerenciamento de buckets e objetos. Vamos ver como instalá-lo no CentOS 7 e como fazer upload de um backup usando-o.
Faça o download do SDK do Cloud:
$ curl https://sdk.cloud.google.com | bash
Reinicie seu shell:
$ exec -l $SHELL
Execute gcloud init e configure a ferramenta:
$ gcloud init
Este comando solicitará que você faça login na sua conta do Google Cloud acessando um URL e adicionando um código de autenticação.
Agora que você tem a ferramenta instalada e configurada, vamos fazer o upload de um backup para o bucket.
Primeiro, vamos verificar nossos buckets criados:
[[email protected] ~]# gsutil ls
gs://pgbackups1/
E para copiar seu backup do PostgreSQL (ou outro arquivo), execute:
[[email protected] ~]# gsutil cp /root/backups/BACKUP-3/base.tar.gz gs://pgbackups1/new_backup/
Copying file:///root/backups/BACKUP-3/base.tar.gz [Content-Type=application/x-tar]...
| [1 files][ 4.9 MiB/ 4.9 MiB]
Operation completed over 1 objects/4.9 MiB.
O bucket de destino deve existir.
E então, você pode listar o conteúdo do diretório new_backup, para verificar o arquivo carregado:
[[email protected] ~]# gsutil ls -r gs://pgbackups1/new_backup/*
gs://pgbackups1/new_backup/
gs://pgbackups1/new_backup/base.tar.gz
Para obter mais informações sobre o uso do GSutil, consulte a documentação oficial.
Google Cloud SQL
Se você deseja centralizar todo o ambiente (banco de dados + backups) no Google Cloud, você tem disponível este produto Cloud SQL. Dessa forma, você terá seu banco de dados PostgreSQL rodando no Google Cloud e também poderá gerenciar os backups da mesma plataforma. Ele pode ser acessado no Google Cloud Platform, na seção Primeiros passos ou no menu esquerdo de Armazenamento.
Como usar o Google Cloud SQL
Para criar uma nova instância do PostgreSQL, acesse Google Cloud Platform -> SQL -> Criar instância
Aqui você pode escolher entre MySQL e PostgreSQL como mecanismo de banco de dados. Para este blog, vamos criar uma instância do PostgreSQL.
Agora, você precisa adicionar um ID de instância, senha, local e PostgreSQL versão (9.6 ou 11).
Você também tem algumas opções de configuração, como habilitar endereço IP público, tipo de máquina e armazenamento, e backups, etc.
Quando a instância do Cloud SQL é criada, você pode selecioná-la e terá uma visão geral dessa nova instância.
E você pode ir para a seção Backups para gerenciar seus backups PostgreSQL.
Para reduzir os custos de armazenamento, os backups funcionam de forma incremental. Cada backup armazena apenas as alterações em seus dados desde o backup anterior.
Google Cloud Compute Engine
Semelhante ao Amazon EC2, essa forma de armazenar informações na nuvem é mais cara e demorada do que o Cloud Storage, mas você terá controle total sobre o ambiente de armazenamento de backup. Ele também pode ser acessado no Google Cloud Platform, na seção Primeiros passos ou no menu esquerdo do Compute.
Como usar um Google Cloud Compute Engine
Para criar uma nova máquina virtual, acesse Google Cloud Platform -> Compute Engine -> Criar instância
Aqui você precisa adicionar um nome de instância, região e zona onde criá-lo. Além disso, você precisa especificar a configuração da máquina de acordo com seus requisitos de hardware e uso e o tamanho do disco e o sistema operacional a serem usados para a nova máquina virtual.
Quando a instância estiver pronta, você pode armazenar os backups aqui, por exemplo , enviando-o via SSH ou FTP usando o endereço IP externo. Vejamos um exemplo com Rsync e outro com o comando SCP Linux.
Para se conectar via SSH à nova máquina virtual, certifique-se de ter adicionado sua chave SSH na configuração da máquina virtual.
[[email protected] ~]# rsync -avzP -e "ssh -i /home/sinsausti/.ssh/id_rsa" /root/backups/BACKUP-3/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
sending incremental file list
base.tar.gz
5,155,420 100% 1.86MB/s 0:00:02 (xfr#1, to-chk=0/1)
sent 4,719,597 bytes received 35 bytes 629,284.27 bytes/sec
total size is 5,155,420 speedup is 1.09
[[email protected] ~]#
[[email protected] ~]# scp -i /home/sinsausti/.ssh/id_rsa /root/backups/BACKUP-5/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
base.tar.gz 100% 2905KB 968.2KB/s 00:03
[[email protected] ~]#
Você pode incorporar isso facilmente em um script para executar um processo de backup automático ou usar este produto com um sistema externo como o ClusterControl para gerenciar seus backups.
Gerenciando seus backups com ClusterControl
Da mesma forma que você pode centralizar o gerenciamento do banco de dados e do backup da mesma plataforma usando o Cloud SQL, você pode usar o ClusterControl para várias tarefas de gerenciamento relacionadas ao seu banco de dados PostgreSQL.
ClusterControl é um sistema de gerenciamento abrangente para bancos de dados de código aberto que automatiza as funções de implantação e gerenciamento, bem como o monitoramento de integridade e desempenho. O ClusterControl oferece suporte à implantação, gerenciamento, monitoramento e dimensionamento para diferentes tecnologias e ambientes de banco de dados. Assim, você pode, por exemplo, criar nossa instância de Máquina Virtual no Google Cloud e implantar/importar nosso serviço de banco de dados com o ClusterControl.
Criando um backup
Para esta tarefa, vá para ClusterControl -> Selecione Cluster -> Backup -> Criar Backup.
Você pode criar um novo backup ou configurar um backup agendado. Para o nosso exemplo, criaremos um único backup instantaneamente.
Você deve escolher um método, o servidor do qual o backup será feito , e onde você deseja armazenar o backup. Você também pode enviar nosso backup para a nuvem (AWS, Google ou Azure) ativando o botão correspondente.
Em seguida, especifique o uso da compactação, o nível de compactação, a criptografia e o período de retenção para seu backup.
Se você ativou a opção de upload de backup para a nuvem, verá uma seção para especificar o provedor de nuvem (neste caso, Google Cloud) e as credenciais (ClusterControl -> Integrações -> Provedores de nuvem). Para o Google Cloud, ele usa Cloud Storage, então você deve selecionar um Bucket ou até mesmo criar um novo para armazenar seus backups.
Na seção de backup, você pode ver o progresso do backup e informações como método, tamanho, localização e muito mais.
Conclusão
O Google Cloud pode ser uma boa opção para armazenar seus backups do PostgreSQL e oferece diversos produtos para isso. No entanto, não é necessário ter seus bancos de dados PostgreSQL rodando lá, pois você pode usá-lo apenas como local de armazenamento.
A ferramenta GSutil é um bom produto para gerenciar seus dados do Cloud Storage a partir da linha de comando, fácil de usar e rápido.
Você também pode combinar o Google Cloud e o ClusterControl para melhorar seu ambiente de alta disponibilidade e sistema de monitoramento PostgreSQL. Se você quiser saber mais sobre o PostgreSQL no Google Cloud, confira nossa postagem no blog de aprofundamento.