Einführung
pgAgent ist ein Werkzeug zur Planung von Aufgaben für PostgreSQL-Datenbanken. Es verfügt auch über leistungsstärkere Planungsfunktionen als das oft verwendete cron
, da es speziell für die Verwaltung von Postgres-Aufgaben entwickelt wurde. Zum Beispiel kann pgAgent mehrere Schritte ohne Batchskript planen oder ohne den Befehl zu wiederholen. Es ist wichtig zu beachten, dass selbst wenn Sie pgAdmin installiert haben, pgAgent separat heruntergeladen werden muss, speziell als Erweiterung für pgAdmin.
In diesem Tutorial werden Sie pgAgent installieren, Ihre Datenbank konfigurieren, um pgAgent auf der grafischen Benutzeroberfläche (GUI) von pgAdmin zu verwenden, pgAgent als Daemon einrichten und dann pgAgent verwenden, um eine Aufgabe zu planen, die Ihre Datenbank sichert.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie:
- Einen Ubuntu 22.04 Server mit einem nicht-root
sudo
-aktivierten Benutzer und Firewall eingerichtet. Sie können dies tun, indem Sie unseren Anleitung zum Ersteinrichten des Servers folgen. - PostgreSQL ist auf Ihrem Server installiert. Sie können dies einrichten, indem Sie unserer Anleitung folgen unter Wie man PostgreSQL auf Ubuntu 22.04 installiert und verwendet. Wenn Sie dieser Anleitung folgen, stellen Sie sicher, dass Sie eine neue Rolle und Datenbank erstellen, da Sie beides benötigen, um pgAdmin mit Ihrer PostgreSQL-Instanz zu verbinden
- pgAdmin ist mit einem eingerichteten Konto installiert. Dies können Sie tun, indem Sie unserem Tutorial folgen unter Wie man pgAdmin4 im Server-Modus auf Ubuntu 22.04 installiert und konfiguriert
Schritt 1 — Installation von pgAgent
Wie zuvor erwähnt, wird pgAgent nicht automatisch konfiguriert, wenn Sie pgAdmin installieren. Sie können pgAgent von Ihrem Terminal aus installieren, indem Sie apt install
und den Paketnamen pgagent
wie im folgenden Befehl ausführen:
- sudo apt install pgagent
Nachdem Sie pgAgent installiert haben, fahren Sie mit dem nächsten Schritt fort, um Ihre Datenbank zu konfigurieren, damit pgAdmin pgAgent verwendet.
Schritt 2 — Konfigurieren Ihrer Datenbank für pgAgent
Nachdem Sie die Voraussetzungen befolgt haben, ist pgAdmin eingerichtet und einsatzbereit. Sie können Ihre Datenbank für die Verwendung von pgAgent über pgAdmin konfigurieren. Öffnen Sie Ihren Webbrowser und navigieren Sie zur pgAdmin-Anwendung unter http://your_domain. Sobald Sie sich in Ihrem Konto angemeldet haben, navigieren Sie zum Baumsteuerung auf der linken Seite. Suchen Sie die von Ihnen erstellte Datenbank namens sammy und erweitern Sie die Liste. Aus dieser Liste wird eine Option namens Erweiterungen vorhanden sein. Sobald Sie sie gefunden haben, klicken Sie mit der rechten Maustaste darauf und wählen Sie die Option Abfrage-Tool:

pgAgent erfordert eine Erweiterung, die in Ihre Datenbank geladen werden muss, bevor sie in pgAdmin verwendet werden kann. Schreiben Sie dazu die folgende Abfrage und klicken Sie auf den seitlichen Pfeil ▶, um das Zeichen Ausführen auszuführen, um den Befehl auszuführen:
- CREATE EXTENSION pgagent;
Dieser Schritt mit der Funktion Abfrage-Tool wird im folgenden Beispiel dargestellt:

Unter dem Tab Nachrichten wird eine Ausgabe angezeigt, die besagt Abfrage erfolgreich in 300 msec zurückgegeben. Dies bestätigt, dass die pgAgent-Erweiterung erfolgreich erstellt wurde.
Hinweis: Wenn Sie die geeignete plpgsql
-Sprache nicht in Ihre Datenbank geladen haben, erhalten Sie die folgende Fehlermeldung:
OutputERROR: language "plpgsql" does not exist
HINT: Use CREATE EXTENSION to load the language into the database.
SQL state: 42704
Wenn dies der Fall ist, müssen Sie CREATE LANGUAGE
ausführen, um die erforderliche pl/pgsql-prozedurale Sprache zu installieren. Sie können dies ausführen, indem Sie den folgenden Befehl ausführen:
- CREATE LANGUAGE plpgsql;
Sobald Sie die Sprache pl/pgsql installiert haben, wird unten eine Nachricht angezeigt, die ungefähr so aussieht: Abfrage erfolgreich in 231 msec zurückgegeben. Führen Sie danach erneut die vorherige CREATE EXTENSION pgagent
-Abfrage aus.
Nachdem Sie diese Abfragen ausgeführt haben, werden unter Erweiterungen zwei Einträge für pgagent und plpgsql aufgeführt:

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.
Hinweis: Wenn diese Einträge nicht sofort angezeigt werden, aktualisieren Sie die Browserseite, und sie sollten erscheinen, wenn Ihre Abfragen erfolgreich waren.
Schritt 3 – Einrichten von pgAgent als Daemon
Jetzt, da Sie pgAgent über pgAdmin für Ihre Datenbank installiert und konfiguriert haben, müssen Sie pgAgent als Daemon auf Ihrem Server einrichten. Ein Daemon ist ein Programm, das als kontinuierlicher Prozess im Hintergrund läuft und Serviceaufgaben ausführt. pgAgent läuft als Daemon auf Unix-Systemen und in der Regel auf dem Datenbankserver selbst.
Um pgAgent als Daemon einzurichten, benötigen Sie eine PostgreSQL-Verbindungszeichenfolge, damit der Prozess bei der Planung Ihres Jobs entsprechend ausgeführt wird. In diesem Fall richten Sie eine PostgreSQL libpq-Verbindungszeichenfolge ein, was bedeutet, dass eine zeichenfolge verwendet wird, die benutzerspezifisch ist und sich mit bestimmten von Ihnen festgelegten Parametern verbindet. Weitere Informationen zu den PostgreSQL libpq-Verbindungsfunktionen finden Sie in der PostgreSQL-Dokumentation.
Ihre Verbindungszeichenfolge enthält die Anmeldeinformationen für Ihren Hostnamen, den Datenbanknamen und den Benutzernamen. In unserem Beispiel verwendet der Host eine Unix-Domain-Socket, der Datenbankname lautet sammy
, und der Benutzer ist sammy
. Diese Zeichenfolge wird einem pgagent
-Befehl angehängt, um den Daemon zu starten. In Ihrem Terminal führen Sie den folgenden Code aus:
- pgagent host=/var/run/postgresql dbname=sammy user=sammy
Wenn in Ihrer Ausgabe nichts zurückgegeben wird und Sie keine Verbindungsfehlermeldung erhalten, war die Einrichtung der Verbindungszeichenfolge erfolgreich.
Nachdem Sie die Verbindungszeichenfolge erstellt haben, können Sie einen Job mit pgAgent planen.
Schritt 4 – Planen eines Jobs mit pgAgent
pgAgent fungiert als Planungsagent, der Jobs ausführen und verwalten kann und Jobs mit einer oder mehreren Schritten oder Zeitplänen erstellen kann. Zum Beispiel kann ein Schritt mehrere SQL-Anweisungen in einem Shell-Skript umfassen und wird nacheinander ausgeführt. Insgesamt können Sie pgAgent verwenden, um Ihre Jobs zu planen, zu verwalten, zu ändern oder zu deaktivieren.
Für dieses Tutorial verwenden Sie pgAgent, um einen Job zu erstellen, der Ihre sammy-Datenbank jeden Tag jede Minute sichert. Sie können beginnen, indem Sie mit der rechten Maustaste auf pgAgent-Jobs klicken und Erstellen auswählen und dann pgAgent-Job… wie folgt:

Sobald Sie dies tun, wird ein Dialogfeld mit dem Titel Erstellen – pgAgent-Auftrag angezeigt, und Sie können damit beginnen, die erforderlichen Informationen im Allgemein-Register auszufüllen. In diesem Beispiel verwenden wir den Namen sammy_backup und geben keinen Host-Agent an, da wir möchten, dass dieser Auftrag auf jedem Host ausgeführt werden kann. Darüber hinaus lassen wir die Auftragsklasse als Routine-Wartung. Wenn Sie weitere Kommentare einbeziehen möchten, können Sie dies gerne im Abschnitt Kommentar tun:

Wechseln Sie als nächstes zum Schritte-Register. Klicken Sie in der oberen rechten Ecke auf das +-Symbol, um einen Schritt zu erstellen. In diesem Beispiel werden wir diesen Schritt Schritt 1 nennen. Klicken Sie dann auf den Stift auf der linken Seite des Papierkorbsymbols, um Ihre Optionen zu erweitern. Die Aktiviert?-Schaltfläche ist standardmäßig eingeschaltet und signalisiert, dass dieser Schritt in den Job einbezogen wird, wenn dieser ausgeführt wird.
Für die Option Art können Sie entweder SQL oder Batch auswählen. Hier haben wir Batch ausgewählt. Der Grund, warum Sie in diesem Beispiel Batch auswählen möchten, ist, weil dies die entsprechenden PostgreSQL-Befehle ausführt, die Sie für die geplanten Backups Ihrer Datenbank festlegen werden. Die Option SQL steht zur Verfügung, um einen Job zur Ausführung von Raw SQL zu planen. In diesem Fall haben wir Lokal für Verbindungstyp ausgewählt, damit der Schritt auf dem lokalen Server ausgeführt wird. Wenn Sie möchten, können Sie auch Remote für einen Remote-Host Ihrer Wahl auswählen. Wenn Sie dies auf einem Remote-Host durchführen möchten, müssen Sie diese Kriterien im Feld Verbindungszeichenfolge angeben. Wenn Sie Schritt 1 befolgt haben, ist Ihre Verbindungszeichenfolge bereits eingerichtet und verbunden.
Für das Feld Datenbank stellen Sie sicher, dass die richtige Datenbank ausgewählt ist. Hier haben wir sammy angegeben. Mit der Option Bei Fehler können Sie die pgAgent-Reaktion anpassen, wenn bei der Ausführung eines Schritts ein Fehler auftritt. In diesem Fall haben wir Fehlschlagen ausgewählt, um benachrichtigt zu werden, wenn bei der Verarbeitung eines Schritts ein Fehler auftritt. Wenn Sie weitere Anmerkungen hinzufügen möchten, können Sie diese im Feld Kommentar hinzufügen.
Innerhalb des gleichen Schritte-Tabs gibt es auch einen Code-Tab. Wenn Sie wie in diesem Beispiel Batch ausgewählt haben, wechseln Sie zu diesem Code-Tab. Sobald Sie sich in diesem Tab befinden, gibt es eine leere Zeile, in die Sie Ihren PostgreSQL-Befehl einfügen können. Hier können Sie Ihren eigenen Backup-Befehl mit Ihren benutzerdefinierten Optionen angeben. Jeder gültige Befehl ist akzeptabel.
In diesem Tutorial wird der Befehl pg_dump
verwendet, um Ihre Postgres-Datenbank sammy zu sichern. In diesem Befehl geben Sie Ihren spezifischen Benutzernamen, den Datenbanknamen und das Flag --clean
an, das pg_dump
dabei unterstützt, durch Löschen oder „Säubern“ der Datenbankobjekte bevor sie Befehle erstellt, zu arbeiten. Für das Flag --file
geben Sie den genauen Speicherort an, an dem die Backup-Dateien gespeichert werden sollen. Der letzte Teil dieser Anweisung date +%Y-%m-%d-%H-%M-%S
dient dazu, dynamisch ein Datum und mehrere Dateien für jedes Backup zu generieren. Andernfalls wird die Backup-Datei ständig überschrieben und die bestehende überschrieben. Auf diese Weise können Sie jede Ihrer Backup-Dateien für einen bestimmten Zeitpunkt oder ein bestimmtes Datum verfolgen, für das Sie sie geplant haben. Ihr vollständiger Befehl lautet wie folgt:
pg_dump --username=sammy --dbname=sammy --clean --file=/home/sammy/backup-`date +%Y-%m-%d-%H-%M-%S`.sql
Hinweis: Wenn Sie Ihre Backup-Dateien an einem anderen Speicherort speichern möchten, stellen Sie sicher, dass Sie einen absoluten Pfad zu Ihrem gewählten Verzeichnis verwenden. Zum Beispiel zeigt ~/
normalerweise auf das Home-Verzeichnis von /home/sammy/
, aber pg_dump
erfordert in diesem Fall den absoluten Pfad /home/sammy/
.
Sobald Sie Ihren Sicherungsbefehl hinzugefügt haben, können Sie zum Tab mit der Bezeichnung Zeitpläne navigieren. Ähnlich wie beim Einrichten von Schritten klicken Sie auf das Symbol +, um einen Zeitplan hinzuzufügen, geben dann Ihren bevorzugten Namen ein und klicken auf das Bleistiftsymbol neben dem Papierkorb, um Ihre Optionen zu erweitern. Unter dem Tab Allgemein befindet sich der Name, den Sie eingegeben haben. In diesem Beispiel ist es schedule1. Auch hier ist Aktiviert standardmäßig auf Ein geschaltet, um sicherzustellen, dass der Zeitplan ordnungsgemäß ausgeführt wird. Für die Optionen Start und Ende geben Sie den Start- und Endtag sowie die Start- und Endzeit für Ihren geplanten Job an. Da Sie Ihren geplanten Job testen werden, stellen Sie sicher, dass die aktuelle Zeit innerhalb des Bereichs von Start und Ende liegt. Fügen Sie eine Notiz in Kommentar hinzu, wenn Sie möchten:
Jetzt gehen Sie zum Wiederholen-Tab. Hier können Sie anpassen, wie oft Sie möchten, dass dieser geplante Job ausgeführt wird. Sie können so spezifisch wie möglich mit der Woche, dem Monat, dem Datum, den Stunden oder Minuten sein. Bitte beachten Sie, wenn Sie keine Auswahl treffen, ist dies dasselbe wie Alle auswählen wählen. Wenn Sie die Wochentage leer lassen, wird Ihr Zeitplan alle Wochentage berücksichtigen. Ebenso können Sie bei Zeiten die Stunden oder Minuten leer lassen, und dies ist dasselbe wie Alle auswählen. Bedenken Sie, dass die Zeiten im Cron-Stil formatiert sind. Um dies zu verdeutlichen, haben wir Alle auswählen für Minuten gewählt. Alle Minuten werden aufgelistet, aber wenn Sie es leer lassen, erreichen Sie auch das gleiche Ergebnis:
Wenn es Tage oder Zeiten gibt, an denen Sie einen Job nicht ausführen möchten, können Sie einen detaillierteren Zeitplan erstellen, oder Sie können dies über den Ausnahmen-Tab festlegen.
Hinweis: Ein Job wird auch gemäß dem Zeitplan ausgeführt, sodass jedes Mal, wenn er geändert wird, die geplante Laufzeit neu berechnet wird. Wenn dies geschieht, überprüft pgAgent die Datenbank nach dem letzten geplanten Laufzeitwert und startet in der Regel innerhalb einer Minute nach dieser spezifizierten Startzeit. Wenn Probleme auftreten, wird pgAgent beim erneuten Start wieder zum regulären Zeitplan zurückkehren, den Sie festgelegt haben.
Wenn Sie mit dem Einrichten und Anpassen des auszuführenden Zeitplans fertig sind, drücken Sie die Speichern-Taste. Ein neuer pgAgent-Job wird auf der linken Seite im Baumsteuerelement mit dem Namen Ihres Jobs angezeigt. In diesem Beispiel erscheint sammy_backup mit den untergeordneten Elementen Zeitpläne und Schritte:

Jetzt, da Sie erfolgreich einen pgAgent-Job erstellt haben, erfahren Sie im nächsten Schritt, wie Sie überprüfen können, ob Ihr pgAgent-Job erfolgreich ausgeführt wird.
Schritt 5 — Überprüfen Ihres pgAgent-Jobs
Sie können überprüfen, ob Ihr geplanter Job zum Erstellen einer Sicherungsdatei Ihrer Datenbank alle Minuten funktioniert, auf verschiedene Arten. In pgAdmin können Sie zum Baumsteuerelement auf der linken Seite navigieren und auf sammy_backup klicken. Gehen Sie dann zum Tab mit der Bezeichnung Statistiken. Die Seite Statistiken listet jede Instanz Ihres geplanten Jobs wie folgt auf:

Bitte beachten Sie, dass die Statistiken möglicherweise nicht sofort erscheinen oder aktualisiert werden, sodass Sie möglicherweise die Seite verlassen oder den Browser aktualisieren müssen. Denken Sie daran, dass Ihr Job in festgelegten Intervallen ausgeführt wird, also beachten Sie dies, wenn Sie ein periodisches oder längeres Datum oder eine Uhrzeit festlegen.
Wenn Sie lieber überprüfen möchten, ob Ihre Aufgabe von der Befehlszeile aus funktioniert, können Sie den Befehl ls ~
ausführen, um die Dateien in Ihrem Home-Verzeichnis aufzulisten. In diesem Tutorial legen Sie den genauen Speicherort dieses Home-Verzeichnisses fest, wenn Sie den Befehl pg_dump
in Schritt 4 schreiben:
- ls ~
Die Ausgabe listet jede Instanz der gesicherten Dateien auf.
Schritt 6 – Ändern, Deaktivieren, Löschen und Manuelles Ausführen von pgAgent-Jobs (Optional)
pgAgent bietet Flexibilität, wenn es darum geht, einen Job zu ändern oder zu deaktivieren. Mit pgAdmin können Sie zum spezifischen pgAgent-Job navigieren, in diesem Fall sammy_backup. Klicken Sie dann mit der rechten Maustaste und wählen Sie die Option Eigenschaften aus der Liste. Von hier aus können Sie auf das Stiftsymbol oben klicken, um Änderungen an Ihrem Job vorzunehmen:

Wenn Sie in den Eigenschaften sind und auf das Stiftsymbol klicken, können Sie zum Zeitpläne -Tab navigieren, um Ihren Job wie folgt zu deaktivieren:
Zusätzlich können Sie über die Baumsteuerung auf der linken Seite mit der rechten Maustaste auf den pgAgent-Job klicken und die Auswahl DELETE/DROP treffen, um den Job vollständig zu löschen. Wenn Sie einen Job manuell ausführen möchten, können Sie den gleichen Schritt wiederholen, aber dieses Mal die Auswahl RUN NOW aus der Liste wählen:

Dies sind nur einige Funktionen zur Verwendung von pgAgent zur Planung von Jobs, es gibt jedoch viele andere Möglichkeiten. Möglicherweise möchten Sie beispielsweise einen Job planen, der eine Sicherung für alle Benutzer und Rollen in Ihrer Datenbank erstellt, insbesondere mit dem Befehl pg_dumpall --globals only
. Sie können sogar komplexere Skripte mit Stapeljobs verwenden, über die Sie mehr auf der PostgreSQL-Wikiseite erfahren können.
Fazit
pgAgent ist nützlich zur Planung verschiedener Jobs, die dazu beitragen können, einige Ihrer eher monotonen, aber notwendigen täglichen Aufgaben zu reduzieren, wie z.B. das regelmäßige Sichern Ihrer Datenbank. Sobald Sie mit diesem Tool vertrauter sind, können Sie sogar versuchen, einen mehrstufigen Job oder SQL-Aufgaben zu erstellen, die komplexe Planung erfordern. Wenn Sie mehr erfahren möchten, können Sie die offizielle pgAgent-Dokumentation auf der pgAdmin-Website lesen.