MySQL-Cron-Job

Salman Mehmood 20 Juni 2023
  1. MySQL-Cron-Job
  2. Erstellen Sie eine Sicherungskopie der Tabelle
  3. Erstellen Sie den Cron-Job
MySQL-Cron-Job

Das Hauptziel dieses Artikels besteht darin, zu demonstrieren, wie eine in MySQL geschriebene Abfrage geplant und nach einer festgelegten Zeit mithilfe von Cron-Jobs ausgeführt wird.

MySQL-Cron-Job

Beim Umgang mit großen Datenmengen kann eine bestimmte Aufgabe wiederholt werden.

Es kann alles sein und hängt vom Kontext der Aufgabe ab; Beispiele sind das Entfernen von Einträgen aus einer Tabelle nach einer bestimmten Anzahl oder das Erstellen von zeitgesteuerten Backups durch Speichern der Datenbankkopie auf dem lokalen Computer - die Möglichkeiten sind grenzenlos.

Betrachten Sie die folgende Tabelle:

+------+---------------+-------------+----------------------+------------+
| ID   | Name          | CountryCode | District             | Population |
+------+---------------+-------------+----------------------+------------+
|    1 | Kabul         | AFG         | Kabol                |    1780000 |
|    2 | Qandahar      | AFG         | Qandahar             |     237500 |
|    3 | Herat         | AFG         | Herat                |     186800 |
|    4 | Mazar-e-Sharif| AFG         | Balkh                |     127800 |
|    5 | Amsterdam     | NLD         | Noord-Holland        |     731200 |
|    . | . . . . . . . | . . . . . . | . . . . . . . . . .  |  . . . . . |
|    . | . . . . . . . | . . .  < OUTPUT REDACTED >  . . .  |  . . . . . |
|    . | . . . . . . . | . . . . . . | . . . . . . . . . .  |  . . . . . |
| 4075 | Khan Yunis    | PSE         | Khan Yunis           |     123175 |
| 4076 | Hebron        | PSE         | Hebron               |     119401 |
| 4077 | Jabaliya      | PSE         | North Gaza           |     113901 |
| 4078 | Nablus        | PSE         | Nablus               |     100231 |
| 4079 | Rafah         | PSE         | Rafah                |      92020 |
+------+---------------+-------------+----------------------+------------+

Nehmen wir der Einfachheit halber an, dass die folgende Tabelle, in der Daten zu verschiedenen Städten auf der ganzen Welt gespeichert sind, regelmäßig aktualisiert wird; Die Situation erfordert, dass eine Tabellensicherung auf dem lokalen Computer vorhanden ist, bevor die Tabelle regelmäßig aktualisiert wird.

Um dies zu erreichen, können wir Cron-Jobs verwenden, um eine Abfrage auszuführen, die die Tabelle regelmäßig sichert. Mal sehen, wie wir das mit Cron-Jobs erreichen können.

Erstellen Sie eine Sicherungskopie der Tabelle

Bevor wir zum Zeitplanteil springen, erstellen wir die Abfrage, die es uns ermöglicht, diese bestimmte Tabelle zu sichern.

Betrachten Sie die folgende Abfrage:

mysql --user=[user] --password=[pass] --database=world --execute="SELECT * from world.city INTO OUTFILE 'D:\\a.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\n'"

Hier ist ein Überblick darüber, was in der Abfrage passiert:

  1. mysql – MySQL-Binärdatei, die ausgeführt werden muss, um auf die Datenbank zuzugreifen
  2. --user=[Benutzer – Benutzername
  3. --password=[pass] - Passwort
  4. --database=world – Datenbankname für den Zugriff und die Verarbeitung, in diesem Fall world
  5. --execute="..." – Die auszuführende Abfrage
    5.1. Select * from world.city* - Wählen Sie alle Einträge aus der Tabelle world aus, die im Datenbanknamen world vorhanden sind.
    5.2. INTO OUTFILE 'PATH\.csv' - Das Ergebnis der Abfrage in die genannte Datei schreiben.
    5.3. FIELDS TERMINATED BY ',' - Beenden Sie jedes Feld mit einem Komma (für eine CSV-ähnliche Struktur)
    5.4. UMGEBEN VON '' - Schließen Sie jedes Feld mit '' ein
    5.5. LINES TERMINATED BY '\n' - Beendet jede Zeile mit einem Newline-Zeichen

Speichern Sie diese Abfrage an einem beliebigen Ort, vorzugsweise im Format .sh.

Nachdem wir die Abfrage erstellt haben, können wir mit der Implementierung der Abfrage als geplante Aufgabe fortfahren.

Erstellen Sie den Cron-Job

Bevor wir die geplante Abfrage erstellen, sehen wir uns die allgemeine Syntax eines Cron-Jobs an.

Die allgemeine Syntax ist unten.

a b c d e /path/script result
  1. a, b, c, d und e geben die Uhrzeit, das Datum und die Wiederholung des Jobs an.
  2. /path/script gibt das auszuführende Skript an
  3. Ergebnis gibt an, wie der Benutzer über den Abschluss des Jobs benachrichtigt wird (Optional)

Zeitformat von Cronjobs

Werfen wir einen Blick auf das Zeitformat, dem Cron-Jobs folgen.

  1. [a] - Steht für eine Minute, kann zwischen 0 und 59 liegen
  2. [b] - Steht für eine Stunde, kann zwischen 0 und 23 liegen
  3. [c] - Steht für den Tag, kann zwischen 0 und 31 liegen
  4. [d] - Steht für einen Monat, kann zwischen 0 (kein) und 12 (Dezember) liegen
  5. [e] - Steht für den Wochentag, kann zwischen 0 (keine) und 7 (Sonntag) liegen

Richten Sie den Cron-Job ein

Um einen Cron-Job zu erstellen, öffnen Sie die Konfigurationsdatei crontab mit Ihrem bevorzugten Texteditor.

Um die Konfigurationsdatei zu öffnen, schreiben Sie Folgendes in Ihr Terminal:

crontab -e

Und fügen Sie dort Ihren Job hinzu; In unserem Fall wäre die Syntax wie folgt:

0 7 * * * /tmp/back.sh

Der obige Cron-Job wird jeden Tag um 7 Uhr morgens ausgeführt, erstellt ein Backup der Stadttabelle und speichert es am gewünschten Ort.

Nachdem Sie den Cron-Job hinzugefügt haben, speichern Sie die Datei und Sie sind fertig!

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn