Цей розділ описує як створювати, керувати та моніторити задачі Cron в базі даних PostgreSQL, використовуючи програму Database Tour.
Зауваження
- Використання планувальника задача на основі cron доступно в PostgreSQL, починаючи з версії 10.
- Для уможливлення роботи pg_cron, необхідно додати pg_cron до shared_preload_libraries у файлі postgresql.conf. Після цього потрібно перестартувати сервері.
- По замовчанню pg_cron зберігає свої метадані в базі postgres. Однак ви можете змінити це встановленням параметра cron.database_name у файлі postgresql.conf.
Створення задачі Cron
- Відкрийте потрібну базу даних.
- Переконайтеся, що розширення pg_cron встановлено. Перейдіть до закладки Розширення Навігатора об'єктів і в списку розширень знайдіть pg_cron. Його сірий текст означає, що розширення ще не встановлено. Є два шляхи для його встановлення:
- Використання інтерфейсу. Клікніть розширення, щоб вибрати його. Клікніть кнопку Утиліти на закладці Загальне і з випадаючого меню виберіть Встановити.
- Використання SQL. Створіть нове вікно SQL і наберіть там наступну команду SQL:
Клікніть кнопку Виконати запит. Якщо кнопка Commit активна, клікніть її для завершення транзакції.CREATE EXTENSION pg_cron;
- Перейдіть до закладки Задачі.
- Клікніть кнопку Створити над списком. Відкриється нове вікно SQL, в якому буде кістяк команди SQL для створення нової задачі Cron. Заповніть потрібні параметри в секції VALUES. Імовірно, найбільш складним для розуміння є параметр schedule, але ви можете знайти багато пояснень та прикладів в інтернеті. Приклад команди SQL для створення нової задачі Cron:
абоSELECT cron.schedule ( 'Loading Data Warehouse', '20 0-23 * * *', 'select dwh.load_dwh();' );
Тут значення 20 0-23 * * * означає о 20-й хвилині, щогодини, щодня, щомісяця, кожного дня тижня.INSERT INTO cron.job ( schedule, command, nodename, nodeport, database, username, active, jobname ) VALUES ( '20 0-23 * * *', 'select dwh.load_dwh();', 'localhost', 5432, 'dbmaster', 'admin', True, 'Loading Data Warehouse' );
Ще кілька прикладів значень параметра schedule:- */10 * * * *
кожні 10 хвилин, щогодини, щодня - * 0-23 * * *
щохвилини, щогодини, щодня - 30 0-23 * * 1-5
о 30-й хвилині, щогодини, з понеділка по п'ятницю - */20 3 6-8 * *
кожні 20 хвилин, o 3-й годині, лише в літні місяці, щодня - 15-45/5 8-19 * * *
кожні 5 хвилин в діапазоні 15-45, щогодини в діапазоні 8-19, щодня
- */10 * * * *
- Клікніть кнопку Виконати запит.
- Якщо кнопка Commit активна, клікніть її для завершення транзакції.
- Перейдіть до закладки Задачі Навігатора об'єктів і перевірте, що новостворена задача присутня у списку.
Зупинка/видалення задачі Cron
- Відкрийте базу даних і перейдіть до закладки Задачі.
- У списку задач виберіть потрібну задачу.
- Клікніть кнопку Утиліти на закладці Загальне і виберіть Видалити....
або виконайте команду SQL на кшталт цієї:
SELECT cron.unschedule (
'Loading Data Warehouse'
);
Моніторинг задачі Cron
- Відкрийте базу даних і перейдіть до закладки Задачі.
- У списку задач виберіть потрібну задачу.
- Перейдіть до закладки Статистика. Тут можна бачити 100 останніх виконань задачі. Для оновлення даних клікніть кнопку Оновити над таблицею.
Редагування задачі Cron
- Відкрийте базу даних і перейдіть до закладки Задачі.
- У списку задач виберіть потрібну задачу.
- Клікніть кнопку Утиліти на закладці Загальне. Тут ви можете побачити, які операції з задачами доступні для вас.
Приклад редагування задачі Cron:
Зауваження: В будь-якому разі ви можете редагувати задачу засобами SQL. Всі параметри задачі зберігаються в таблиці cron.job, тому ви можете створити і виконати запит до бази даних такого типу:
UPDATE cron.job
SET schedule = '25 0-20 * * *'
WHERE jobid = <your_job_id>;
Див. також: