#!/bin/sh
#
# Define these variables in either /etc/periodic.conf or
# /etc/periodic.conf.local to override the default values.
#
# daily_mysql_backup_enable="YES" # do backup
# daily_mysql_maintenance_enable="YES" # perform maintenance
daily_mysql_backup_enable="NO"
daily_mysql_maintenance_enable="NO"
daily_mysql_mysqldump_args="--opt"
daily_mysql_backupdir="/data/mysql_backups"
daily_mysql_savedays="7"
daily_mysql_maintenance_args="-c -a --auto-repair -o -e -A -v"
mysql_user="user"
mysql_password="password"
# 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
# allow '~´ in dir name
eval backupdir=${daily_mysql_backupdir}
rc=0
case "$daily_mysql_backup_enable" in
[Yy][Ee][Ss])
# daily_mysql_backupdir must be writeable by user mysql
if [ ! -d ${backupdir} ] ; then
echo Creating ${backupdir}
mkdir ${backupdir}; chmod 700 ${backupdir}; chown mysql ${backupdir}
fi
echo
echo "MySQL maintenance"
# Protect the data
umask 077
dbnames=`su -l mysql -c "mysql -u ${mysql_user} -p'${mysql_password}' -B -e \"SHOW DATABASES;\" | \
grep -v Database | grep -v information | grep -v schema | grep -v test"`
rc=$?
now=`date "+%Y-%m-%dT%H:%M:%S"`
file=${daily_mysql_backupdir}/myglobals_${now}
su -l mysql -c "mysqldump -A ${daily_mysql_mysqldump_args} -u ${mysql_user} -p'${mysql_password}' | gzip -9 > ${file}.gz"
for db in ${dbnames}; do
echo -n " $db"
file=${backupdir}/mysqldump_${db}_${now}
su -l mysql -c "mysqldump ${daily_mysql_mysqldump_args} -u ${mysql_user} -p'${mysql_password}' ${db} | gzip -9 > ${file}.gz"
[ $? -gt 0 ] && rc=3
done
if [ $rc -gt 0 ]; then
echo
echo "Errors were reported during backup."
fi
# cleaning up old data
find ${backupdir} \( -name 'mysqldump_*' -o -name 'myglobals_*' \) \
-a -mtime +${daily_mysql_savedays} -delete
;;
esac
echo ""
case "$daily_mysql_maintenance_enable" in
[Yy][Ee][Ss])
echo
echo "Performing Maintenance..."
su -l mysql -c "mysqlcheck ${daily_mysql_maintenance_args} -u ${mysql_user} -p'${mysql_password}'"
if [ $? -gt 0 ]
then
echo
echo "Errors were reported during the maintenance."
rc=3
fi
;;
esac
echo ""
exit $rcbrandt_21sATyahooDOTcom |