Skip to content

Instantly share code, notes, and snippets.

@noah
Created February 4, 2010 23:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noah/295258 to your computer and use it in GitHub Desktop.
Save noah/295258 to your computer and use it in GitHub Desktop.
implements purge algorithm for one slave; see: http://dev.mysql.com/doc/refman/5.0/en/show-binary-logs.html
#!/bin/sh
# implements purge algorithm for one slave
# see: http://dev.mysql.com/doc/refman/5.0/en/show-binary-logs.html
master=host1
slave=host2
username=user
password=pass
date
slave_reading=$(mysql -u$username -p$password -h$slave -e'SHOW SLAVE STATUS\G'|grep ' Master_Log_File'|awk -F: '{print $2}')
all_master_logs=$(mysql -u$username -p$password -h$master -e'SHOW BINARY LOGS;')
master_n=$(echo $slave_reading | awk -F. '{print $2}')
echo "slave is reading $slave_reading"
upto=
for log in $all_master_logs; do
l=$(echo $log | grep mysql-bin)
if [ $l ]; then
n=$(echo $log | awk -F. '{print $2}')
if [ $n -lt $master_n ]; then
echo "$log will be purged"
upto=$log
#else
# echo "$log >= $slave_reading, let's keep it . . ."
fi
fi
done
if [ $upto ]; then
cmd="PURGE BINARY LOGS TO '$upto'"
echo "$cmd"
mysql -u$username -p$password -h$master -e "$cmd"
else
echo "Nothing to purge"
fi
date
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment