DB Backup Routine

Carrear

Erfahrenes Mitglied
Hi Leute,

ich werte meine Besucherzahlen mittels dem Tool Piwik aus. Leider passierte es mir in letzter Zeit des öfteren, dass die dazugehörigen Datenbanken gecrasht sind. Deshalb möchte ich diese mittels PHP regelmäßig sichern. Dazu habe ich schon eine Routine:

PHP:
<?php
$db_name = "LOGINNAME";
$db_passwort = "PASSWORT";

$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";

exec("mysqldump -u $db_name -p'$db_passwort' --allow-keywords --add-drop-table --complete-insert --quote-names $db_name > $sql_file");
exec("gzip $sql_file");

$backupdatei = $sql_file . ".gz";
$host = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$host = str_replace(basename(__FILE__),$backupdatei,$host);
echo "Backup Datei downloaden: <a href='" . $host . "'>" . $backupdatei . "</a>";
?>

Wie ihr seht enthält der Name der Backup Datei auch das Datum. Ich möchte dieses Script einmal pro Tag per Cronejob laufen lassen. Da ich allerdings nicht manuell die Menge der Backups kontrollieren möchte habe ich mir folgendes gedacht. Der Crone job soll täglich laufen.

Es sollen dann folgende Dateien auf dem Server liegen:

Die Backups der letzten 7 Tage UND aus den 21 Tagen zuvor jeweils das 1., das 8. und das 15. Sprich aus einem Zyklus von 28 Tagen (4 Wochen) soll jeweils das erste Backup einer jeden Woche bleiben, und jedes Backup der letzten Woche. Das ganze soll auch fortlaufend funktionieren - also in der 5. Woche soll es dann das übrige Backup der 1. Woche löschen, die letzten 6. Backups der 4. Woche löschen (das erste muss ja bleiben) und dann für den kommenden 7-Tage-Zyklus wieder nach und nach 7 Backups erstellen bis es in die nächste Woche geht. Also liegen auf dem Server nie mehr als 10 Backups.

Ich weiß nicht wie ich das angehen soll. Ich weiß nicht wie ich mit dem Datum umgehen soll, oder ob ich die Entscheidung, ob ein Backup bleibt oder gelöscht wird anhand von einem internen Zähler mache.

VG
 
Ich habe mir folgende konzeptionelle Gedanken gemacht:

Jedes Backup bekommt einen DB Eintrag in dem festgehalten wird:

  • Datum der Erstellung
  • ID

Nachdem das Backup erstellt und gespeichert wurde bekommen die Dateien chronologisch aufsteigend Zahlen ab 1 zugewiesen.

Überprüfung: Welcher Rest bleibt bei Teilung der ID der chronologisch letzten Datei / 7
Bei einem Rest zwischen 1-6 wird jeweils die chronologisch 5. Datei gelöscht. Dann wird die Anzahl der Dateien gezählt. Ist sie höher als 10, dann wird die chronologisch 1. Datei gelöscht. Ist das nachvollziehbar und logisch richtig?
 
Wozu brauchst du php? Wenn du es über cronjobs machst dann schreibe doch ein Shellskript?

Was hast du denn für ein Filesystem und Server? Meine Piwik DB ist riesig und es gab noch nie Probleme. Selbst wenn, bei jedem guten Hosting Angebot sind automatische Backups dabei.
 
Ja sind auch Backups dabei und die kosten 4,99 je wiederherstellung ;) Shell hab ich null plan von, PHP kann ich mich reinfuchsen. Warum müssen hier immer alle alles kritisieren :D ?
 
Warum müssen hier immer alle alles kritisieren :D ?

Das ist keine Kritik sondern ein Vorschlag. Das muss man schon einmal unterscheiden können. Des Weiteren wirst du kein deutsches PHP-Forum finden, welches SO WENIG Kritik an dir ausübt wie hier.

Selbst wenn es Kritik wäre, kann man die doch locker wegstecken und sich gedanken darüber machen.
 
Ich habe eine Frage gestellt was PHP angeht ^^ wenn ich eine andere Möglichkeit sehen würde, die im Bereich meiner Möglichkeiten liegt, dann hätte ich diese sicher bedacht. Auf die Backup Möglichkeiten beim Hoster bin ich ja nun eingegangen.
 
Wenn du in einem Forum (egal welches) eine Frage stellst, musst du mit Antworten rechnen die über deinen Möglichkeiten liegen. Manchmal vielleicht auch drunter.

Jedenfalls finde ich die Antwort passend!
 
DAS ist für mich nützlich. Danke. An bl kann ich nur richten - joar, wenn du das so siehst. Ich finde in einem Forum gerne die Antworten die ich suche :)
 
Zurück