הקדמה
pgAgent הוא כלי המשמש לתזמון משימות עבור מסדי נתונים של PostgreSQL. יש לו יכולות תזמון חזקות יותר מאשר הפקודה הנפוצה cron
, מכיוון שהוא בנוי במיוחד לטיפול במשימות של Postgres. לדוגמה, pgAgent יכול לתזמן מספר שלבים מראש ללא סקריפט צפיפות או ללא חזרה על הפקודה. חשוב לציין שגם אם יש לך את pgAdmin מותקן, עליך להוריד את pgAgent באופן עצמאי, כהרחבה ספציפית ל־pgAdmin.
במדריך זה, תתקין את pgAgent, תגדיר את מסד הנתונים שלך לשימוש בpgAgent בממשק המשתמש הגרפי של pgAdmin (GUI), תגדיר את pgAgent כשיר רקע, ותשתמש בpgAgent לתזמן משימה שתגביה את מסד הנתונים שלך.
דרישות קדם
כדי למשוך אחריות למדריך זה, תצטרך:
- שרת Ubuntu 22.04 הותקן עם משתמש לא רוט עם הרשאות sudo וגישה לגישור אש. ניתן לעשות זאת על ידי קריאה שלנו למדריך התקנת השרת הראשונית.
- PostgreSQL מותקן על השרת שלך. אתה יכול להגדיר זאת על ידי מעקב אחר המדריך שלנו על כיצד להתקין ולהשתמש ב־PostgreSQL על Ubuntu 22.04. במהלך קיום המדריך הזה, ודא שאתה יוצר תפקיד ובסיס נתונים חדשים, מכיוון שתצטרך את שניהם כדי להתחבר ל־pgAdmin שלך למופע ה־PostgreSQL
- pgAdmin מותקן עם חשבון שהוגדר. אתה יכול לעשות זאת על ידי מעקב אחר המדריך שלנו על כיצד להתקין ולהגדיר את pgAdmin4 במצב שרת על Ubuntu 22.04
שלב 1 — התקנת pgAgent
כפי שצוין מראש, pgAgent לא מוגדר אוטומטית כאשר אתה מתקין pgAdmin. אתה יכול להתקין את pgAgent מהטרמינל שלך על ידי הרצת apt install
ושם החבילה pgagent
כמו בפקודה הבאה:
- sudo apt install pgagent
לאחר שהתקנת את pgAgent, המשך לשלב הבא כדי להגדיר את מסד הנתונים שלך לשימוש ב־pgAgent ב־pgAdmin שלך.
שלב 2 — הגדרת מסד הנתונים שלך עבור pgAgent
אחרי שעקבת אחר התנאים המוקדמים, pgAdmin הותקן ומוכן לשימוש. ניתן להגדיר את מסד הנתונים שלך לשימוש ב־pgAgent דרך pgAdmin. פתח את דפדפן האינטרנט שלך ונווט אל אפליקציית pgAdmin בכתובת http://your_domain. לאחר שתתחבר לחשבון שלך, נווט לבקרת העץ בפאנל הצד שמאלי. מצא את מסד הנתונים שיצרת שנקרא sammy והרחב את הרשימה. מתוך הרשימה יהיה אפשרות בשם הרחבות. לאחר שתמצא את זה, לחץ עליו עם העכבר הימני ובחר את האפשרות כלי שאילתא:

pgAgent דורש הרחבה להיות טעונה למסד הנתונים שלך לפני שניתן יהיה להשתמש בו ב־pgAdmin. כדי לעשות זאת, כתוב את השאילתה הבאה ולחץ על חץ הציד ▶ המסמן הרץ כדי להריץ את הפקודה:
- CREATE EXTENSION pgagent;
השלב הזה עם כלי השאילתא מיוצג בדוגמה הבאה:

תחת לשונית הודעות יהיה פלט שמחזיר השאילתה חזרה בהצלחה ב־300 מילישניות. זה מאשר כי ההרחבה של pgAgent נוצרה בהצלחה.
הערה: אם אין לך את השפה המתאימה plpgsql
טעונה למסד הנתונים שלך, תקבל את ההודעת שגיאה הבאה:
OutputERROR: language "plpgsql" does not exist
HINT: Use CREATE EXTENSION to load the language into the database.
SQL state: 42704
אם זה קורה, עליך להריץ CREATE LANGUAGE
כדי להתקין את שפת הפרוצדורה pl/pgsql הנדרשת. תוכל להתקין זאת על ידי הרצת הפקודה הבאה:
- CREATE LANGUAGE plpgsql;
פעם שהתקנת את שפת pl/pgsql, הודעה בתחתית תציג משהו דומה לזה: Query returned successfully in 231 msec. לאחר מכן, הרץ שוב את השאילתה הקודמת CREATE EXTENSION pgagent
.
לאחר שהרצת את השאילתות הללו, תחת Extensions, יופיעו שני פריטים עבור pgagent ו-plpgsql:

A new item in the tree control on the left-hand side will appear called pgAgent Jobs. This signifies that pgAgent was successfully installed on your pgAdmin account. Next, you will set up pgAgent as a daemon so that it can run your jobs successfully.
הערה: אם הפריטים הללו לא מופיעים מיידית, רענן את דף הדפדפן שלך, והם יצטרפו אם השאילתות שלך הצליחו.
שלב 3 — הגדרת pgAgent כדמון
עכשיו שהתקנת pgAgent והגדרתו עבור מסד הנתונים שלך דרך pgAdmin, השלב הבא הוא להגדיר את pgAgent כדמון בשרת שלך. דמון הוא תוכנית שרצה כתהליך רציף ברקע ומבצעת משימות שירות. pgAgent רץ כדמון על מערכות Unix ובדרך כלל על שרת מסד הנתונים עצמו.
כדי להגדיר את pgAgent כדמון, נדרשת מחרוזת חיבור PostgreSQL כך שכאשר אתה מתזמן את העבודה שלך, התהליך יבצע באופן הולם. במקרה זה, אתה מגדיר מחרוזת חיבור PostgreSQL libpq, כלומר מחרוזת המותאמת אישית ומתחברת לפרמטרים מסוימים שהגדרת. ניתן ללמוד עוד על פונקציות חיבור PostgreSQL libpq ב-מסמך התיעוד של PostgreSQL.
שרשור החיבור שלך יספק את פרטי הכניסה למחשב המארח, שם מסד הנתונים ושם המשתמש. בדוגמה שלנו, המארח ישתמש בקצה יתר של Unix, שם מסד הנתונים הוא sammy
, והמשתמש הוא sammy
. מחרוזת זו תתווסף לפקודת pgagent
כדי להתחיל את הדמון. בטרמינל שלך, תפעיל את הקוד הבא:
- pgagent host=/var/run/postgresql dbname=sammy user=sammy
אם אין תגובה בפלט שלך ואין לך הודעת שגיאת חיבור, אז הגדרת מחרוזת החיבור הצליחה.
לאחר שיצרת את מחרוזת החיבור, אתה מוכן לקבוע משימה עם pgAgent.
שלב 4 — קביעת משימה עם pgAgent
pgAgent משמש כסוכן קובע שיכול להפעיל ולנהל משימות ויכול ליצור משימות של צעד אחד או יותר או לוח זמנים. לדוגמה, צעד עשוי לכלול מספר פעולות SQL בתסריט של קופסת אמת ונכנס לביצוען זו אחר זו. בכלל, תוכל להשתמש ב-pgAgent כדי לקבוע, לנהל, לשנות או לבטל משימות.
למטרות הדרכות זו, תשתמש ב-pgAgent כדי ליצור משימה שתגביר את מסד הנתונים שלך sammy מדי דקה בכל יום בשבוע. תתחיל על ידי ללחוץ עם העכבר הימני על pgAgent Jobs ובחירת Create ואז pgAgent Job… כמו בהמשך:

כאשר תעשה זאת, יופיע הודעה בכותרת צור – עבודת pgAgent, ותוכל להתחיל למלא את המידע הנדרש בכרטיסיית כללי. בדוגמה זו, נשתמש בשם sammy_backup ולא נציין סוכן מארח מאחר ורוצים להריץ את העבודה הזו בכל מארח. בנוסף, נשאיר את מחלקת העבודה כ-תחזוקה רגילה. אם ברצונך לכלול הערות נוספות, אתה מוזמן לעשות זאת בקטע ה-הערה:

לאחר מכן, נווט לכרטיסיית שלבים. לחץ על הסמל + בפינה העליונה הימנית ליצירת שלב. בדוגמה זו, נקרא לשלב זה שלב1. לאחר מכן, כדי להרחיב את האפשרויות שלך, לחץ על העיפרון בצד שמאל של סמל סל הפסולת. לחץ על הכפתור האם מאופשר? מוגדר ברירת מחדל להיות מופעל ומציין ששלב זה יכלל בעת ביצוע העבודה הזו.
עבור אפשרות ה-סוג תוכל לבחור בין SQL או Batch, כאן בחרנו ב-Batch. הסיבה לבחירה ב-Batch בדוגמה זו היא כי זה יפעיל את פקודות ה-PostgreSQL המתאימות שתגדיר לגיבויים שתרצה לתזמן עבור מסד הנתונים שלך. אפשרות ה-SQL זמינה לקביעת משימה לביצוע SQL גולמי. במקרה זה, בחרנו Local עבור סוג החיבור כך שהשלב יתבצע בשרת המקומי, אך אם תעדיפו, תוכלו גם לבחור Remote עבור מחשב מרוחק לבחירתכם. אם תבחרו לעשות זאת על מחשב מרוחק, עליכם לציין קריטריונים אלו בשדה מחרוזת החיבור. אם עקבתם אחרי שלב 1, מחרוזת החיבור שלכם כבר מוגדרת ומחוברת.
לשדה מסד הנתונים, ודא שבחרת במסד הנתונים הנכון, כאן צוין sammy. באפשרות בשגיאה, תוכל להתאים אישית את תגובת pgAgent אם יש שגיאה בביצוע שלב. במקרה זה, בחרנו Fail כדי להודיע לנו אם יש שגיאה בעת ניסיון לעבד שלב. שוב, אם תרצה להוסיף הערות נוספות, תוכל להוסיף אותן בתיבת הערה:
באותו לשונית שלבים יש גם לשונית קוד. אם בחרת מקובץ כפי שעשינו בדוגמה זו, אז נווט ללשונית קוד. ברגע שתהיה בלשונית זו, יש שורה ריקה שבה תוכל להכניס את הפקודה שלך ל-PostgreSQL. אתה יכול להחליף את הפקודה שלך לגיבוי כאן עם סט האפשרויות המותאם אישית שלך. כל פקודה תקפה.
במדריך זה נשתמש בפקודת pg_dump
כדי לגבות את מסד הנתונים שלך ב-Postgres sammy. בפקודה זו, כלול שם המשתמש הספציפי שלך, שם מסד הנתונים, והדגל --clean
, אשר עוזר עם pg_dump
על ידי השלטת או "ניקוי" של אובייקטי מסד הנתונים לפני הפלט של כל הפקודות שנוצרות. עבור דגל --file
אתה מציין את המיקום הדיוט שבו יישמרו קבצי הגיבוי. החלק הסופי של ההצהרה הזו date +%Y-%m-%d-%H-%M-%S
הוא ליצירת דינמיקה של תאריך וקבצים מרובים לכל גיבוי. אחרת, קובץ הגיבוי ידרס ויחליף את הקיים. בדרך זו, תוכל לעקוב אחרי כל קובץ גיבוי בזמן או תאריך שצוין. הפקודה המלאה שלך תהיה כדלהלן:
pg_dump --username=sammy --dbname=sammy --clean --file=/home/sammy/backup-`date +%Y-%m-%d-%H-%M-%S`.sql
הערה: אם בוחר לשמור את קבצי הגיבוי שלך במיקום שונה, הקפיד להשתמש בנתיב מוחלט לתיקייה שבחרת. לדוגמה, בעוד ש-~/
בדרך כלל מצביע על תיקיית הבית של /home/sammy/
, pg_dump
במקרה זה מחייבת את הנתיב המוחלט של /home/sammy/
.
כשהוספת את פקודת הגיבוי שלך, תוכל לנווט לכרטיסייה המסומנת בשם Schedules. כך כמו בהגדרת Steps, לחץ על הסמל + כדי להוסיף תזמון, ואז ספק את השם המועדף עליך. לחץ על סמל העפרון ליד סמל פח האשפה כדי לפתח את האפשרויות. בתוך הכרטיסייה של General יהיה השם שלך, בדוגמא זו, זה schedule1. שוב, ל-Enabled זה בררת המחדל הוא במצב הדלוק כדי להבטיח ביצוע תזמון תקין. ל-Start ו-End, ציין את היום והשעה בהתאם לעבודה המתוזמנת שלך. מכיוון שתבצע בדיקה על העבודה המתוזמנת שלך, וודא שהזמן הנוכחי נמצא בתחום של Start ו-End. הוסף הערה ב-Comment אם תרצה:
עכשיו נמשיך ללשונית חזור. כאן תוכל להתאים איך תרצה שעבודה זו תופעל באופן קבוע. תוכל להיות כמה שרק תרצה ספציפי עם השבוע, החודש, התאריך, השעות או הדקות. יש לשים לב, אם לא תבצע בחירה, זה דומה לבחירת בחר הכל. לכן, אם תשאיר את ימי השבוע ריקים, הלוח שלך יקח בחשבון את כל ימי השבוע. באופן דומה, עם השעות, תוכל להשאיר את השעות או הדקות ריקים, וזה יהיה כמו בחירת הכל. חשוב לזכור שהשעות בפורמט כרון, כך שלדוגמה, במקרה זה, כדי ליצור גיבוי כל דקה, עליך לבחור כל דקה בשעה (00 עד 59). כדי להדגים זאת, בחרנו בחר הכל עבור הדקות. כל הדקות מופיעות, אך השארתם ריק גם ישיג את אותם התוצאות:
אם יש ימים או שעות בהן לא תרצה להפעיל עבודה, תוכל ליצור לוח זמנים יותר פינוקי, או לקבוע זאת על ידי ניווט אל לשונית חריגים.
הערה: עבודה מתבצעת גם בהתאם ללוח זמנים, כך שכל פעם שהוא משתנה, זמן הריצה המתוזמן יחושב מחדש. כאשר זה קורה, pgAgent יבדוק את מסד הנתונים עבור ערך זמן ההרצה המתוזמן מהעבר ו, משם, יתחיל בדרך כלל תוך דקה מזמן ההתחלה המצויין. אם יש בעיות, אז כאשר pgAgent מתחיל מחדש, הוא יחזור ללוח זמנים הרגיל שהגדרת.
כאשר תסיים להגדיר ולהתאים אישית את הלוח שעות שבו ברצונך להפעיל, לחץ על הכפתור שמור. משימת pgAgent חדשה תופיע בעץ השליטה בצד שמאל תחת שם המשימה שלך. לדוגמה, sammy_backup מופיע עם התזמונים וצעדים שנמצאים מתחתיו:

עכשיו שיצרת משימת pgAgent בהצלחה, בשלב הבא תלמד כיצד לוודא כי המשימה שלך פועלת בהצלחה.
שלב 5 — אימות משימת pgAgent שלך
באפשרותך לבדוק אם המשימה המתוזמנת שלך ליצירת קובץ גיבוי של מסד הנתונים שלך פועלת בכמה דרכים. ב־pgAdmin, תוכל לנווט לעץ השליטה בצד שמאל וללחוץ על sammy_backup. משם, המשך ללשונית המסומנת סטטיסטיקות. דף ה־סטטיסטיקות יציג כל מופע של המשימה המתוזמנת שלך כך:

שים לב שהסטטיסטיקות עשויות לא להופיע או לרענן מיד, לכן עשויים להיות עליך לנווט למקום אחר או לרענן את הדפדפן. זכור שהמשימה שלך מתוזמנת לרוץ במרווח זמן מוגדר, לכן יש לקחת זאת בחשבון אם אתה מגדיר תאריך או שעה שהם תדר או אורך זמן ארוך.
אם תעדיפו לוודא שהעבודה שלכם פועלת מהשורת פקודה, תוכלו להריץ את הפקודה ls ~
כדי לרשום את קבצי תיקיית הבית שלכם. במדריך זה, תגדירו את המיקום המדויק לתיקיית הבית הזו בעת כתיבת הפקודה pg_dump
ב- שלב 4:
- ls ~
הפלט יספק רשימה של כל מופע של קבצי הגיבוי שמתווספים.
שלב 6 — שינוי, ניטור, מחיקה וביצוע ידני של עבודות pgAgent (אופציונלי)
pgAgent מספק גמישות בנוגע לשינוי או לנטרול של עבודה. באמצעות pgAdmin, ניתן לנווט אל עבודת pgAgent הספציפית, במקרה זה, sammy_backup. לאחר מכן, לחצו כפתור ימני ובחרו את האפשרות מאפיינים מהרשימה. מכאן תוכלו ללחוץ על סמל העפרון בחלק העליון כדי לבצע שינויים בעבודתכם:

אם אתם בחלון של מאפיינים ולוחצים על סמל העפרון, תוכלו לנווט אל כרטיסיית לוחות זמנים כדי לנטרול את העבודה שלכם כמו בדוגמה הבאה:
בנוסף, מבקר העץ בצד שמאל, אם תעשה לחיצה ימנית על העבודה של pgAgent, תוכל לבחור את הבחירה DELETE/DROP כדי למחוק את העבודה לגמרי. אם ברצונך להריץ עבודה ידנית, תוכל לחזור על אותו השלב, אך הפעם לבחור בבחירה RUN NOW מהרשימה:

אלה הן רק חלק מהפונקציות לשימוש ב-pgAgent לתזמון עבודות, ישנם אפשרויות רבות נוספות. לדוגמא, תכנזון עבודה שתיצור גיבוי עבור כל המשתמשים והתפקידים במסד הנתונים שלך, באמצעות הפקודה pg_dumpall --globals only
. ניתן גם להשתמש בתסריטים מורכבים יותר עם עבודות רצף, אודך יכול לקרוא עוד בעמוד ה-wiki של PostgreSQL.
מסקנה
pgAgent שימושי לתזמון עבודות שונות שעשויות לסייע בהפחתת מספר מטריד של משימות היומיומיות החובה, כמו גיבוי יציב של המסד הנתונים שלך. פעם שתהיה יותר נוח עם הכלי הזה, תוכל גם לנסות ליצור עבודה במספר שלבים או משימות SQL שדורשות תזמון מורכב. אם ברצונך לדעת יותר, תוכל לקרוא את תיעוד ה-pgAgent הרשמי באתר ה-pgAdmin.