Hallo.
Und weiter geht es mit der '
automatisierten Backup-Erstellung' (so nenne ich das mal.)
Bekannt ist, dass nur der Systemdatenbankadministrator (SYSDBA) oder der Datenbankbesitzer (z.B. User: Gerd) eine Sicherung durchführen können.
Jedoch kann jeder Benutzer eine Sicherung in einer neuen Datenbank wiederherstellen. Nur das betrifft den gbak-Funktionsbereich 'Wiederherstellung' (Restore) und der soll ja einzeln für sich beschrieben werden.
Um gbak auszuführen muss die Datenbank nicht heruntergefahren werden. In der Firebird Dokumentation wird darauf hingewiesen, dass eine Leistungsverschlechterung festgestellt werden kann. So kommt man schnell auf die Idee gbak bspw. am Abend oder in der Nacht ausführen zu lassen. Nur, wer soll das tun und wie?
Das WIE ist einfach zu beantworten. Es gibt nämlich die Möglichkeit ein Bash-Script zu erstellen, um dieses von einem geeigneten Cronjob, der zuvor in der Crontab angelegt werden muss, vom Dienst CRON aufrufen zu lassen. Allerdings WER das umsetzt, kann ich hier nicht beantworten. Es wird wohl an Ihnen hängen bleiben.
Weitere Infos zu CRON...
Schauen wir uns diese zwei Schritte, in ein einfaches Beispiel gehüllt, als Lösungs
ansatz einmal an:
1. Schritt
A)
Verzeichnisse
Hier im Beispiel werden diese beiden Verzeichnisse benötigt und manuell erstellt:
/home/gerd/Firebird/Datenbanken/
/home/gerd/Firebird/FB-Logs/
Sie müssen diese bei sich entsprechend anpassen.
B)
Bash-Script
Ein Bash-Script erstellen - mit Datum und es beispielhaft benennen gbak_b_adressen.sh:
Code: Alles auswählen
#!/bin/bash
/opt/firebird/bin/gbak -b -g -z -v -user sysdba -password 'sysdba_passwort' /home/gerd/Firebird/Datenbanken/adressen.fdb /home/gerd/Firebird/Datenbanken/adressen_$(date +"%d-%m-%y%y").fbk
Ergebnis: gbak erzeugt eine Sicherungsdatei
adressen_TT-MM-JJJJ.fbk
Oder auch ...
Ein Bash-Script erstellen - mit Datum und Uhrzeit und es beispielhaft benennen gbak_b_adressen.sh:
Code: Alles auswählen
#!/bin/bash
/opt/firebird/bin/gbak -b -g -z -v -user SYSDBA -password 'sysdba_passwort' /home/gerd/Firebird/Datenbanken/adressen.fdb /home/gerd/Firebird/Datenbanken/adressen_$(date +"%d-%m-%y%y_%H:%M:%S").fbk
Ergebnis: gbak erzeugt eine Sicherungsdatei
adressen_TT-MM-JJJJ_HH:MM:SS.fbk
Wie in der Dokumentation erwähnt erhalten Sie auch mit der automatisierten Ausführung von gbak einen konsistenten Schnappschuss der Datenbank (hier adressen.fdb) zum Zeitpunkt des Starts von gbak. (Auch wissenswert: gbak --> Garbage Collection).
2. Schritt
Der Aufruf der Crontab (versinnbildlicht eine Datei --> Cron-Table dt. Zeit-Tabelle).
Die Crontab wird über das Terminal aufgerufen.
:: Das Terminal aufrufen mit STRG+ALT+T
:: Eingabe:
Mittels GNU nano Editor lässt sich die angezeigte Datei bearbeiten.
Die englisch-sprachige Beschreibung in grüner Schriftfarbe kann bleiben.
Es muss nun eine Sicherungsaufgabe für gbak und zwar in eine einzige Zeile geschrieben werden.
Diese Zeile ist der Job, den das Programm Cron zu fälligen Zeitpunkten ausführen wird. So geht es:
Code: Alles auswählen
15 20 * * * /home/gerd/Firebird/FB-Skripte/gbak_b_adressen.sh >> /home/gerd/Firebird/FB-Logs/Backup_adressen.log 2>&1
![Cronjob für Backup.png](./download/file.php?id=41&sid=88fdafdc9cc7e07a467e94f034567a72)
- Cronjob für Backup.png (87.64 KiB) 25582 mal betrachtet
Also:
20:15 Uhr täglich wird das Script
gbak_b_adressen.sh (mit Datum oder mit Datum und Uhrzeit) ausgeführt.
Die Folge:
Das in diesem Rhythmus vom CRON-Dienst ausgeführte Script
gbak_b_adressen.sh erstellt ein Backup der Firebird Datenbank
adressen.fdb , die im Verzeichnis
/home/gerd/Firebird/Datenbanken/ liegt und legt es als Backupdatei (
adressen_TT-MM-JJJJ.fbk oder
adressen_29-03-2020_HH:MM:SS.fbk) in das Vereichnis
/home/gerd/Firebird/Datenbanken/.
Außerdem veranlassen Sie mit dieser Crontabzeile, dass eine Log-Datei (
Backup_adressen.log) erzeugt werden soll, die in das Verzeichnis
/home/gerd/Firebird/FB-Logs/ gelegt wird. Die Log-Datei
wird nur ein Mal erzeugt und bei jeder folgenden Sicherung nach unten erweitert.
Tipp:
So können Sie sich Ihre Cronjobs im Terminal anzeigen lassen:
:: Das Terminal aufrufen mit STRG+ALT+T
:: Eingabe:
So können Sie Ihre Cronjobs löschen.
:: Das Terminal aufrufen mit STRG+ALT+T
:: Eingabe:
Nun mit der Einfügemarke zur jeweiligen Zeile mit dem Cronjob navigieren und diese Zeile löschen.
Änderungen übernehmen mit ...
Tastenkombination:
STRG+X
Taste:
J
Eingabetaste
Falls Sie es möchten, dass vor der Sicherung erst noch eine Meldung (
Ja -
Nein Abfrage) eingeblendet werden soll, dann statten Sie das Bash-Script (hier nur Datum) in etwa so aus:
Code: Alles auswählen
#!/bin/bash
if ! /usr/bin/zenity --question --text "Datenbank adressen.fdb mit gbak sichern?"; then
exit;
fi
/opt/firebird/bin/gbak -b -g -z -v -ig -user SYSDBA -password 'sysdba_passwort' /home/gerd/Firebird/Datenbanken/adressen.fdb /home/gerd/Firebird/Datenbanken/adressen_$(date +"%d-%m-%y%y").fbk
Voraussetzung ist, dass
zenity installiert ist (was bei der Distri Linux Mint Standard sein soll).
Nur überlegen Sie - es muss erst die Meldung mit mit Klick auf Ja bestätigen werden, bevor das Backup durchgeführt wird. Somit läuft es nicht mehr automatisch im Hintergrund (zum Abend - in der Nacht) ab.
Viele Grüße
Gerd