daily mysqldump script Problem

smarti

Active Member
Hallo alle zusammen,

ich habe da ein Script bekommen, das täglich eine Sicherung der mysql Datenbank macht. Nach dem fünften Tag, wird dann wieder von vorne angefangen.........soweit der Sinn.

Da ich selber Null Plan von Scripten habe, wollte ich mal dezent anfragen, ob jemand von euch auf Anhieb erkennt, woran es liegen könnte, das immer nur dumps mit 0 Bytes erstellt werden.

Ich habe die Pfade als einziges abgeändert, habe aber kein original des Scriptes mehr................backup vergessen :eek: :(

Natürlich versuche ich auch weiter selbst den Fehler zu finden :rolleyes:

Hier nun das script:

Code:
#!/bin/sh
#
#

# If there is a global system configuration file, suck it in.
#
if [ -r /etc/defaults/periodic.conf ]
then
    . /etc/defaults/periodic.conf
    source_periodic_confs
fi

	if [ ! -d /hdd2/backup/dbdumps ]
	then
	    echo '/hdd2/backup/dbdumps ' \
		"doesn't exist"
	    rc=2
	else
	    echo ""
	    echo "dumping mysql databases"
	    /usr/local/bin/mysqldump -A > /hdd2/backup/dbdumps/mysql.tmp
	    echo "Rotating mysql logs:"

	    cd /hdd2/backup/dbdumps
	    rc=0

#	    [ -f mysql.4.gz ] && { rm mysql.4.gz || rc=3; }
#	    [ -f mysql.4 ] && { rm mysql.4 || rc=3; }
#	    [ -f mysql.4.gz ] && { mv -f mysql.4.gz mysql.5.gz || rc=3; }
#	    [ -f mysql.4 ] &&    { mv -f mysql.4 mysql.5 || rc=3; }
	    [ -f mysql.3.gz ] && { mv -f mysql.3.gz mysql.4.gz || rc=3; }
	    [ -f mysql.3 ] &&    { mv -f mysql.3 mysql.4 || rc=3; }
	    [ -f mysql.2.gz ] && { mv -f mysql.2.gz mysql.3.gz || rc=3; }
	    [ -f mysql.2 ] &&    { mv -f mysql.2 mysql.3 || rc=3; }
	    [ -f mysql.1.gz ] && { mv -f mysql.1.gz mysql.2.gz || rc=3; }
	    [ -f mysql.1 ] &&    { mv -f mysql.1 mysql.2 || rc=3; }
	    [ -f mysql.0.gz ] && { mv -f mysql.0.gz mysql.1.gz || rc=3; }
	    [ -f mysql.0 ] &&    { mv -f mysql.0 mysql.1 || rc=3; }
	    cp -pf mysql mysql.0 || rc=3
	    gzip mysql.0
	    [ -f mysql.tmp ] &&  { mv -f mysql.tmp mysql || rc=3; }
	    #sa -s >/dev/null || rc=3
	fi

exit $rc

l.g.

smarti
 
Original geschrieben von smarti
Hallo alle zusammen,

ich habe da ein Script bekommen, das täglich eine Sicherung der mysql Datenbank macht. Nach dem fünften Tag, wird dann wieder von vorne angefangen.........soweit der Sinn.

Da ich selber Null Plan von Scripten habe, wollte ich mal dezent anfragen, ob jemand von euch auf Anhieb erkennt, woran es liegen könnte, das immer nur dumps mit 0 Bytes erstellt werden.

Ich habe die Pfade als einziges abgeändert, habe aber kein original des Scriptes mehr................backup vergessen :eek: :(

Natürlich versuche ich auch weiter selbst den Fehler zu finden :rolleyes:

Hier nun das script:

Code:
#!/bin/sh
#
#

# If there is a global system configuration file, suck it in.
#
if [ -r /etc/defaults/periodic.conf ]
then
    . /etc/defaults/periodic.conf
    source_periodic_confs
fi

	if [ ! -d /hdd2/backup/dbdumps ]
	then
	    echo '/hdd2/backup/dbdumps ' \
		"doesn't exist"
	    rc=2
	else
	    echo ""
	    echo "dumping mysql databases"
	    /usr/local/bin/mysqldump -A > /hdd2/backup/dbdumps/mysql.tmp
	    echo "Rotating mysql logs:"

	    cd /hdd2/backup/dbdumps
	    rc=0

#	    [ -f mysql.4.gz ] && { rm mysql.4.gz || rc=3; }
#	    [ -f mysql.4 ] && { rm mysql.4 || rc=3; }
#	    [ -f mysql.4.gz ] && { mv -f mysql.4.gz mysql.5.gz || rc=3; }
#	    [ -f mysql.4 ] &&    { mv -f mysql.4 mysql.5 || rc=3; }
	    [ -f mysql.3.gz ] && { mv -f mysql.3.gz mysql.4.gz || rc=3; }
	    [ -f mysql.3 ] &&    { mv -f mysql.3 mysql.4 || rc=3; }
	    [ -f mysql.2.gz ] && { mv -f mysql.2.gz mysql.3.gz || rc=3; }
	    [ -f mysql.2 ] &&    { mv -f mysql.2 mysql.3 || rc=3; }
	    [ -f mysql.1.gz ] && { mv -f mysql.1.gz mysql.2.gz || rc=3; }
	    [ -f mysql.1 ] &&    { mv -f mysql.1 mysql.2 || rc=3; }
	    [ -f mysql.0.gz ] && { mv -f mysql.0.gz mysql.1.gz || rc=3; }
	    [ -f mysql.0 ] &&    { mv -f mysql.0 mysql.1 || rc=3; }
	    cp -pf mysql mysql.0 || rc=3
	    gzip mysql.0
	    [ -f mysql.tmp ] &&  { mv -f mysql.tmp mysql || rc=3; }
	    #sa -s >/dev/null || rc=3
	fi

exit $rc

l.g.

smarti
Komisch, bei mir funktioniert es einwandfrei...
Code:
root@www [/usr/dbdumps]# ls -lh
total 10480
-rw-r--r--  1 root  wheel       5M Apr 10 12:31 mysql
-rw-r--r--  1 root  wheel       1M Apr 10 12:31 mysql.0.gz
-rw-r--r--  1 root  wheel       1M Apr 10 12:31 mysql.1.gz
-rw-r--r--  1 root  wheel       1M Apr 10 12:31 mysql.2.gz
-rw-r--r--  1 root  wheel       1M Apr 10 12:29 mysql.3.gz
Gruß
 
Hallo saintjoe,

feiner Zug von dir, das du so schnell geantwortet hast.

Sei doch bitte so nett, und schreibe in Stichpunkten auf, was du in welcher Reihenfolge gemacht hast.......am besten auch mal deine Pfadangaben zum vergleichen.

Ich sehe wirklich den Wald vor lauter Bäumen nicht :(

l.g.

smarti
 
Also, ganz langsam :)
Ich hab das Script, genau wie du es hier geposted hast, genommen, in ~/test.sh abgespeichert.
Code:
#!/bin/sh
#
#

# If there is a global system configuration file, suck it in.
#
if [ -r /etc/defaults/periodic.conf ]
then
    . /etc/defaults/periodic.conf
    source_periodic_confs
fi

if [ ! -d /usr/dbdumps ]
then
    echo '/usr/dbdumps ' \
"doesn't exist"
    rc=2
else
    echo ""
    echo "dumping mysql databases"
    /usr/local/bin/mysqldump -A > /usr/dbdumps/mysql.tmp
    echo "Rotating mysql logs:"

    cd /usr/dbdumps
    rc=0

#    [ -f mysql.4.gz ] && { rm mysql.4.gz || rc=3; }
#    [ -f mysql.4 ] && { rm mysql.4 || rc=3; }
#    [ -f mysql.4.gz ] && { mv -f mysql.4.gz mysql.5.gz || rc=3; }
#    [ -f mysql.4 ] &&    { mv -f mysql.4 mysql.5 || rc=3; }
    [ -f mysql.3.gz ] && { mv -f mysql.3.gz mysql.4.gz || rc=3; }
    [ -f mysql.3 ] &&    { mv -f mysql.3 mysql.4 || rc=3; }
    [ -f mysql.2.gz ] && { mv -f mysql.2.gz mysql.3.gz || rc=3; }
    [ -f mysql.2 ] &&    { mv -f mysql.2 mysql.3 || rc=3; }
    [ -f mysql.1.gz ] && { mv -f mysql.1.gz mysql.2.gz || rc=3; }
    [ -f mysql.1 ] &&    { mv -f mysql.1 mysql.2 || rc=3; }
    [ -f mysql.0.gz ] && { mv -f mysql.0.gz mysql.1.gz || rc=3; }
    [ -f mysql.0 ] &&    { mv -f mysql.0 mysql.1 || rc=3; }
    cp -pf mysql mysql.0 || rc=3
    gzip mysql.0
    [ -f mysql.tmp ] &&  { mv -f mysql.tmp mysql || rc=3; }
    #sa -s >/dev/null || rc=3
fi

exit $rc
Dann hab ich das Script mit sh test.sh ausgeführt, beim ersten Run kam folgender Fehler:
Code:
root@www [~]# sh test.sh

dumping mysql databases
Rotating mysql logs:
cp: mysql: No such file or directory
mysql.0: No such file or directory
Beim Zweiten ausführen dann lief es allerdings einwandfrei - ohne dass ich irgendwas angepasst habe.

Gruß
 
Hallo nochmal,

hmmm........das ist ja seltsam.....jetzt bekomme ich die Meldung:

dumping mysql databases
/usr/local/bin/mysqldump: Got error: 1045: Access denied for user: 'root@localhost' (Using password: NO) when trying to connect
Rotating mysql logs:


Argh.....schlag vor den Schädel :eek: :eek: :eek:

Also für diejenigen die ein ähnliches Problem bekommen, das vergebene mySQL Passwort, sofern einers vergeben wurde, muss in das Script integriert werden, so es denn gestartet werden soll.

Also folgende Änderung hat geholfen:

Code:
/usr/local/bin/mysqldump --password=DeinPasswort -A > /hdd2/backup/dbdump

l.g.

smarti
 
Zurück
Oben