Запуск pgAgent под виндой

(решил написать очень подробно)

Итак, pgAgent -тузла к PostgreSQL для запуска скриптов без вашего участия в определенное время и/или через определенные периоды времени.
pgAgent поставляется вместе с pgAdmin III или его можно скачать отдельно.
Ну а официальную документацию можно найти там же рядом или в хелпе pgAdmin.

Все бы хорошо, но с первого раза мне запустить агента не удалось, как и с последующих пары десятков (я даже начал думать, что это секретный агент). Дело было в понедельник, да и настроение не очень... сутра во вторник я-таки вытащил свои руки из одного места и приставил их туда, откуда они и должны расти, после чего агент удачно запустился (на самом деле я просто подробней почитал инструкцию :)

Начнем.
1. Нужно запустить скрипт C:\Program Files\PostgreSQL\8.3\pgAdmin III\Scripts\pgagent.sql в базе данных "postgres" (именно в этой базе).
Этот скрипт создает системную схему pgAgent и в ней несколько объектов. Также в pgAdmin появляются новые типы объектов - Задачи (Если их нет, нужно в меню [Файл-Опции-вкладка Показать] отметить pgAgent jobs).

2. Подготовка сервиса.
- Зайдите в папку C:\Program Files\PostgreSQL\8.3\bin
- для удобства, создайте 2 ярлыка на файл pgagent.exe первый назовите- pgagent_install, второй - pgagent_remove
с pgagent_remove все понятно, он удаляет установленный сервис и содержит строку как по инструкции:
"C:\Program Files\PostgreSQL\8.3\bin\pgAgent.exe" REMOVE pgAgent

А в pgagent_install я написал так:
"C:\Program Files\PostgreSQL\8.3\bin\pgagent.exe" INSTALL pgAgent -u pg -p 123 -l 2 hostaddr=127.0.0.1 dbname=postgres user=admin password=123

Параметры:
-u pg - имя пользователя винды (которого я, например, создал при установке постгреса) есть подозрение, что русские имена он не воспринимает.
-p 123 - пароль того самого виндового пользователя
-l 2 - задает уровень логирования (ERROR=0, WARNING=1, DEBUG=2, default 0) - ставим максимальный.

Дальше строка подключения
hostaddr=127.0.0.1 - тут все понятно - IP'шник машины, на которой крутится постгрес
dbname=postgres - это имя базы
user=admin - имя юзера постгреса, который имеет доступ к созданной в п.1 схеме (pgagent) и всем объектам внутри нее
password=123 это пароль того юзера

3. Запускаем ярлык pgagent_install
Дальше открываем виндовые Сервисы (я уж не буду говорить, как), там должен появиться сервис
PostgreSQL Scheduling Agent - pgAgent
Но он еще не запущен. Это и нужно здесь сделать - запустить.
Проверьте таблицу pgagent.pga_jobagent - если в ней нет записей, значит сервис не смог подключиться к базе или таблице.
Именно для этого мы и ставили параметр -l 2
Нужно смотреть логи: Панель управления-Администрирование-Просмотр событий - Приложение . Там, где Источник указан pgAdmin смотрим какие были косяки и симметрично реагируем - удаляем сервис (запускаем ярлык pgagent_remove), правим ярлык pgagent_install, потом его запускаем и не забываем стартовать сервис.

4. Когда все успешно завершилось, чтобы не загаживать системный журнал, нужно убрать параметр логирования -l 2.

Все остальное написано в хелпе.

Комментарии

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Некоторое дополнение

Прежде чем выполнять пункт первый данного руководства, необходимо в любой базе открыть SQL редактор и выполнить скрипт:
CREATE LANGUAGE 'plpgsql'
Эта команда установит поддержку языка PL/pgsql, команды которого содержаться в скрипте pgagent.sql (см. пункт 1). Если этого не сделать, то при выполнении пункта 1 получите ошибку: "Неизвестный язык plpgsql" и дальнейшая установка pgAgent будет невозможна.

все сделал по написаному, ну

все сделал по написаному, ну или почти так.
служба pgagent работает
в каталогах pgagent eсть
jobs - есть
в pg_hba.conf :
host all all 0.0.0.1/0 trust
в pgpass:
все правильно написано

сделал задание для тестирование - запуск тестового батника типа echo "ok">text.txt . запускаю из контекствного меню - "запустить сейчас" - и нет никакого результата.

возможно как-то деинстальровать pgagent?

как деинсталлировать написано

как деинсталлировать написано выше C:\Program Files\PostgreSQL\8.3\bin\pgAgent.exe" REMOVE pgAgent, хотя можно просто убить сервис sc delete pgAgent

pgagent и память

Работает он нормально, но страдает утечкой памяти. У меня за две недели потребление памяти pgagentом возрастает с 5Мб до 90Мб. Приходится перезапускать сервис.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023