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.
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.
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***
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:
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:
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
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
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