Rotado de los Binary Logs mediante un Script y un cron

Con el siguiente script podremos realizar un rotado de los binary logs y una copia del rotado a otro directorio para tenerlo como backup por ejemplo.

#
# This script backup binary log files
#
backup_user=”root”
backup_password=”xxxxxxxx”
backup_port=”3306″
backup_host=”localhost”
log_file=”/home/scripts/binlogbackup.log”
binlog_dir=”/var/mysql/binlogs/” # Path to binlog
backup_dir=”/var/backupmysql/binlogs/” # Path to Backup directory

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH

Log()
{
echo “`date` : $*” >> $log_file
}

mysql_options()
{
common_opts=”–user=$backup_user –password=$backup_password”
if [ “$backup_host” != “localhost” ]; then
common_opts=”$common_opts –host=$backup_host –port=$backup_port”
fi
}

mysql_command()
{
mysql $common_opts –batch –skip-column-names  -e “$2”
}

mysql_options

Log “[INIT] Starting MySQL binlog backup”

Log “Flushing MySQL binary logs (FLUSH LOGS)”

mysql_command mysql “flush logs”

master_binlog=`mysql_command mysql “show master status” 2>/dev/null | cut -f1`

Log “Current binary log is: $master_binlog”

copy_status=0

for b in `mysql_command mysql “show master logs” | cut -f1`
do
if [ -z $first_log ]; then
first_log=$b
fi
if [ $b != $master_binlog ]; then
Log “Copying binary log ${b} to ${backup_dir}”
cp -pRf  /$binlog_dir/$b $backup_dir >& /dev/null
mysql_command mysql “purge binary logs to ‘$b’;”
if [ $? -ne 0 ]; then
copy_status=1
break
fi
else
break
fi
done

if [ $copy_status -eq 1 ]; then
Log “[ERR] Failed to copy binary logs cleanly…aborting”
exit 1
fi

 

Si a esto mismo le añadimos un cron que ejecute el script cada x minutos  tendremos un rotado de los binary logs  por tiempo.

Dejar una contestacion