Configuration de pgAgent sous Windows

pgAgent est un planificateur de tâches pour PostgreSQL qui permet d’exécuter des scripts sans recourir au planificateur de tâches système. Les jobs que vous créez sont stockés dans le catalogue pgAgent de la base postgres !

Installation de pgAgent sous Windows

Avant d’installer pgAgent, créez le fichier %APPDATA%\postgresql\pgpass.conf, dans lequel vous ajoutez les paramètres de connexion à votre instance à l’image de l’exemple ci-dessous :

localhost:5432:postgres:postgres:postgres

Sous Windows, le logiciel s’installe avec l’installeur fourni par EDB après qu’il a été téléchargé via le gestionnaire de paquets StackBuilder fourni par EDB.

Installation de pgAgent sous Windows

Modifier les paramètres de lancement du service pgAgent

Par défaut, sous Windows, l’accès local à la base exige que vous saisissiez votre mot de passe. C’est la raison pour laquelle vous pourriez être amené à modifier, dans le registre au niveau de la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\pgAgent\ImagePath, les paramètres de lancement du service pgAgent en y ajoutant le mot de passe. En fait, cela dépend de la configuration de votre fichier pg_hba.conf.

C:\PROGRA~2\pgAgent\bin\pgagent.exe RUN pgAgent host=localhost port=5432 user=postgres password=postgres dbname=postgres

Puis, vous devez redémarrer le service.

net stop pgagent
net start pgagent

Pas terrible au niveau sécurité, n’est-ce pas ?

Création du job pgAgent

J’ai rencontré un bogue majeur sous la version pgAdmin 4, lors de la création du job, au niveau de la planification. Préférez la saisie des dates à l’utilisation des agendas  qui fige pgAdmin 4 et qui vous oblige à terminer la tâche.

Création du job pgAgent

Le code SQL de création de la tâche planifiée

Une fois créé, faites un clic droit au niveau du job et choisissez CREATE SCRIPT. Dans le code suivant qui consiste à insérer la date du jour dans la table test du schéma public de la base test, le job s’exécute toutes les heures +1 minute !

DO $$
DECLARE
 jid integer;
 scid integer;
BEGIN
--Code SQL pour supprimer les jobs existants
--DELETE FROM pgagent.pga_job;
--DELETE FROM pgagent.pga_jobstep;
--DELETE FROM pgagent.pga_schedule;
-- Creating a new job
INSERT INTO pgagent.pga_job(
 jobjclid, jobname, jobdesc, jobhostagent, jobenabled
) VALUES (
 1::integer, 'job_test'::text, ''::text, ''::text, true
) RETURNING jobid INTO jid;

-- Steps
-- Inserting a step (jobid: NULL)
INSERT INTO pgagent.pga_jobstep (
 jstjobid, jstname, jstenabled, jstkind,
 jstconnstr, jstdbname, jstonerror,
 jstcode, jstdesc
) VALUES (
 jid, 'step_test'::text, true, 's'::character(1),
 ''::text, 'test'::name, 'f'::character(1),
 'INSERT INTO public.test VALUES(NOW());'::text, ''::text
) ;

-- Schedules
-- Inserting a schedule
INSERT INTO pgagent.pga_schedule(
 jscjobid, jscname, jscdesc, jscenabled,
 jscstart, jscend, jscminutes, jschours, jscweekdays, jscmonthdays, jscmonths
) VALUES (
 jid, 'schedule_test'::text, ''::text, true,
 '2017-07-03 21:05:00+02'::timestamp with time zone, '2099-07-31 20:30:00+02'::timestamp with time zone,
 -- Minutes
 ARRAY[false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]::boolean[],
 -- Hours
 ARRAY[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]::boolean[],
 -- Week days
 ARRAY[false, false, false, false, false, false, false]::boolean[],
 -- Month days
 ARRAY[false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]::boolean[],
 -- Months
 ARRAY[false, false, false, false, false, false, false, false, false, false, false, false]::boolean[]
) RETURNING jscid INTO scid;
END
$$;

PostgreSQL  / Formateur PostgreSQL pgAgent PostgreSQL Windows 

Commentaires

Pas encore de commentaire.

Laisser un commentaire

(requis)

(requis)