Home > Blog de Apoio e Recuperação > Backup e restauração para PostgreSQL. Como fazer backup do banco de dados PostgreSQL?

Backup e restauração para PostgreSQL. Como fazer backup do banco de dados PostgreSQL?

Atualizado 10th janeiro 2023, Rob Morrison

O que é PostgreSQL e por que ele precisa de backup?

O PostgreSQL é um plugin projetado para simplificar os procedimentos de backup e restauração. Há muitos motivos pelos quais seus bancos de dados podem estar em risco. Por exemplo, falha de dispositivo (que pode levar a que todas as instâncias fiquem indisponíveis), corrupção de dados (que também pode se espalhar por réplicas), erro de software, erro humano, ataque de ransomware ou malware e exigências de compliance (tais como períodos de retenção e armazenamento de dados).

Se você estiver administrando um banco de dados, é fundamental manter backups regulares para que não corra o risco de perder informações valiosas e horas de trabalho. Ter uma sólida estratégia de backup e recuperação para bancos de dados é uma parte crucial do gerenciamento de dados.

Um plugin de backup como o PostgreSQL também pode ajudar você a evitar falhas dispendiosas que poderiam ser motivo de ações legais. Além disso, se algo afetar negativamente seu banco de dados (como erros inocentes ou ataques maliciosos), você poderá restaurar seus dados e fazer com que eles voltem a funcionar rapidamente. Esse artigo explicará como fazer backup e restaurar facilmente os bancos de dados Postgre.

Quais métodos de backup integrados o Postgre possui?

O PostgreSQL pode ajudar os administradores a proteger a integridade dos dados, os desenvolvedores a criar ambientes mais resilientes e seguros, e os programadores a criar novas aplicações. O plugin suporta três técnicas de backup: Dump SQL, backup a nível de sistema de arquivos e arquivamento contínuo. Vamos analisar cada uma deles com mais detalhes.

Dump SQL

O objetivo desse método de dump é gerar um arquivo com comandos SQL que possa ser enviado de volta ao servidor. Essas informações podem ajudar a recriar o banco de dados no mesmo estado em que se encontrava quando o dump foi feito. Você pode executar esse procedimento a partir de qualquer servidor remoto, desde que ele tenha acesso ao banco de dados (você precisará ter acesso completo a todas as tabelas que quiser fazer backup, então é melhor executar o dump como um usuário master do banco de dados). Dumps criados usando o backup do PostgreSQL são consistentes internamente e representam um snapshot de como o banco de dados era quando o processo foi iniciado.

O comando básico para a criação do dump é:

pg_dump dbname > dumpfile

E para a restauração é:

psql dbname < dumpfile

Uma das vantagens desse método de backup é que você pode, em geral, fazer o upload dessa saída para novas versões do PostgreSQL e transferir um banco de dados para uma arquitetura de máquina diferente (por exemplo, de um servidor de 32 bits para um de 64 bits).

Backup a nível de sistema de arquivos

Você também pode fazer backup e restaurar um banco de dados PostgreSQL, copiando os arquivos diretamente. Por exemplo, usando o comando:

tar -cf backup.tar /usr/local/pgsql/data

Porém, esse método é considerado um pouco mais impraticável ou inferior em comparação ao dump, porque:

  1. O servidor do banco de dados precisa ser desligado para obter um backup utilizável. Você não pode simplesmente proibir as conexões, é preciso parar o servidor por completo. O motivo disso é que ferramentas como o tar criam um snapshot não só do estado do sistema de arquivos, mas também do buffer interno.
  2. Você não pode fazer backup ou restaurar somente tabelas ou bancos de dados individuais selecionados de seus diretórios e arquivos, porque as informações que eles contêm não podem ser usadas sem seus respectivos arquivos de log commit.

Os backups a nível de sistema de arquivos só funcionam para o backup e restauração completos do cluster de bancos de dados. É preciso criar um “snapshot consistente” ou “snapshot congelado” de todo o volume que contém o banco de dados, e depois copiar todo o diretório de dados para um dispositivo de backup e liberar o snapshot.

Esse procedimento de backup pode ser feito enquanto o servidor estiver funcionando, basta estar ciente de que o backup salvará os arquivos do banco de dados em um estado como se o servidor não estivesse devidamente desligado (você pode fazer um checkpoint antes de criar o snapshot para reduzir o tempo de recuperação). Tenha em mente também que esse backup provavelmente será maior em tamanho do que um dump SQL.

Arquivamento contínuo

O PostgreSQL mantém um log contínuo no subdiretório pg_wal/ a todo momento, registrando todas as alterações feitas nos arquivos do banco de dados. O objetivo desse log é assegurar que, no caso de uma falha do sistema, o banco de dados possa ser restaurado consistentemente. A maneira como o PostgreSQL faz isso é “reproduzindo” as entradas do log que foram feitas desde o último checkpoint.

Essa técnica pode ser combinada com o backup a nível de sistema de arquivos um para fazer o backup dos arquivos WAL. Então, se você precisar fazer uma recuperação, pode restaurar o sistema de arquivos e depois reproduzir novamente dos arquivos WAL para levá-lo ao estado atual. A reprodução do log corrigirá quaisquer inconsistências internas, porque você pode combinar uma longa sequência de arquivos WAL e assim conseguir um backup contínuo, guardando todos esses arquivos. Além disso, se você passar essa série de arquivos para outra máquina que tenha o mesmo arquivo de backup básico, poderá ter um sistema de warm standby com uma cópia quase atual do banco de dados.

Tenha em mente que essa técnica de backup só pode restaurar grupos inteiros de bancos de dados e não subconjuntos. Ela também usa muito armazenamento de arquivos, porque guarda não só o banco de dados, mas também todo o tráfego WAL. No entanto, muitas pessoas preferem essa técnica devido à sua maior confiabilidade.

Quais produtos de backup para PostgreSQL existem no mercado, e o que eles podem oferecer?

O PostgreSQL é um sistema de gestão de banco de dados incrivelmente popular (o Stack Overflow o classificou em segundo lugar, à frente do Microsoft SQL Server, Mongo e Oracle).

Devido a sua capacidade e uso crescente, várias empresas oferecem esse sistema como parte de seu pacote de serviços. Algumas delas incluem:

  • Veeam: Essa ferramenta simples e conveniente lida eficazmente com a recuperação de desastres e o armazenamento de dados. Ela também permite que os usuários criem estratégias diferentes de acordo com vários empregos. No entanto, os clientes têm relatado longos tempos de resposta da equipe de apoio.
  • Dell Technologies: Você pode usar a central de proteção de dados deles como um painel de controle consolidado para o estado geral de todos os seus backups, usando o Networker e o Avamar. O produto, entretanto, é considerado ligeiramente antiquado e não tem evoluído muito nos últimos anos.
  • Commvault Backup and Recovery: O Commvault permite a você restaurar dados através de um console de administração controlado centralmente, eliminando a necessidade de os administradores trabalharem na prática. Seu recurso “Edge Drive” também permite que os usuários utilizem o sistema como uma nuvem privada. Alguns clientes, no entanto, relataram sérios problemas relacionados a infraestrutura. Por exemplo, uma interrupção da energia elétrica causa a corrupção dos bancos de dados de deduplicação.
  • Percona PostgreSQL distribution: O Percona oferece uma coleção de ferramentas para ajudar você a administrar seu sistema de banco de dados, instalando o PostgreSQL e o complementando com extensões para resolver tarefas práticas essenciais, além de permitir que programas de clientes enviem e recebam consultas a partir de, e para o servidor back-end do PostgreSQL.
  • Veritas: O Veritas é uma ferramenta corporativa de proteção de dados que trata de sistemas legados e permite a você expandir seus processos existentes de automatização, governança e administração para os bancos de dados EDB Postgres Advanced Server e PostgreSQL.
  • MicroFocus: O MicroFocus é um dos maiores fornecedores de softwares corporativos do mundo, oferecendo várias opções de backup para SQL Server, Oracle e PostgreSQL. Ele também pode fazer recomendações em relação ao backup dos bancos de dados através das configurações do servidor.
  • Cohesity: O Cohesity simplifica o gerenciamento em bancos de dados distribuídos e relacionais. Essa solução geralmente é escolhida por empresas com grandes volumes de dados. O Cohesity usa um recurso de Adaptador Remoto para fazer backup dos bancos de dados PostgreSQL e dos logs WAL.
  • Rubrik: O Rubrik oferece proteção contra hackers e pode ajudar as empresas a se recuperarem rapidamente dos ataques. A plataforma suporta application-aware para Oracle, SAP HANA, PostgreSQL, Microsoft SQL Server, MySQL e NoSQL.

As funcionalidades corporativas de backup e restauração para Postgres do Bacula

O Bacula é uma solução corporativa de backup de dados baseada em assinaturas que ajuda os data centers a lidar com um alto volume de dados a um custo muito baixo. Os clientes têm avaliado a empresa muito bem, pois se trata de uma solução corporativa de backup extremamente personalizável, com desempenho sólido e excelente escalabilidade.

O Bacula oferece várias vantagens em relação a seus concorrentes: Pode trabalhar com ambientes físicos, virtuais, de containers e nuvem, snapshots, deduplicação avançada, restaurações e verificação de dados, tudo isso em uma única plataforma. Você pode usar facilmente o PostgreSQL com o Bacula Enterprise.

Você pode escolher entre duas técnicas principais para fazer backup de seu banco de dados Postgres com o Bacula Enterprise: PITR (Recuperação Point in Time) ou Dump. A configuração do plugin é simples.

Primeiro, você especificará a diretriz do Plugin Directory no recurso FileDaemon do arquivo bacula-fd.conf.

Para configurar o PITR, você precisará habilitar o arquivo WAL para usar o recurso recuperação point in time do PostgreSQL. A configuração varia ligeiramente dependendo da sua versão de cluster (você terá que configurar o archive_command e o archive_mode, ou os archive_command, wal_level e archive_mode). Você também precisa habilitar a Accurate Option no seu recurso Job, porque o plugin usa informações desse modo para lidar com os backups diferenciais.

O plugin pode realizar as seguintes ações no modo PITR:

  • Backup completo: Backup de todo o diretório de dados e de todos os arquivos WAL.
  • Backup incremental: Força a troca do WAL atual e faz backup de todos os arquivos WAL que foram gerados desde o último backup.
  • Backup diferencial: Faz backup dos arquivos que mudaram desde o último backup completo e dos arquivos WAL gerados desde o último backup.

Você não poderá fazer backups incrementais ou backups diferenciais quando usar o modo Dump, mas o plugin detectará todos os bancos de dados do seu servidor.

Você também pode restaurar usuários e funções para seu cluster PostgreSQL (basta selecionar o arquivo roles.sql), um único banco de dados (selecione o diretório do banco de dados no comando restore, que deve conter o arquivo de dados e o script de criação do banco de dados), arquivos dump para um diretório, além de uma única tabela ou um cluster completo usando a PITR. Nesse caso, você precisará:

  1. Parar o servidor se ele estiver funcionando.
  2. Copiar todo o diretório de dados do cluster e quaisquer tablespaces para um local temporário (por precaução).
  3. Limpar todos os arquivos e subdiretórios existentes.
  4. Restaurar os arquivos do banco de dados do seu dump de backup.
  5. Remover os arquivos presentes em pg_xlog e copiar o arquivo do segmento WAL.
  6. Editar o arquivo de comando de recuperação no cluster e mudar seu nome para recovery.conf.
  7. Iniciar o servidor.

O Bacula usa um serviço de conexão que permite que parâmetros PostgreSQL sejam associados a um único nome de serviço, que pode ser especificado por uma conexão PostgreSQL e suas configurações associadas. Você pode testar o acesso ao banco de dados usando o comando estimate para ter certeza de que o plugin está bem configurado.

O plugin do PostgreSQL está disponível como um pacote do Bacula Enterprise para todas as plataformas suportadas, e suporta as versões 8.4, 9.0, 9.1, 9.2, 9.3, 9.4, e 9.5 do PostgreSQL. O usuário só precisa instalá-lo no cliente onde está seu cluster do PostgreSQL.

Com o Bacula, você pode fazer backup e restaurar bancos de dados PostgreSQL rapidamente e sem a necessidade de scripts complexos. O software cuida de todas as informações essenciais, ao mesmo tempo em que suporta o dump e as técnicas de backup e restauração point in time (ou PITR), incluindo backup incremental e diferencial.

Começar a usar o Bacula Enterprise é muito fácil. É só preencher o formulário e fazer o download da versão de avaliação. O Bacula possui níveis de segurança muito altos, não tem custos relacionados ao volume de dados, tem um modelo de licença por assinatura e não conta com nenhum tipo de aprisionamento tecnológico. A Bacula Systems não possui apenas o melhor software de backup de dados, mas também suporte, patches e atualizações incríveis.

Sobre o autor
Rob Morrison
Rob Morrison é o diretor de marketing da Bacula Systems. Ele começou sua carreira de marketing de TI na Silicon Graphics, na Suíça, e desempenhou intensamente várias funções de administração de marketing por quase 10 anos. Nos 10 anos seguintes, Rob também ocupou vários cargos de administração de marketing na JBoss, Red Hat e Pentaho, assegurando o crescimento da participação no mercado dessas empresas reconhecidas. Ele é formado pela Universidade de Plymouth e tem um diploma de honras em mídia digital e comunicação, além de ter feito um programa de estudos no exterior.
Deixe um comentário

Seu e-mail não será publicado. Os campos obrigatórios estão marcados com *