[root@backup ~]# cat /etc/cron.daily/backup_db.sh
#! /bin/bash -
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
MYSQL_SERVERS="srv01.db.com srv02.db.com"
DATE=`date +%Y.%m.%d-%R`
BACKUP_PATH="/mnt/backup/db"
BACKUP_EXT=".sql.bz2"
SAVE_DAYS="14"
DB_LOGIN="backup"
DB_PASS="тут сложный пароль"
for srv in ${MYSQL_SERVERS}
do
if [ ! -d ${BACKUP_PATH}"/"${srv} ]; then
echo "Directory for ${srv} doesn't exists, creating..."
mkdir ${BACKUP_PATH}"/"${srv}
fi
for db in `mysql -h ${srv} -u${DB_LOGIN} -p${DB_PASS} -e 'show databases' | tail -n +2 | egrep -v "lost\+found|\.snap|information_schema|performance_schema"`
do
echo "Dumping database ${db} on ${srv}"
mysqldump -h ${srv} -u${DB_LOGIN} -p${DB_PASS} --add-drop-database --add-drop-table --add-locks --create-options -e -F --flush-privileges -l -q -B ${db} | \
bzip2 -9c > "${BACKUP_PATH}/${srv}/${db}_${DATE}${BACKUP_EXT}"
echo
done
done
find ${BACKUP_PATH} -mindepth 1 -mtime +${SAVE_DAYS} -delete -exec echo "Deleting old file: " {} \;
скрипт крутится уже с пару лет, бекапит все базы на всех перечисленных серверах
ну как настроить привилегии расписывать надо?