YourWBB


yourWBB » yourWBB Misc * » Das Proggen » Sicherung der Datenbank » HowTo: Tägliches Datenbank-Backup per CRON » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 29.395 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen HowTo: Tägliches Datenbank-Backup per CRON
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Odysseus Odysseus ist männlich
Mitglied


images/avatars/avatar-173.gif

Dabei seit: 17.01.04
Beiträge: 14
Herkunft: Regensburg
Forenversion: vBulletin 3

Geschockt HowTo: Tägliches Datenbank-Backup per CRON Antworten Zitieren Editieren Melden       UP

Diese Anleitung ist für alle Foren-Admins geeignet, die sich auf ihrem Webspace Account bzw. Rootserver per SSH oder auch Telnet Protokoll einwählen können.

Was machen die hier vorgestellten Scripts?
Mit dieser Anleitung kann man zu regelmäßigen Zeitpunkten ein Backup der Foren-Datenbank erstellen lassen. Die Backups werden direkt über die Kommandozeile des Servers erstellt und sind somit von Timeouts und anderen Problemen, die man von phpMyAdmin und Konsorten kennt, nicht betroffen.

Voraussetzungen:
- SSH/Telnet Zugriff auf den Webserver
- Recht zum Erstellen von Dateien auf dem Server und zum Ausführen von Programmen
- Rechte zur Einrichtung eines CRON-Jobs
- Ein Programm für die Einwahl über SSH/Telnet auf dem Server. (z.B. Putty oder SSH)



1) Erstellung eines Ziel-Verzeichnisses
Zuerst musst du ein Verzeichnis auf dem Server anlegen, in welches die Backups erstellt werden sollen. Das könnte z.B. so geschehen:

code:
1:
mkdir /var/backup/



2) Backup-Script erstellen
Für das Script benötigst du folgende Daten: Den Name der Datenbank, den Name des DB-Benutzers und das zugehörige Passwort. In der Anleitung sind diese Variablen GROß geschrieben - setze dort einfach deine Daten ein. Bitte beachte, dass du die Leerzeichen korrekt setzt! (Wo kein Leerzeichen steht, mach auch keines hin).
Falls du in Schritt 1 ein anderes Verzeichnis als /var/backup/ angelegt hast, musst du im Script natürlich diesen anderen Verzeichnisnamen benutzen.

code:
1:
2:
3:
4:
5:
#!/bin/sh
DATUM=`date '+%Y-%m-%d'`
mysqldump -uUSERNAME -pPASSWORT -hlocalhost --opt DBNAME > /var/backup/backup.sql
gzip -9 --best /var/backup/backup.sql
mv /var/backup/backup.sql.gz /var/backup/forumbackup-${DATUM}.sql.gz


Diesen Text musst du als einfache ASCII-Datei irgendwo auf dem Webserver erzeugen, z.B. mit dem VI Editor:

code:
1:
vi /var/backup/fbackup


Um in VI einen Text eingeben zu können, muss man mit "i" in den Insert-Modus gehen. Mit "esc" verlässt man den Insert-Modus. Abgespeichert wird die Datei mit der Zeichenkombination:
[ESC] --> [W] --> [Q] --> [ENTER]

Eine Anleitung zu VI findest du hier:
http://www.cs.fsu.edu/general/vimanual.html


3) Script ausführbar machen
Damit das Script später auch ausgeführt werden kann, müssen mit CHMOD die entsprechenden Rechte gesetzt werden. (Diesen Vorgang kennen die meisten vermutlich vom FTP-Programm her). Aus Sicherheitsgründen wird CHMOD so angewendet, dass in Zukunft nur der Eigentümer der Datei (also du) die Datei einsehen kann, damit das Passwort von Dritten nicht ausgelesen werden kann.
Das geht so:

code:
1:
chmod 700 /var/backup/fbackup



4) Script testen
Das Script müsste nun schon funktionieren. Um einen Testlauf zu starten, gib folgendes ein und bestätige jeweils mit ENTER:

code:
1:
2:
cd /var/backup/
./fbackup


Je nach Größe der Datenbank und LEistung des Servers kann das nun eine Weile dauern. Zuerst wird ein Dump erstellt, dann wird er mit GZip komprimiert.
Gib nach abschluss des Vorgangs einfach "l" (ein kleines L ist das!) ein und drück ENTER. Es müsste nun eine Datei existieren, die den Namen "forumbackup-JJJJ-MM-TT.sql.gz" trägt. (Heutiges Datum).
Wenn das funktioniert hat, kannst du zu Schritt 5 übergehen.


5) CRON-Job einrichten
Damit das Backup-Script regelmäßig ausgeführt wird, musst du einen CRON Job erstellen. Das Cron Programm führt andere Programme zu geplanten Zeitpunkten aus. Man kann das mit dem Windows-Taskplaner vergleichen - das wird mehreren Leuten ein Begriff sein.

Um die CRON-Tabelle zu bearbeiten, gib folgendes Kommando in der Kommandozeile ein:

code:
1:
crontab -e


Falls schon Einträge in dieser Datei vorhanden sind, dann bewege dich mit den Cursor-Tasten in die letzte Zeile. Dann drücke [SHIFT]+A, um weitere Zeilen einzufügen. Füge auf diese Weise folgenden Code hinzu:

code:
1:
2:
# Forum Backup - jeden Tag um 3:00 Uhr
0 3 * * * /var/backup/fbackup


Auf diese Weise wird jeden Tag um 3:00 Uhr in der Früh das Backup-Script ausgeführt. Das ist ein ganz günstiger Zeitpunkt, denn nachts ist meistens nicht so viel los. Wenn du hier dennoch andere Werte wünschst, musst du die fünf Zeit-Kommandos vor dem scriptnamen ändern. Eine ausführliche Anleitung, welche Kommandos zulässig sind und wie das ganze funktioniert, findest du hier:
http://www.unixgeeks.org/security/newbie/unix/cron-1.html

Verlasse im Anschluss den VI Editor mit der folgendem Kombination:
[ESC] --> [W] --> [Q] --> [ENTER]




Fertig!


Um den Dump wieder in eine Datenbank zurückzuspielen musst du einfach eine leere Datenbank erstellen bzw. eine vorhandene Datenbank leeren. Per GUnzip wird der Dump entkomprimiert und das SQL File wieder eingelesen.
Das Restore geht also dann über die folgenden Befehle:

code:
1:
2:
gunzip /var/backup/forumbackup-JJJJ-MM-TT.sql.gz
mysql -uBENUTZERNAME -pPASSWORT -hlocalhost DATANBANKNAME < /var/backup/forumbackup-JJJJ-MM-TT.sql


Achtung, das kann je nach Größe des Dumps wieder einige Zeit lang dauern, in der das System so aussieht, als würde es hängen - tut es aber nicht. smile



Was gibt es noch zu beachten?
1) Es werden zwar Backups erstellt, aber nicht wieder gelöscht. Es macht also Sinn, ab und zu mal ältere Backups zu lsöchen, um Speicherplatz zu sparen.
2) Bei großen Foren kann es sein, dass während des Backup-Vorgangs neue Beiträge hinzu kommen und es im Dump so zu leichten Inkonsistenzen kommen kann. Das lässt sich lösen, indem man das Board vor der Ausführung des Scriptes in den Wartungsmodus versetzt und nacher wieder aktiviert. Das geht auch per CRON, aber ich habe es mal (noch!) nicht gepostet. Das Problem ist nicht sonderlich tragisch für den Anfang. smile

__________________
Wer andren eine Bratwurst brät,
der hat ein Bratwurstbratgerät.
18.01.04 13:38 Odysseus ist offline E-Mail Finden Als Freund hinzufügen
JaY^JaY JaY^JaY ist männlich
Mitglied


images/avatars/avatar-218.gif

Dabei seit: 16.01.04
Beiträge: 1.059
Herkunft: Aachen
Forenversion: 2.3.5

Antworten Zitieren Editieren Melden       UP

Wer kostenlose cronjobs benötigt:
www.cronjob.de ist nen sehr geiler Service! smile

__________________

Mit freundlichen Grüßen aus dem Schönen Aachen


Yehya "JaY^JaY" El Omari
Welkenrather Str. 50
52074 Aachen

Festnetz: +49 (0) 241 9890858
eMail: info@RauteMusik.FM
Homepage: www.RauteMusik.FM

22.01.05 15:16 JaY^JaY ist offline E-Mail WWW Finden Als Freund hinzufügen
MmM
Mitglied


Dabei seit: 19.03.04
Beiträge: 399
Herkunft: Herkunft:
Forenversion: wbb 2.1.5

Antworten Zitieren Editieren Melden       UP

ich hab keine ahnung davon, deshalb verzeihe man mir fragen, die für andere total logisch erscheinen.

also per ssh komme ich auf den server. allerdings steht bei putty kurz "warning" da und das fenster verschwindet.

dann ist der schritt mit dem backup script auch nicht so transparent für mich: soll der text da als eine datei erstellt werden, oder was wird damit gemacht?

wäre nett wenn man mir da helfen könnte. wenigst, um das ganze zu verstehen.

__________________
Diese Signatur wurde 2 mal editiert, zum letzten Mal von MmM am 18.02.2005 15:21.
16.02.05 15:33 MmM ist offline E-Mail WWW Finden Als Freund hinzufügen AIM-Name von MmM: bei ihnen funzen popups..
Gado Gado ist männlich
Mitglied


images/avatars/avatar-2237.jpg

Dabei seit: 06.10.04
Beiträge: 1.451
Herkunft: 33xxx

Antworten Zitieren Editieren Melden       UP

Man kann es auch einfacher haben mit Perl Augen rollen

__________________
4D 66 67 20 47 61 64 6F

16.02.05 15:46 Gado ist offline WWW Finden Als Freund hinzufügen Füge Gado in deine Kontaktliste ein
MmM
Mitglied


Dabei seit: 19.03.04
Beiträge: 399
Herkunft: Herkunft:
Forenversion: wbb 2.1.5

Antworten Zitieren Editieren Melden       UP

nämlich?

__________________
Diese Signatur wurde 2 mal editiert, zum letzten Mal von MmM am 18.02.2005 15:21.
16.02.05 16:03 MmM ist offline E-Mail WWW Finden Als Freund hinzufügen AIM-Name von MmM: bei ihnen funzen popups..
Gado Gado ist männlich
Mitglied


images/avatars/avatar-2237.jpg

Dabei seit: 06.10.04
Beiträge: 1.451
Herkunft: 33xxx

Antworten Zitieren Editieren Melden       UP

http://jgs-xa.de/thread.php?threadid=94&sid=


Ich nutze das und funzt super. Keine Probs.

EDIT: Ich hab noch ne .htaccess in den Ordner gelegt mit der darf nur der Cronjob von JGS-XA das Skript ausführen. Kann man natürlich anpassen. Für JGS-XA Cron würde ich das per PN schicken.

__________________
4D 66 67 20 47 61 64 6F

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Gado: 16.02.05 16:33.

16.02.05 16:31 Gado ist offline WWW Finden Als Freund hinzufügen Füge Gado in deine Kontaktliste ein
GoldenGate GoldenGate ist männlich
Mitglied


images/avatars/avatar-4279.jpg

Dabei seit: 16.01.04
Beiträge: 805
Herkunft: Bodenheim
Forenversion: Wbb 2.3.3.

Antworten Zitieren Editieren Melden       UP

Wie merkt man ob man das mit seinem root kann?
17.02.05 21:06 GoldenGate ist offline E-Mail WWW Finden Als Freund hinzufügen AIM-Name von GoldenGate: GoldenGate1980 YIM-Name von GoldenGate: samybaffoun
Bluewin
unregistriert
Antworten Zitieren Editieren Melden       UP

mit jedem root zugang kann mann das !


PS: gut geschrieben kommt jeder gut zurecht!
17.02.05 21:14
Globestern
Mitglied


Dabei seit: 23.11.04
Beiträge: 29
Herkunft: http://www.moviez.to

Antworten Zitieren Editieren Melden       UP

moin....

eine etwas dumme frage unglücklich

wie krieg ich das script auf den server:

#!/bin/sh
DATUM=`date '+%Y-%m-%d'`
mysqldump -uUSERNAME -pPASSWORT -hlocalhost --opt DBNAME > /var/backup/backup.sql
gzip -9 --best /var/backup/backup.sql
mv /var/backup/backup.sql.gz /var/backup/forumbackup-${DATUM}.sql.gz

also .txt speichern und dann per ftp uppen?
20.04.05 19:04 Globestern ist offline E-Mail WWW Finden Als Freund hinzufügen
Speedy01
Mitglied


Dabei seit: 08.05.06
Beiträge: 12

Antworten Zitieren Editieren Melden       UP

Hallo,


Zitat:
2) Bei großen Foren kann es sein, dass während des Backup-Vorgangs neue Beiträge hinzu kommen und es im Dump so zu leichten Inkonsistenzen kommen kann. Das lässt sich lösen, indem man das Board vor der Ausführung des Scriptes in den Wartungsmodus versetzt und nacher wieder aktiviert. Das geht auch per CRON, aber ich habe es mal (noch!) nicht gepostet.


Kannst du mir sagen, wiie ich das Board automatisch offline schalten kann?

Schonmal danke im Vorraus

mfG
Speedy01
04.10.06 15:29 Speedy01 ist offline E-Mail Finden Als Freund hinzufügen
[R]
unregistriert
Antworten Zitieren Editieren Melden       UP

Zitat:
Original von Bluewin
mit jedem root zugang kann mann das !


PS: gut geschrieben kommt jeder gut zurecht!


sofern crond da ist, ansonsten muss man diesen noch nachinstallieren.
Aber i.d.R. ist der ja da.

Anstatt des Shell Scripts wuerde ich ein Perl Script nehmen - i love perl Augenzwinkern


Zitat:
Kannst du mir sagen, wiie ich das Board automatisch offline schalten kann?

Hack ein Perl Script das vorher den benoetigen SQL-Befehl uebergibt...
Fuer genaueres schaust am besten erstmal in die DB welchen Wert du updaten musst, damit das Board offline ist.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von [R]: 04.10.06 16:17.

04.10.06 16:17
Guido Guido ist männlich
Mitglied


images/avatars/avatar-4407.jpg

Dabei seit: 18.02.04
Beiträge: 21
Fähigkeiten: WBB3 Anfänger
Forenversion: 3.1

Antworten Zitieren Editieren Melden       UP

Ich habe ein Problem: ich bekomme das Backup-Script nicht gespeichert. BEkomme immer den Fehler E212. HAb im Netz jetzt mal gesucht, komme aber nicht weiter. Beim Aufsetzen des Servers ging es einwandfrei. Jetzt haben wir das Passwort geändert gehabt, da kommt die Fehlermeldung, daß die Datei nicht existieren würde. Also: gelöscht und versucht, neu anzusetzen. Aber: der E212 spielt nicht mit. Was tun?


Edit:
ich hatte vom Script noch ne Sicherungkopie, die ich jetzt mal in den entsprechenden ORdner gepackt habe. Rechte auf 700 gesetzt. Wenn ich jetzt aber das Script ausführen will kommt die Fehlermeldung:

-bash: ./fbackup: /bin/sh^M: bad interpreter: No such file or directory

Warum kommt diese Fehlermeldung?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Guido: 05.06.11 09:54.

05.06.11 09:46 Guido ist offline E-Mail Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » yourWBB Misc * » Das Proggen » Sicherung der Datenbank » HowTo: Tägliches Datenbank-Backup per CRON