Backup der MySQL-Datenbank über Cronjob

Status
Für weitere Antworten geschlossen.

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
So! Ich hab es jetzt gelöst und wollte Euch mal aufschreiben, wie ich es gemacht habe. Telnet- bzw. SSH-Zugang ist zwingend erforderlich.

Das unten beschriebene Skript sowie die erstellten Backups sollte man am besten irgendwo auf Volume1 speichern. Den gewünschten Pfad muss man im Skript überall dort eingeben, wo bis jetzt deinpfad steht. auch das sqlpasswort muss noch entsprechend angepasst werden.
  1. Man erstellt eine Datei mysqlbackup.sh mit folgendem Inhalt:
    Code:
    [SIZE=2]#!/bin/bash[/SIZE]
    [SIZE=2]#[/SIZE]
    [SIZE=2]# dieses skript kann man beliebig oft ausführen[/SIZE]
    [SIZE=2]#[/SIZE]
    [SIZE=2]# anzahl der sicherungen die aufgehoben werden sollen[/SIZE]
    [SIZE=2]KEEP=2[/SIZE]
    [SIZE=2]BACKUPS=`find /volume1/[B]deinpfad[/B]/backup -name "mysqldump-*.gz" | wc -l | sed 's/\ //g'`[/SIZE]
    [SIZE=2]while [ $BACKUPS -ge $KEEP ][/SIZE]
    [SIZE=2]do[/SIZE]
    [SIZE=2]ls -tr1 /volume1/[B]deinpfad[/B]/backup/mysqldump-*.gz | head -n 1 | xargs rm -f [/SIZE]
    [SIZE=2]BACKUPS=`expr $BACKUPS - 1` [/SIZE]
    [SIZE=2]done[/SIZE]
    [SIZE=2]DATE=`date +%Y%m%d%H%M%S`[/SIZE]
    [SIZE=2]rm -f /volume1/[B]deinpfad[/B]/backup/.mysqldump-${DATE}.gz_INPROGRESS[/SIZE]
    [SIZE=2]/usr/syno/mysql/bin/mysqldump --opt -uroot -p[B]sqlpasswort[/B] --all-databases | gzip -c -9 > /volume1/[B]deinpfad[/B]/backup/.mysqldump-${DATE}.gz_INPROGRESS[/SIZE]
    [SIZE=2]mv -f /volume1/[B]deinpfad[/B]/backup/.mysqldump-${DATE}.gz_INPROGRESS /volume1/[B]deinpfad[/B]/backup/mysqldump-${DATE}.gz[/SIZE]
    [SIZE=2]exit 0[/SIZE]
  2. Die Datei wird jetzt in /volume1/deinpfad gespeichert.
  3. Jetzt muss noch das Unterverzeichnis /volume1/deinpfad/backup angelegt werden.
  4. Testweise kann man das Skript schon mal mit "sh /volume1/deinpfad/mysqlbackup.sh" starten. Bei jedem Aufruf werden zunächst die überflüssigen Backups gelöscht und dann das neue Backup angelegt.
  5. Zum Schluss muss man dieses Skript noch in der Datei /etc/crontab einfügen, um einen zeitgesteuerten Aufruf zu ermöglichen. Man fügt dazu folgende Zeile in die crontab ein:
    Code:
    1       0       *       *       *       root    sh /volume1/[B]deinpfad[/B]/mysqlbackup.sh
    Diese Zeile bewirkt, dass das Skript täglich um 0:01 Uhr ausgeführt wird (direkt nach dem Aktualisieren der Uhrzeit).
Ich hoffe, das hilft. Verbesserungen sind ausdrücklich erwünscht. Soo viel Ahnung hab ich nämlich nicht davon.

Trolli
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Neustart nicht vergessen. Erst nach dem Neustart wird die neue crontab aktiviert. Crontab möglichst mit dem Editor vi bearbeiten. Die crontab ist extrem empfindlich, was falsche Zeichen in der Datei angeht. Die Spalten der crontab müssen mit Tab und nicht mit Leerzeichen getrennt sein.

Trolli
 

somdata

Benutzer
Mitglied seit
19. Nov 2007
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Diese Lösung würde mir super weiterhelfen. Leider erhalte ich aber weder mit Telnet noch mit SSH eine Verbindung zur Cubestation. Was muss ich dazu eventuell noch anders konfigurieren?
Danke für die Hilfe!
Martin Sommerhalder
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0

gruenerfisch

Benutzer
Mitglied seit
19. Nov 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Moin,

ich wollte diese Variante meine MySQL-DB zu sichern einmal ausprobieren... leider erhalte ich beim Ausführen des Scripts folgende Fehlermeldung:

line 17: syntax error: unexpected end of file (expecting "do")

Oder gibt es mittlerweile eine "schönere" Lösung?

DANKE vorab!!!

DS212
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
es gibt eine schöne Lösung ... einfach mal das normale lokale Backup mit all seinen Optionen anschauen

Itari
 

gruenerfisch

Benutzer
Mitglied seit
19. Nov 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo!

Danke für die Rückmeldung. Ich glaube ich habe es auch schon gefunden.

Vielen Dank!
 

TheGardner

Benutzer
Mitglied seit
30. Nov 2012
Beiträge
1.845
Punkte für Reaktionen
56
Punkte
74
Bei mir ist es umgedreht! Ich habe meine Foren "draußen" liegen und fahr dort alle 6 Stunden ein Backup, wo die Datenbanken in eine .gz Datei auf der Webseite abgelegt werden. Dort holt sich meine DS die Teile dann einmal am Tag ab, entpackt sie und schiebt sie in meine private Datenbank (mittels mysql) rein. In meinem Web-Verzeichnis liegen die Foren quasi alle gespiegelt und dienen als Sandkästen, wo man die phpBB Software testen kann/könnte (bei neuen phpBB Updates oder wenn man Plugins für die Foren testen möchte, bevor die draußen in den Original-Foren zum Einsatz kommen). Dabei hat man dann (in meinem Fall) immer 24 Stunden zeit sich in den Testforen auszutoben, sie kaputt zu spielen, bevor um 21 Uhr dann die DS wieder mit den aktuellen Daten (Backups) von draußen kommt und diese über alles Kaputte drüberbügelt, so dass man wieder mit einem reinen phpBB Forum rumtesten kann!
Gleichzeitig hat man auf der DS nen Backup, falls dem Hoster draußen mal ein Missgeschick passieren "würde"... Passiert sicher nicht, aber man kann ja nie genug backuppen.

Falls als irgendwer mal hier drüber stolpert und nen ähnliches Szenario braucht! Bescheid geben!
 

Frank70

Benutzer
Mitglied seit
17. Feb 2012
Beiträge
62
Punkte für Reaktionen
0
Punkte
6
Hallo,

danke für die Anleitung! Ich habe das alles mal probiert und die Sicherung klappt offensichtlich auch. Aber jetzt habe ich mal eine ganz blöde Frage: Wie stelle man denn eine so gesicherte Datenbank eigentlich wieder her? Ich habe da ja nun nur diese einzelne Datei (mysqldump-20130111103245.gz) mit welcher ich den Backupvorgang getestet habe...

Grüße
Frank
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat