terça-feira, 18 de janeiro de 2011

PostgreSQL - PGAgent - Jobs no PostgreSQL

O PGAgent é uma aplicação que possibilita a execução agendada de tarefas no banco de dados PostgreSQL, uma vez que este agendamento não é nativo como no Oracle. Então vamos deixar de "blablabla" e mão na massa:

Este post utilizará como base o PostgreSQL 8.4 e o PGAgent 3.0.

Então como no pica-pau, e lá vamos nós...

Considerando que seu banco já está ativo, configurado para ouvir na porta 5432 e você usa RedHat like, baixe o PGAgent:

# cd /opt/resources
# wget http://wwwmaster.postgresql.org/download/mirrors-ftp/pgadmin3/release/pgagent/pgAgent-3.0.0-Linux.tar.gz

Descompacte e acesse o diretório share da pasta que acabou de extrair:

# tar xvfz pgAgent-3.0.0-Linux.tar.gz
# cd pgAgent-3.0.0-Linux/share

Se seu banco ainda não tem a linguagem 'plpgsql', crie com o seguinte comando:

# createlang plpgsql

Agora importe o arquivo 'pgagent.sql' e 'pgagent_upgrade.sql' para a database 'postgres':

# psql -U postgres postgres < pgagent.sql ; psql -U postgres postgres < pgagent_upgrade.sql

Não esqueça de que para o PgAgent funcionar corretamente no pg_hba.conf as conexões locais devem ser configuradas para 'trust', pois sua senha da role 'postgres' na string de conexão não seria legal.

Bom, agora vamos ao daemon, vamos criar um "service" para o pgagent, que será iniciado depois do banco por razões claras.

Segue fonte do "service":


#!/bin/sh
#
# pgagent:      Agent Jobs to PostgreSQL.
#
# chkconfig:    2345 96 89
# description:  PGAgent is a daemon to scheduler jobs in PostgreSQL.
#

# Source function library.
. /etc/rc.d/init.d/functions

# --- CONFIG --- #

# Log mode - 0 = error 1 = warning 2 = debug
LOG=1

# Log destination
STDERR="/var/log/pgagent.log"

# Connection string
CONN="hostaddr=127.0.0.1 port=5432 dbname=postgres user=postgres"

# --- #

start()
{
        echo -n $"Starting PGAgent: OK"
        /opt/resources/bin/pgagent -f -l $LOG -s $STDERR $CONN >> $STDERR 2>&1 &

        echo
}

stop()
{
        echo -n $"Shutting down PGAgent: "
        /usr/bin/killall -9 pgagent

        echo
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|reload}"
        exit 1
esac

exit 0


Adicione o "service" com o seguinte comando:

# cd /etc/init.d ; chmod +x pgagent ; chkconfig --add pgagent

Pronto, agora é só iniciar ele(service pgagent start) e criar seus jobs.

Para criar jobs é muito fácil pelo PgAdmin, segue a documentação de como fazer:

http://www.pgadmin.org/docs/1.4/pgagent.html

5 comentários:

  1. Olá, você pode me ajudar porfavor? Estou tentando a um tempo, baixar o pgAgent para windows (.exe.), mas não consigo, os links que encontro não levam a lugar algum, você poderia me dar essa força?

    ResponderExcluir
    Respostas
    1. Não sei se você já resolveu teu problema, mas eu tive o mesmo e resolvi desinstalando o pgAdminIII e instalando novamente. Na instalação tem várias opções para você instalar, entre elas o pgAgent.

      Excluir
  2. Já tentou compilar o PGAgent no Windows? Tente a última versão do source, se não der tenta essa: http://udm4.com/Windows/pgAgent-132971

    ResponderExcluir
  3. Não tão longe que eu encontrei nova ferramenta legal trabalhar com o PostgreSQL em win - Valentina Studio. Sua versão gratuita pode fazer as coisas mais do que muitas ferramentas comerciais!
    I muito recomendar verificá-lo. http://www.valentina-db.com/en/valentina-studio-overview

    ResponderExcluir
  4. é muito facil use o Application Stack Builder que ja vem na instalação padrão do postgre para windows, coisinha basica menu iniciar - postgresql - application stack builder, facil facil, postgre 8.4 ou superior

    ResponderExcluir