[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Probleme mit mysqlhotcopy



* Florian Lindner  [02-07-2008 21:40]:

> >Das ist meines Erachtens den Aufwand für ein Backup nicht wert.
> 
> Recht es nicht, wenn die Datenbank gelockt wird?

Ich sichere auch im laufenden Betrieb mit lock-all-tables,
Skript hänge ich mal an.

Gruß Uwe
#!/bin/bash
#
# backup-mysql -  Version: 0.1
#
# erstellt Dump von MySQL, täglich rotierent, Sonntag extra
#
# Ansteuerung über /etc/cron.daily/backup-mysql-cron-daily
# 
# per Befehl: /path/to/skript daily
#
# und /etc/cron.hourly/backup-mysql-cron-hourly
# (falls jede Stunde gesichert werden soll)
#
# per Befehl: /path/to/skript hourly
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
umask 077
##***********************************************************************
dump_report="root@localhost"            # Mailempfänger für Reports
dump_mysqlcnf="/etc/mysql/debian.cnf"   # mysql config
dump_dir="/var/local/mysqldump"         # Backup-Verzeichnis
dump_prog="/usr/bin/mysqldump"          # Programm mysqldump
dump_time="`date +%w`"                  # day of week (0..6); 0 is Sunday
dump_date="`date +%Y%m%d`"              # Datum für jeden Sonntag
dump_hour="`date +%H`"                  # jede Stunde (00..23)
##***********************************************************************

# check and make backup dir
if [ ! -d "${dump_dir}" ]; then
    mkdir -p "${dump_dir}" && ok=1 || ok=0
    if [ $ok -eq 0 ] ; then
	logger "mysql-backup error: cannot creating ${dump_dir}."
	echo -e "$0: cannot creating ${dump_dir}.\n" \
	| mail -s "MySQL-Dump: ERROR" ${dump_report}
	exit 1
    else
	logger "mysql-backup: new directory ${dump_dir} created."
        echo -e "$0: new directory ${dump_dir} created." \
	| mail -s "MySQL-Dump: new directory" ${dump_report}
    fi
fi

chmod 700 "${dump_dir}"

# Eine Datei .mount.lock muss im Zielverzeichnis selbst erstellt werden!
# Falls das Verzeichnis - zufaellig oder aus welchen Gruenden auch immer - 
# nicht gemountet ist, erfolgt keine Sicherung durch mysqldump!
if [ ! -f "${dump_dir}/.mount.lock" ]; then
    logger "mysql-backup error: file ${dump_dir}/.mount.lock not found."
    echo -e "${dump_dir}/.mount.lock not found. Please read $0\n" \
    | mail -s "MySQL-Dump: ERROR" ${dump_report}
    exit 1
fi

# check mysqldump
if [ ! -x "${dump_prog}" ]; then
    logger "mysql-backup error: no ${dump_prog} found."
    echo -e "${dump_prog} not found. Please read $0\n" \
    | mail -s "MySQL-Dump: ERROR" ${dump_report}
    exit 1
fi

# check debian.cnf
if [ ! -f "${dump_mysqlcnf}" ]; then
    logger "mysql-backup error: no ${dump_mysqlcnf} found."
    echo -e "${dump_mysqlcnf} not found. Please read $0\n" \
    | mail -s "MySQL-Dump: ERROR" ${dump_report}
    exit 1
fi

case "$1" in
    daily)
	if [ "${dump_time}" = "0" ]; then
	    # sunday
	    logger "mysql-backup sunday started."
	    ${dump_prog} --defaults-file="${dump_mysqlcnf}" --all-databases \
	    --lock-all-tables | gzip > "${dump_dir}/sunday-${dump_date}-sql.gz"
	else
	    # daily
	    logger "mysql-backup daily started."
	    ${dump_prog} --defaults-file="${dump_mysqlcnf}" --all-databases \
	    --lock-all-tables | gzip > "${dump_dir}/daily-${dump_time}-sql.gz"
	fi
	;;
    hourly)
	logger "mysql-backup hourly started."
	${dump_prog} --defaults-file="${dump_mysqlcnf}" --all-databases \
	--lock-all-tables | gzip > "${dump_dir}/hour-${dump_hour}-sql.gz"
	;;
    *)
	logger "mysql-backup error: unknown args."
	echo -e "unknown args found. Please read $0\n" \
	| mail -s "MySQL-Dump: ERROR" ${dump_report}
	exit 1
	;;
esac

logger "mysql-backup stopped."

exit 0

### eof

Attachment: signature.asc
Description: Digital signature


Reply to: