Использование PgAgent в качестве планировщика для запуска периодических заданий Postgresql

HELP-ME-24.COM (Freelance Team), Черноусов Антон

Postgresql - является мощной промышленной реляционной базой данных и как у всех серьезных решений в ней имеются свои методы выполнения регулярных регламентных заданий.

В предыдущих статьях я уже рассказывал как организовать выполнение периодических операций по обслуживанию базы данных Postgresql, но тогда операции выполнялись при помощи дополнительных скриптов запускаемых при помощи системного планировщика cron. Сегодня я рассмотрю использование встроенного в базу данных функционала.

На самом деле pgagent является отдельно устанавливаемым приложением и для его установки выполните следующую команду:

# aptitude install pgagent

PgAgent в Ubuntu Linux не имеет собственного сервиса для организации фоновой работы поэтому нам придется реализовать его самостоятельно и для этого нам потребуется SystemD-юнит для организации фонового запуска.

Для тестирования подключения к базе данных используйте команду pgagent со следующими параметрами (запуск проведите от имени пользователя postgres):

$ pgagent -l 2 -f dbname=postgres user=postgres

  • -l - режим отладки
  • -f - выполнить запуск в Foreground-режиме
  • dbname=postgres user=postgres - строка подключения к базе данных

Обратите внимание, что мы проводим запуск от имени пользователя postgres и по умолчанию для него настроена сквозная авторизация, а в вашем случае возможно дополнительно потребуется указать пароль. В том случае, если тестирование прошло удачно, создайте файл юнита SystemD (/etc/systemd/system/pgagent.service) следующего содержания:

[Unit]
Description=PostgreSQL server agent
After=network.target
Requires=postgresql.service

[Service]
ExecStart=/usr/bin/pgagent dbname=postgres user=postgres
User=postgres
OnBootSec=60
Type=forking

[Install]
WantedBy=network.target

Проверяем, что запуск проходит удачно:

# systemctl start pgagent

Активируйте автозапуск запуск юнита при старте сервера:

# systemctl enable pgagent

Так же нам потребуется применить несколько SQL-скриптов для активации соответствующего функционала в PgAdmin и для этого потребуется установленная поддержка языка plpgsql. В большинстве случаев он уже установлен по умолчанию, но иногда его требуется подключить дополнительно, для этого выполните в SQL-консоли следующие команды:

# CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler VALIDATOR plpgsql_validator;

Как я уже говорил выше нам потребуется выполнить несколько скриптов из файла /usr/share/pgadmin3/pgagent.sql для интеграции планировщика в PgAdmin, для чего просто выполните в консоли сервера следующие команды:

# su postgres
$ cat /usr/share/pgadmin3/pgagent.sql | psql

После перезапуска PgAdmin вам будет доступен пункт "Задания" куда вы сможете добавить операции требующие выполнения по расписанию.

Исполнение SQL-скриптов по расписанию

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий