(Answer) (Category) WebGUI FAQ : (Category) Backup, Care for your WebGUI installation :
MySQL backup and table maintenance script (FreeBSD specific)
#!/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 $rc
brandt_21sATyahooDOTcom
[Append to This Answer]
Previous: (Answer) MySQL Backup procedures?
This document is: http://www.gwy2.org/cgi-bin/fom?file=116
[Search] [Appearance]
This is a Faq-O-Matic 2.719.
This FAQ administered by ... Gerald Young