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

    Общий рейтинг статьи: 0 (проголосовало 0 )
    Опубликовано:  [просмотров 482]


    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-скриптов по расписанию


    Связанные записи в блоге

    Обсуждение статьи

    Ваш комментарий: