HowTo: Tägliches Datenbank-Backup per CRON |
Odysseus
Mitglied
Dabei seit: 17.01.04
Beiträge: 14
Herkunft: Regensburg Forenversion: vBulletin 3
|
|
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:
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.
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.
__________________ Wer andren eine Bratwurst brät,
der hat ein Bratwurstbratgerät.
|
|
18.01.04 13:38 |
E-Mail
Finden
Als Freund hinzufügen
|
|
MmM
Mitglied
Dabei seit: 19.03.04
Beiträge: 399
Herkunft: Herkunft: Forenversion: wbb 2.1.5
|
|
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 |
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
|
|
nämlich?
__________________ Diese Signatur wurde 2 mal editiert, zum letzten Mal von MmM am 18.02.2005 15:21.
|
|
16.02.05 16:03 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Bluewin unregistriert
|
|
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
|
|
moin....
eine etwas dumme frage
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 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Speedy01
Mitglied
Dabei seit: 08.05.06
Beiträge: 12
|
|
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 |
E-Mail
Finden
Als Freund hinzufügen
|
|
|