Por favor, habilite JavaScript para poder visualizar esta página corretamente.

Verificar Banco de PostgreSQL

Criado em 16/09/2022, por Hosco.

Apresentação

A restauração de bancos de dados é um procedimento comum nas atualizações e rollouts de ambientes computacionais, e sua validação é fundamental para assegurar que eles possam ser recolocados em produção.

O PostgreSQL é um SGBD bastante estável e suas versões mais recentes têm checksum em nivel de bloco. No entanto ele não possui uma ferramenta nativa para testar as bases de dados.

Este artigo ensina formas de verificação das bases geradas com PostgreSQL, através de seus próprios utilitários. Foi escrito em conformidade às experiências de recuperação de dados adquiridas na Hosco.

Diagrama básico de dump e restore em banco de dados
Diagrama de dump e restore em banco de dados

Pré-requisitos

PostgreSQL e Binários

O servidor SQL deve estar configurado e operante. Os programas pg_dump e pg_restore, que acompanham pacotes de instalação do PostgreSQL, precisam estar disponíveis no ambiente.

Instalar em Unix-like

A forma mais rápida de instalação é usando gerenciadores de pacotes como Apt, Yum, Dnf, Pacman, Zypper, Slapt-get, Homebrew, Pkg, entre outros.

Instalar em Windows

Em Windows pode se usar um instalador da página de downloads do PostgreSQL.

Instalando PostgreSQL em Windows
Instalando PostgreSQL em Windows Server

Backup da Base

A tarefa de gerar uma cópia ou dump do banco de dados já é uma forma de teste, aleḿ de ser uma questão básica de segurança. O backup de uma base íntegra não gera saídas de texto no terminal. Eventuais mensagens de falha durante esta etapa indicam problemas com o banco.
O backup pode ser gerado em arquivo dump de texto plano (ASCII) ou comprimido pela zlib.

Dump em ASCII

pg_dump -U postgres base_de_dados > base_de_dados_dump.sql

Dump Compactado

pg_dump -Fc -U postgres base_de_dados > base_de_dados_dump.sql

Em caso de host remoto, é necessário incluir o parâmetro -h ip_do_host.

Dump em texto plano e compactado, de banco de dados PostgreSQL
Backup de base postgreSQL

Análise da Base

O fato do arquivo de backup (dump) ter sido gerado sem erros, já indica alta probabilidade do banco estar íntegro. Mas para aumentar a segurança do procedidmento, é importante que sejam feitos outros testes - como analisar o conteúdo do arquivo de dump.

Saída Resumida

pg_restore -l base_de_dados_dump.sql | more

Saída Detalhada

pg_restore -l base_de_dados_dump.sql > base_de_dados_dump.txt
(> redireciona toda a saída do comando para um arquivo de texto)

Listagem de conteúdo de base PostgresSQL, com o pg_restore
Exibindo conteúdo de base PostgresSQL

Recuperar a Base

Esta tarefa pode demorar, dependo do tamanho do banco e dos recursos de hardware. Quanto mais cores de processamento, mais memória e maior velocidade de I/O, mais rápido será.

1- Criar uma Base Temporária

createdb -U postgres tempdb

2- Restaurar Dump para Base Temporária

pg_restore -d tempdb base_de_dados_dump.sql

3- Analisar Saída de Comando

A execução bem sucedida do comando pg_restore não gera saídas de terminal, por padrão. Mas são aceitáveis eventuais alertas causados pelas diferenças entre o ambiente original e o atual. Eles podem ser ser evitadas com uso de parâmetros como --no-owner, --schema e --if-exists.

Por outro lado, mensagens de erro referentes a cabeçalhos de arquivos, tabelas corrompidas e índices com falha, podem indicar problemas graves no arquivo dump ou na base que o gerou. Cabe ao DBA analisar e interpretar as mensagens exibidas na execução do pg_restore.

Restauração de base PostgresSQL, com o pg_restore
Recuperando conteúdo de base PostgresSQL

Considerações

O Postgre é um SGBD (Sistema Gerenciador de Bancos de Dados) muito robusto que pode suportar grande volume de dados. Também é muito seguro e seus desenvolvedores afirmam que ele é imune a inconsistências. No entanto, falhas em nível de armazenamento podem comprometer qualquer banco de dados. Nestes casos, é fundamental que as bases e seus dumps sejam devidamente testados.

Em cenários onde há informações críticas, é importante parar o serviço do Postgres e evitar qualquer procedimento. Deve-se consultar uma empresa especializada em recuperar dados de storages e servidores, como a Hosco.

#PostgreSQL #pg_restore #pg_dump #DBA #DataRecovery #RecuperaçãoDeDados #hosco