مسعود سلطانی راد
مسعود سلطانی راد
خواندن ۳ دقیقه·۱ ماه پیش

نحوه زمان‌بندی کارها در PostgreSQL با استفاده از pgAgent و Cron Jobs


زمان‌بندی و خودکارسازی وظایف یکی از جنبه‌های کلیدی مدیریت پایگاه داده PostgreSQL است. ابزار pgAgent و Cron هر دو گزینه‌هایی برای زمان‌بندی وظایف در PostgreSQL هستند که هر یک مزایا و کاربردهای خاص خود را دارند.

زمان‌بندی کارها با pgAgent

یکی از ابزارهای مفید برای زمان‌بندی وظایف در PostgreSQL، pgAgent است. این ابزار مخصوص PostgreSQL طراحی شده و به کاربران اجازه می‌دهد وظایفی همچون پشتیبان‌گیری، بارگذاری داده‌ها، و تولید گزارش‌ها را زمان‌بندی و خودکار کنند.

مراحل نصب و پیکربندی pgAgent

ابتدا لازم است pgAgent را با پایگاه داده PostgreSQL نصب و پیکربندی کنید. پس از نصب، می‌توانید وظایف را با دستورات SQL، رویه‌های ذخیره شده، یا اسکریپت‌های پوسته ایجاد کنید. سپس می‌توانید این وظایف را برای اجرا در زمان‌های مشخص زمان‌بندی کنید.

برای نصب pgAgent از دستور زیر استفاده کنید:

CREATE EXTENSION pgagent;

سپس شمای pgAgent را به این صورت ایجاد کنید:

CREATE SCHEMA pgagent;

برای مقداردهی اولیه جداول pgAgent، فایل SQL مربوطه که معمولاً در مسیر share/pgagent.sql قرار دارد را اجرا کنید:

\i /path/to/share/pgagent.sql

ایجاد و زمان‌بندی وظایف

پس از راه‌اندازی pgAgent، می‌توانید وظایف جدیدی برای اجرای دستورات SQL ایجاد کنید. به عنوان مثال:

BEGIN;

SELECT pgagent.pga_jobid(‘MyJob’) INTO my_job_id;

SELECT pgagent.pga_job(

pjobid := my_job_id,

pscheduleid := NULL,

pjobname := ‘MyJob’,

pjobdesc := ‘My job description’,

pjobhostagent := ”,

pjobenabled := TRUE,

pjobhostagentislocal := TRUE,

pjobnextrun := now(),

pjobcode := ‘SELECT COUNT(*) FROM my_table;’,

pjobconnstr := ‘host=localhost dbname=my_database user=my_user password=my_password’

);

COMMIT;

در این کد، نام، توضیحات، و کد SQL وظیفه را متناسب با نیاز خود تنظیم کنید.

برای زمان‌بندی یک وظیفه، به این شکل عمل کنید:

BEGIN;

SELECT pgagent.pga_schedule(

pschedid := NULL,

pschedname := ‘MyJobSchedule’,

pscheddesc := ‘My job schedule description’,

pschedenabled := TRUE,

pschedstart := now(),

pschedend := NULL,

pschedminutes := ‘0,15,30,45’,

pschedhours := ‘*’,

pschedweekdays := ‘*’,

pschedmonthdays := ‘*’,

pschedmonths := ‘*’,

pschedord := NULL,

pschedweek := NULL,

pschedday := NULL,

pjobid := my_job_id

);

COMMIT;

این برنامه وظیفه را هر ۱۵ دقیقه اجرا می‌کند. زمان‌بندی و نام‌ها را مطابق نیازهای خود تنظیم کنید. کاربران می‌توانند از pgAdmin برای نظارت بر اجرای وظایف استفاده کنند.

زمان‌بندی کارها با Cron Jobs در سیستم‌عامل‌های یونیکس

راه‌حل دیگری برای زمان‌بندی وظایف در PostgreSQL، استفاده از Cron در سیستم‌های یونیکسی مانند لینوکس است. Cron به کاربران اجازه می‌دهد تا کارها را به صورت تکراری خودکارسازی کنند.

تنظیم Cron Job برای PostgreSQL

برای زمان‌بندی کارها، می‌توانید یک اسکریپت پوسته‌ای بنویسید که دستورات SQL مورد نظر را با psql یا ابزارهای دیگر اجرا کند. پس از آن، با استفاده از دستور cron، کار جدید را به جدول cron اضافه کنید.

همچنین می‌توانید از پسوند pg_cron استفاده کنید که به شما اجازه می‌دهد مستقیماً از طریق PostgreSQL زمان‌بندی را انجام دهید:

SELECT cron.schedule(‘* * * * *’, ‘SELECT my_function();’);

این مثال، my_function را بر اساس زمان‌بندی مشخص اجرا می‌کند.

برای حذف یک وظیفه زمان‌بندی شده:

SELECT cron.unschedule(jobid);

دقت کنید که زمان‌بندی کارها با pg_cron به امتیازات superuser نیاز دارد.

با استفاده از pgAgent و Cron می‌توانید عملیات پایگاه داده PostgreSQL را به آسانی زمان‌بندی و خودکار کنید و کارایی و انعطاف‌پذیری بیشتری در مدیریت پایگاه داده داشته باشید.

پستگرس
چند سالی هست در حوزه داده ها ( نگهداری و تحلیل آنها) فعالیت دارم و همیشه سعی کردم آموخته هایم رو به اشتراک بگذارم soltanirad@artarad.ir www.artarad.ir
شاید از این پست‌ها خوشتان بیاید