Como agendar um backup automático do PostgreSQL no Cron evitando o problema de senha

Este artigo mostra como agendar um backup automático do PostgreSQL no Cron evitando o problema de senha, ou seja, como fazer o pg_dump ser executado no Cron (crontab -e) e não solicitar senha. Outro problema que acontece também é quando o Cron executa o comando pg_dump, mas salva um arquivo de backup em branco, isso é devido a permissão que veremos adiante.

[ Hits: 3.790 ]

Por: Buckminster em 06/02/2024


Backup automático com Postgres e Cron



Leia todo o artigo antes de sair executando comandos, a não ser que você saiba o que está fazendo!

De todos os softwares utilizados na confecção desta peça articular, somente um se feriu, mas já foi aplicado um curativo (patch) e ele está passando bem!

Nível de execução: Intermediário

Os comandos foram realizados no Debian, mas podem ser usados em qualquer distribuição tendo o cuidado em verificar os caminhos digitados, pois isso muda de acordo com cada um. Os comandos são para PostgreSQL versão 10 e acima. Para versão 9.0 e anteriores você deve pesquisá-los na documentação do PostgreSQL e adaptá-los às suas necessidades; links nas referências.

Levo em conta que você já tenha o PostgreSQL instalado e configurado e com um usuário e um banco de dados criados com as devidas senhas. No final tem um "resumão" com os comandos. Levaremos em conta os dados abaixo, depois substitua pelos seus.
  • Nome do banco de dados: perdido;
  • Usuário do banco de dados: postgres;
  • Porta: 5432;
  • Senha do usuário postgres: 123456.

No link abaixo você encontra como alterar o pg_hba.conf, sugiro fazer o que está no link e depois criar o .pgpass para agendar no Cron com o comando crontab -e, mas é da sua escolha, pois são ações independentes:
***CASO VOCÊ INSTALOU O POSTGRESQL COM sudo, SUGIRO EFETUAR OS COMANDOS ABAIXO COM sudo EM VEZ DE LOGAR COMO ROOT***

1. CRIE O ARQUIVO OCULTO .pgpass

Primeiro logue como root:

su -

Digite a senha.

Mudará para o prompt (ou parecido):

root@usuario:~#

Crie o primeiro arquivo .pgpass em ~/.pgpass (no diretório home do root):

# vim ~/.pgpass
ou
sudo vim ~/.pgpass

(usei o vim, use teu editor de texto preferido)

Coloque dentro a seguinte linha:

localhost:5432:perdido:postgres:123456

Salve e saia do arquivo. No final tem as explicações da linha.

Dê a permissão necessária:

# chmod 600 ~/.pgpass

Veja bem, a permissão 600 é estritamente necessária, senão o arquivo será ignorado.

Em algumas distribuições, a criação de um segundo arquivo .pgpass em /var/lib/postgresql não se faz necessária; aliás, até no Debian (dependendo da versão do Debian e/ou do PostgreSQL) é necessário somente o .pgpass em ~/.pgpass.

Teste criando primeiro somente o arquivo em ~/.pgpass (home do root) com a devida permissão e vá para a etapa 2 e teste no Cron alterando o horário e verificando se o arquivo de backup foi criado e, caso não der, crie o outro .pgpass em /var/lib/postgresql com o usuário do banco de dados conforme o roteiro adiante.

O segundo arquivo .pgpass, caso for necessário, crie em /var/lib/postgresql com o usuário postgres.

De root logue para o usuário postgres:

# su postgres
ou
sudo su postgres

cd /var/lib/postgresql

O prompt mudará para

postgres@usuario:~$

Dê um ls para confirmar que mudou de diretório.

ls
15

(aqui aparecerá a pasta com a versão do PostgreSQL, no caso é o 15)

vim .pgpass

Coloque dentro a seguinte linha:

localhost:5432:perdido:postgres:123456

Salve e saia do arquivo.

Dê a permissão necessária:

chmod 600 .pgpass

Veja bem, a permissão 600 é estritamente necessária, senão o arquivo será ignorado.

Confirme a criação do arquivo:

ls -la

Saia do usuário postgres:

exit

    Próxima página

Páginas do artigo
   1. Backup automático com Postgres e Cron
   2. Criando a linha no cron
Outros artigos deste autor

Permissões do Linux

Redes de Computadores · IPtables · Endereços IPs - Explicações básicas

Como um monte de letras de um código fonte transforma-se em voltagens?

Atualizar o macOS no Mac - Opencore Legacy Patcher

Instalar Minecraft, League of Legends e Fortnite no Linux

Leitura recomendada

Instalando PostgreSQL 8.1 com extensão para dados espaciais (PostGis) e interface de gerenciamento (PgAdmin3)

Sincronizando Dados do PostgreSQL no Elasticsearch

PostgreSQL 9.4 - Replicação com slots

Replicação de dados síncrona com Postgres

PostgreSQL 9.4 - O conceito de Role

  
Comentários
[1] Comentário enviado por maurixnovatrento em 07/02/2024 - 18:31h


Muito bom artigo.

______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10

[2] Comentário enviado por amarildosertorio em 12/02/2024 - 11:51h

Sugestão pra backup e restore do PostgreSQL - Barman (Backup and Recovery Manager)

https://tureba.org/postgresql-barman.html


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts