MySQL-Backup-Script aus der "FAQ"

Bash, Shell, PHP, Python, Perl, CGI
ecki
Posts: 25
Joined: 2003-07-14 17:47
Location: Erde

MySQL-Backup-Script aus der "FAQ"

Post by ecki »

Hallo,
habe folgendes Script aus dem hiesigen "FAQ"-Bereich kopiert. Leider läuft es bei mir nicht. Habe natürlich alle erforderlichen Verzeichnisse angelegt; trotzdem erhalte ich bei Scriptausführung Fehlermeldungen, die etwas von "nicht existierenden Verzeichnissen oder Dateien" sagen.

Ausserdem meldet "bzip" einen Fehler, etwa so:
"I wont send compressed data to standard output."

Hier der Code:

Code: Select all

#!/bin/sh

date=`date -I`

mysqlcheck --all-databases --auto-repair --extended --optimize -uroot -password
>/var/backup/logs/mysqlcheck-$date.log
mysqldump --all-databases -uroot -password --opt | bzip2 -c >
/var/backup/databasebackup-$date.sql.bz2

rm /var/backup/databasebackup-current.sql.bz2
rm /var/backup/logs/mysqlcheck-current.log

ln -s /var/backup/databasebackup-$date.sql.bz2
/var/backup/databasebackup-current.sql.bz2
ln -s /var/backup/logs/mysqlcheck-$date.log
/var/backup/logs/mysqlcheck-current.log
Was ist da falsch?

Bin dankbar für jeden (möglichst einem Newbie verständlichen) Tipp.

Viele Grüße, Ecki
sascha
Posts: 1325
Joined: 2002-04-22 23:08

Re: MySQL-Backup-Script aus der "FAQ"

Post by sascha »

Falsche Zeilenumbrüche...

Code: Select all

#!/bin/sh

date=`date -I`

mysqlcheck --all-databases --auto-repair --extended --optimize -uroot -password >/var/backup/logs/mysqlcheck-$date.log
mysqldump --all-databases -uroot -password --opt | bzip2 -c > /var/backup/databasebackup-$date.sql.bz2

rm /var/backup/databasebackup-current.sql.bz2
rm /var/backup/logs/mysqlcheck-current.log

ln -s /var/backup/databasebackup-$date.sql.bz2 /var/backup/databasebackup-current.sql.bz2
ln -s /var/backup/logs/mysqlcheck-$date.log /var/backup/logs/mysqlcheck-current.log
ecki
Posts: 25
Joined: 2003-07-14 17:47
Location: Erde

Re: MySQL-Backup-Script aus der "FAQ"

Post by ecki »

Hallo Sascha,

habe das Script entsprechend deinem Tipp umgeschrieben (mit "vi" direkt auf dem Server editiert).
Hier nochmal die Pfade (angelegt wie im "FAQ" beschrieben):
Das Script liegt in "/usr/local/bin"
Das Verzeichniss für die Backup-Files: "/var/backup"
Das Verzeichnis für die Logs: "/var/backup/logs"

Nach den Ã?nderungen erhalte ich jetzt folgende Fehlermeldungen, die sich blockweise wiederholen; also folgender Block kommt dann x-mal:

Code: Select all

bzip2: I won't write compressed data to a terminal.
bzip2: For help, type: `bzip2 --help'.
rm: cannot remove `/var/backup/logs/mysqlcheck-current.log': No such file or directory
ln: `/var/backup/logs/mysqlcheck-current-log': File exists
mysqldump: invalid option -- D
Vielleicht weiss jemand da noch was ... :cry:

Danke, und viele Grüße, Ecki
ecki
Posts: 25
Joined: 2003-07-14 17:47
Location: Erde

Re: MySQL-Backup-Script aus der "FAQ"

Post by ecki »

ja, ja :oops:

.. in der letzten Zeile muss es natürlich heißen: "mysqlcheck-current.log".
Hab ich schon korrigiert.

Kriege jetzt aber noch folgenden, Fehlerblock:

Code: Select all

mysqldump: invalid option -- D
bzip2: I won't write compressed data to a terminal.
bzip2: For help, type: `bzip2 --help'.
Vor allem weiss ich nicht, wo der Fehler mit "invalid option --D" bei mysqldump herkommt...
Ich seh´s nirgendwo...

(der etwas ratlose) Ecki
ecki
Posts: 25
Joined: 2003-07-14 17:47
Location: Erde

Re: MySQL-Backup-Script aus der "FAQ"

Post by ecki »

Hallo,

ich poste hier nochmal den aktuellen Code meines MySQL-Backup-Scripts (das aus dem "FAQ")

Code: Select all

mysqlcheck --all-databases --auto-repair --extended --optimize --user=root --password=meinpw
>/var/backup/logs/mysqlcheck-$date.log
mysqldump --all-databases --user=root --password=meinpw --opt | bzip2 -c
>/var/backup/databasebackup-$date.sql.bz2

rm /var/backup/databasebackup-current.sql.bz2
rm /var/backup/logs/mysqlcheck-current.log

ln -s /var/backup/databasebackup-$date.sql.bz2 /var/backup/databasebackup-current.sql.bz2
ln -s /var/backup/logs/mysqlcheck-$date.log /var/backup/logs/mysqlcheck-current.log
Die Datei "mysqlcheck" liegt in /usr/local/bin. Es funktioniert (noch immer) NICHT. Wenn ich jetzt in der Kommandozeile das Script in /usr/local/bin mit "mysqlcheck" (natürlich ohne Anführungszeichen) starte, bekomme ich die Syntaxhilfe zu "mysqlcheck" angezeigt. Sonst passiert nichts.
Bin ziemlich ratlos... :cry:

Bitte helft mir.
Viele Grüße, Ecki
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: MySQL-Backup-Script aus der "FAQ"

Post by gamecrash »

Du hast da schon wieder nen Zeilenumbruch drin, wenn Du den (zwischen "bzip2 -c" und ">/var/" durch ein Leerzeichen ersetzt, dürfte das funzen...
ecki
Posts: 25
Joined: 2003-07-14 17:47
Location: Erde

Re: MySQL-Backup-Script aus der "FAQ"

Post by ecki »

Hallo,

@GameCrash

.. habe den besagten Zeilenumbruch durch ein Leerzeichen ersetzt. Danke.
Die Funktion "mysqlcheck" führt das Skript auch sauber durch und zeigt mir das zeilenweise für die db an. Es gibt auch keine anderen Fehlermeldungen. Ich kann jedoch nirgends sehen, ob das Skript auch den "mysqldump" ausführt. In dem angegeben Verzeichnis gibt es zwar nach Ablauf des Skripts eine jeweils aktuelle ".....sql.bz2"-Datei (Größe: 93.236), aber die Dateigröße ist zu klein für den Inhalt der db. Wenn ich mir die ".....sql.bz2"-Datei lokal auf meinen Win-PC-runterlade zeigt mir mein Packprogramm ("Quick-Zip" Freeware, kann aber auch .tar und .gz) einen leeren Ordner an. Wie kann ich kontrollieren, ob der Dump auch die entsprechenden Daten der db enthält?

Verzweifel... :cry:

Gruß und Dank, Ecki
sascha
Posts: 1325
Joined: 2002-04-22 23:08

Re: MySQL-Backup-Script aus der "FAQ"

Post by sascha »

Einfach mal mit bunzip2 entpacken. :wink:
ecki
Posts: 25
Joined: 2003-07-14 17:47
Location: Erde

Re: MySQL-Backup-Script aus der "FAQ"

Post by ecki »

@Sascha

.. wie mach ich das (bin erst seit ein paar Tagen rootie) ? :oops:
chris76
Posts: 1878
Joined: 2003-06-27 14:37
Location: Germering

Re: MySQL-Backup-Script aus der "FAQ"

Post by chris76 »

Ich habe da ne andere Frage zu dem Script.

Das Passwort das ich in dem Script angebe kann ich das irgendwie ändern?

Ciao Christian