Pular para o conteúdo

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.
Buckminster Buckminster
Hits: 5.845 Categoria: Banco de Dados Subcategoria: Postgres
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Backup automático com Postgres e Cron
   2. Criando a linha no cron

Squid - Entendendo um pouco as configurações

ClamAV, o kit de ferramentas antivírus

DHCP com controle de IP e compartilhamento no Debian Squeeze

Compilação de Kernel

O Kernel Linux

Vacuum - otimizando sua base de dados PostgreSQL

Automação comercial livre no Slackware 12

PostgreSQL básico - Testado e pronto para ser usado

PostGIS no Slackware

Sincronizando Dados do PostgreSQL no Elasticsearch

Contribuir com comentário

Entre na sua conta para comentar.