Instalando e Configurando o pgAgent no Linux (pgAdmin e PostgreSQL)

O pgAgent é um agente de agendamento de tarefas para o banco de dados Postgresql. O pgAgent executa scripts em lote (batch), shell scripts e várias tarefas SQL em agendamentos até complexos. Será mostrado como configurar corretamente o pgAgent para seu bom funcionamento.

[ Hits: 4.598 ]

Por: Buckminster em 22/02/2023


Informações sobre os arquivos



O arquivo pgagent.sh em /etc/init.d serve para iniciar o pgAgent junto ao Systemd, pois os dois servidores Debian 11 e Ubuntu 22.04.2 LTS os quais tiveram essa instalação ficou uma dificuldade em fazer o pgAgent funcionar, pois o Systemd não o reconhecia.

O arquivo rc-local.service em /usr/lib/systemd/system geralmente é criado junto com o sistema. É este arquivo que permite nas novas versões que criemos o arquivo rc.local para colocar arquivos de inicialização com o sistema quando necessário.

O arquivo rc.local, que, segundo dizem, está obsoleto, porém, às vezes é necessário criá-lo, pois no Systemd é muito mais complicado configurar para iniciar programas instalados pelo usuário junto com o sistema quando estes não são configurados automaticamente na instalação.

Estas linhas no rc.local:

pgagent hostaddr=127.0.0.1 port=5433 dbname=banco1 user=postgres
pgagent hostaddr=127.0.0.1 port=5432 dbname=banco2 user=postgres

são as strings de conexão do pgAgent compostas pelo hostaddr (hostname ou IP), a porta do banco de dados, o nome do banco e o usuário do banco.

Essa string de conexão é absolutamente necessária para o funcionamento do pgAgent.

Caso tenha mais de um banco em portas diferentes, por exemplo, um na porta 5432 e um na porta 5433, deve sempre criar uma string para cada banco.

NÃO inclua qualquer tipo de senha na string do pgAgent, pois ela pode ser armazenada como texto plano (arquivo .txt) e ficar visível.

Tanto no rc.local quanto no pgagent.sh tem a linha "systemctl start pgagent" e pode parecer redundância, porém, o rc.local em /etc/rc.local faz a inicialização com o sistema chamando /usr/bin/pgagent e o pgagent.sh em /etc/init.d atua sobre o init.d em conjunto com o Systemd agindo no /usr/bin/pgagent, que é instalado com apt-get install pgagent.

Somente com o pgagent.sh o pgAgent não inicializava com o sistema, mas inicializava manualmente com systemctl start pgagent; foi necessário o rc.local para inicialização com o sistema.

O arquivo pgagent.service em /usr/lib/systemd/system foi criado para informar ao Systemd as condições de start, stop e restart; o systemctl status pgagent não é necessário colocar em pgagent.service, pois vem na instalação.

Description=Arquivo do PgAgent feito por eu mesmo  # descrição do arquivo
ConditionFileIsExecutable=/usr/bin/pgagent # caminho do executável
After=network.target # indica que deve iniciar depois da rede

Type=simple # como "simple" o serviço é iniciado como processo principal
ExecStart=/usr/bin/pgagent start
ExecStop=/usr/bin/pgagent stop
ExecReload=/usr/bin/pgagent restart
Restart=always # sempre reiniciar após alguma falha
RestartSec=10 # reiniciar após 10 segundos parado
RemainAfterExit=yes # usado para serviços que de alguma forma mudam o estado do sistema, assim você pode interrompê-lo e iniciá-lo com mais facilidade; especifica se o serviço deve ser considerado ativo mesmo quando todos os seus processos forem encerrados.

WantedBy=multi-user.target # permite multi-usuários para o serviço junto ao sistema

Não foi abordado aqui como criar um job no pgAgent através do pgAdmin4, pois o processo é bastante fácil e auto-explicativo na interface gráfica do pgAdmin4.

Qualquer coisa olhem o primeiro link das referências abaixo, na seção "Creating a pgAgent Job" tem imagens e explicações.

Referências


Página anterior    

Páginas do artigo
   1. Introdução
   2. Instalação e Configuração
   3. Informações sobre os arquivos
Outros artigos deste autor

ClamAV, o kit de ferramentas antivírus

Instalação do PostgreSQL com Apache 2, PHP 5, OpenSSL no Debian Wheezy 7.7 64 bits com systemd e chroot

Compilação do Squid 3 no Debian Wheezy

Permissões do Linux

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

Leitura recomendada

PostgreSQL no Slackware - Importando e Exportando arquivos TXT e CSV

Sincronizando Dados do PostgreSQL no Elasticsearch

Autenticação no PostgreSQL - com exemplos

Unificando bases de dados com Schemas

Como migrar banco de dados MySQL para PostgreSQL

  
Comentários
[1] Comentário enviado por removido em 22/02/2023 - 15:07h

Estranho configurar dessa forma. Com base na documentação oficial => https://uploadme.me/view/N18



[2] Comentário enviado por Buckminster em 23/02/2023 - 14:01h


[1] Comentário enviado por amarildosertorio em 22/02/2023 - 15:07h

Estranho configurar dessa forma. Com base na documentação oficial => https://uploadme.me/view/N18





O arquivo /etc/pgagent/pgagent_12.conf não tem no Debian nem no Ubuntu.
Na instalação (apt-get install pgagent) é criado somente o /usr/bin/pgagent que é o executável.

[3] Comentário enviado por removido em 24/02/2023 - 18:08h


O arquivo /etc/pgagent/pgagent_12.conf não tem no Debian nem no Ubuntu.
Na instalação (apt-get install pgagent) é criado somente o /usr/bin/pgagent que é o executável.


https://gist.github.com/peterneave/83cefce2a081add244ad7dc1c53bc0c3

[4] Comentário enviado por Buckminster em 24/02/2023 - 22:10h


[3] Comentário enviado por amarildosertorio em 24/02/2023 - 18:08h


O arquivo /etc/pgagent/pgagent_12.conf não tem no Debian nem no Ubuntu.
Na instalação (apt-get install pgagent) é criado somente o /usr/bin/pgagent que é o executável.


https://gist.github.com/peterneave/83cefce2a081add244ad7dc1c53bc0c3



Sim, é outra forma de instalar e configurar o PgAgent.
Aqui o comando update-rc.d pgagent.sh defaults não surtiu efeito (talvez coisas do systemd), por isso tive que criar o rc.local.

E no arquivo /usr/lib/systemd/system/pgagent.service tice que mudar a linha
ExecStart=/usr/bin/pgagent -s ${LOGFILE} -l ${LOGLEVEL} host=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT}
para
ExecStart=/etc/rc.local start e criar o rc.local assim mesmo, pois com a linha original estava dando o erro
pgagent.service: start request repeated too quickly.
e não iniciava o serviço nem na reinicialização e nem com o comando systemctl start pgagent.service

Somente deu certo quando fiz a alteração.
Como eu disse, são várias formas de configurar no Linux.


[5] Comentário enviado por maurixnovatrento em 12/03/2023 - 14:59h


bom artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts