Guten Abend.
Zur regelmäßigen Sicherung von Datenbanken verwende ich folgendes Script:
Nun hatte der MySQL-Server zum Zeitpunkt des Backups lauter endlos laufende Prozesse, versehentlich durch einen User gestartet. Das Monitoring meckerte darüber, keine DB-Verbindung mehr zu kriegen - Connection-Limit erreicht.
Das Script verschickt wie man sehen kann nach erfolgtem Backup eine Mail mit dem Errorlog an mich. Diese kam nach vier (statt 45) Minuten, und wie erwartet waren fast alle Backups komplett leer - gunzip liefert eine 0-Byte-Datei. Die, die nicht leer sind, scheinen auch komplett zu sein.
Der Vorgang an sich ist mir klar. Aber: Das Errorlog ist leer und das kann ich mir nicht erklären. Ich habe mal geprüft, wie mysqldump sich mit Fehlern verhält:
In diesem Fall landet die Fehlermeldung zwar interessanterweise im Dump statt im Errorlog, aber ich habe wenigstens eine - in den "richtigen" Dumps hab ich aber eben keine. Hat jemand eine Idee, wie das zustandegekommen sein mag bzw. wohin die Fehlermeldungen verschwunden sind?
Viele Grüße
Tim
Zur regelmäßigen Sicherung von Datenbanken verwende ich folgendes Script:
Code:
#!/bin/bash
timestamp=`date "+%a-%H"`
mysql_user="backup"
mysql_pw="passwort"
mysql_params="--add-drop-database --skip-opt --quick --create-options --lock-tables --add-locks --disable-keys --extended-insert --delayed-insert --set-charset --routines"
datadir="/ssd/mysql"
backupdir="/srv/web1"
errorlog="/root/mysql_backup.err"
reportmail="tech@domain.tld"
rm $errorlog
mkdir -p $backupdir
cd $datadir
for database in *
do
if [ -d ${database} ]; then
echo "Dumping $database"
mysqldump -u $mysql_user -p$mysql_pw --databases $database $mysql_params | gzip --fast --stdout > $backupdir/${timestamp}_${database}.sql.gz 2>> $errorlog
fi
done
echo "Reporting errors to staff"
cat $errorlog | mail -s "[sql-web1] Backup log" $reportmail
Nun hatte der MySQL-Server zum Zeitpunkt des Backups lauter endlos laufende Prozesse, versehentlich durch einen User gestartet. Das Monitoring meckerte darüber, keine DB-Verbindung mehr zu kriegen - Connection-Limit erreicht.
Das Script verschickt wie man sehen kann nach erfolgtem Backup eine Mail mit dem Errorlog an mich. Diese kam nach vier (statt 45) Minuten, und wie erwartet waren fast alle Backups komplett leer - gunzip liefert eine 0-Byte-Datei. Die, die nicht leer sind, scheinen auch komplett zu sein.
Der Vorgang an sich ist mir klar. Aber: Das Errorlog ist leer und das kann ich mir nicht erklären. Ich habe mal geprüft, wie mysqldump sich mit Fehlern verhält:
Code:
root@web1:~# mysqldump -pdaskannnichtfunktionieren > sql.dump 2> error.log
In diesem Fall landet die Fehlermeldung zwar interessanterweise im Dump statt im Errorlog, aber ich habe wenigstens eine - in den "richtigen" Dumps hab ich aber eben keine. Hat jemand eine Idee, wie das zustandegekommen sein mag bzw. wohin die Fehlermeldungen verschwunden sind?
Viele Grüße
Tim
Last edited by a moderator: