131 lines
4.0 KiB
Markdown
131 lines
4.0 KiB
Markdown
# MySQL Timestamp Check
|
|
|
|
Ein Python-Skript zur Überwachung von MySQL-Tabellen, um sicherzustellen, dass die Daten täglich aktualisiert werden.
|
|
|
|
## Funktionsweise
|
|
|
|
Das Skript prüft alle Tabellen, die "RAW." im Namen enthalten, und überprüft, ob irgendein Zeitstempel in der Spalte "add_date" vom Vortag (gestern) existiert. Falls eine oder mehrere Tabellen keine Daten von gestern haben, wird eine Benachrichtigungs-E-Mail gesendet.
|
|
|
|
## Hauptfunktionen
|
|
|
|
- Automatische Erkennung aller Tabellen mit "RAW." im Namen
|
|
- Überprüfung, ob Zeitstempel von gestern existieren (standardmäßig in der Spalte "add_date")
|
|
- E-Mail-Benachrichtigung bei nicht aktuellen Tabellen
|
|
- Testmodus zur Simulation ohne E-Mail-Versand
|
|
- Konfiguration über .env-Datei oder Kommandozeilenparameter
|
|
|
|
## Voraussetzungen
|
|
|
|
- Python 3.6 oder höher
|
|
- Zugriff auf eine MySQL-Datenbank
|
|
- Folgende Python-Pakete:
|
|
- mysql-connector-python
|
|
- python-dotenv
|
|
|
|
Installation der benötigten Pakete:
|
|
```bash
|
|
pip install mysql-connector-python python-dotenv
|
|
```
|
|
|
|
## Konfiguration
|
|
|
|
Erstellen Sie eine `.env`-Datei im gleichen Verzeichnis wie das Skript mit folgendem Inhalt:
|
|
|
|
```
|
|
# Datenbank-Konfiguration
|
|
MYSQL_HOST=dein-mysql-server
|
|
MYSQL_USER=username
|
|
MYSQL_PASSWORD=passwort
|
|
MYSQL_DATABASE=deine_db
|
|
|
|
# E-Mail-Konfiguration
|
|
EMAIL_SENDER=absender@example.com
|
|
EMAIL_RECEIVER=empfaenger@example.com
|
|
SMTP_SERVER=smtp.example.com
|
|
SMTP_PORT=587
|
|
SMTP_USER=smtp_username
|
|
SMTP_PASSWORD=smtp_passwort
|
|
```
|
|
|
|
## Verwendung
|
|
|
|
### Standardverwendung
|
|
|
|
```bash
|
|
python mysql_timestamp_check.py
|
|
```
|
|
|
|
### Testmodus (keine E-Mail-Versendung)
|
|
|
|
```bash
|
|
python mysql_timestamp_check.py --test
|
|
```
|
|
|
|
### Mit abweichender Zeitstempel-Spalte
|
|
|
|
```bash
|
|
python mysql_timestamp_check.py --timestamp-column=andere_datum_spalte
|
|
```
|
|
|
|
### Überschreiben von .env-Einstellungen
|
|
|
|
Alle Parameter aus der .env-Datei können auch über die Kommandozeile überschrieben werden:
|
|
|
|
```bash
|
|
python mysql_timestamp_check.py --host=anderer-host --user=anderer-user --password=anderes-passwort
|
|
```
|
|
|
|
## Vollständige Parameterliste
|
|
|
|
```
|
|
--host MySQL-Hostadresse (Standard: aus .env MYSQL_HOST)
|
|
--user MySQL-Benutzername (Standard: aus .env MYSQL_USER)
|
|
--password MySQL-Passwort (Standard: aus .env MYSQL_PASSWORD)
|
|
--database MySQL-Datenbankname (Standard: aus .env MYSQL_DATABASE)
|
|
--timestamp-column Name der Zeitstempel-Spalte (Standard: add_date)
|
|
--test Testmodus: Keine E-Mail senden, nur Ausgabe auf der Konsole
|
|
--email-sender Absender-E-Mail-Adresse (Standard: aus .env EMAIL_SENDER)
|
|
--email-receiver Empfänger-E-Mail-Adresse (Standard: aus .env EMAIL_RECEIVER)
|
|
--smtp-server SMTP-Server-Adresse (Standard: aus .env SMTP_SERVER)
|
|
--smtp-port SMTP-Server-Port (Standard: aus .env SMTP_PORT)
|
|
--smtp-user SMTP-Benutzername (Standard: aus .env SMTP_USER)
|
|
--smtp-password SMTP-Passwort (Standard: aus .env SMTP_PASSWORD)
|
|
```
|
|
|
|
## Automatisierung mit Bash-Skript
|
|
|
|
```bash
|
|
chmod +x run_timestamp_check.sh
|
|
```
|
|
|
|
### Cronjob-Einrichtung
|
|
|
|
Um das Skript täglich automatisch ausführen zu lassen, können Sie einen Cronjob einrichten:
|
|
|
|
```bash
|
|
# Öffnen der crontab
|
|
crontab -e
|
|
|
|
# Fügen Sie die folgende Zeile hinzu, um das Skript täglich um 8:00 Uhr auszuführen
|
|
0 4 * * * /pfad/zu/run_timestamp_check.sh
|
|
```
|
|
|
|
## Fehlerbehebung
|
|
|
|
### Bekannte Probleme
|
|
|
|
- **Keine Verbindung zur Datenbank möglich**: Überprüfen Sie die Datenbankverbindungsparameter in der .env-Datei.
|
|
- **Keine E-Mail wird gesendet**: Stellen Sie sicher, dass die SMTP-Konfiguration korrekt ist. Verwenden Sie den Testmodus `--test`, um die gefundenen Probleme ohne E-Mail-Versand anzuzeigen.
|
|
- **Skript kann keine Tabellen finden**: Stellen Sie sicher, dass Tabellen mit "RAW." im Namen in der Datenbank existieren.
|
|
|
|
### Debug-Tipps
|
|
|
|
Für detailliertere Fehlerinformationen führen Sie das Skript im Testmodus aus:
|
|
|
|
```bash
|
|
python mysql_timestamp_check.py --test
|
|
```
|
|
|
|
## Lizenz
|
|
|
|
Dieses Skript ist für den internen Gebrauch bestimmt und unterliegt keiner speziellen Open-Source-Lizenz, sofern nicht anders angegeben. |