123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #!/bin/bash
- # 假设将sakila数据库名改为new_sakila
- # MyISAM直接更改数据库目录下的文件即可
- source /etc/profile
- declare -i cur_diff=0 min_diff=3600
- time_diff() {
- cur_sec=`date '+%s'`
- echo $cur_sec
- today=$(date "+%Y-%m-%d")
- today_time=`date -d "$today" +%s`
- echo $today_time
- cur_diff=`expr $cur_sec - $today_time`
- }
- time_diff
- echo $cur_diff,${min_diff}
- if [[ $cur_diff -gt ${min_diff} ]]; then
- echo 'can purge'
- else
- echo '请等到凌晨一点后删除'
- exit
- fi
- function slave_running() {
- ra=`mysql -uroot -pXTZ@shop@951688 --host=$1 -e "show slave status\G; " | grep Slave_IO_Running: | awk '{print $2}'`
- rb=`mysql -uroot -pXTZ@shop@951688 --host=$1 -e "show slave status\G; " | grep Slave_SQL_Running: | awk '{print $2}'`
- # shellcheck disable=SC2068
- for a in ${ra[@]}
- do
- if [[ $a != 'Yes' ]];then
- return 0
- fi
- done
- # shellcheck disable=SC2068
- for b in ${rb[@]}
- do
- if [[ $b != 'Yes' ]];then
- return 0
- fi
- done
- return 1
- }
- function slave_behind_match() {
- behinds=`mysql -uroot -pXTZ@shop@951688 --host=$host -e "show slave status\G; " | grep Seconds_Behind_Master: | awk '{print $2}'`
- # shellcheck disable=SC2068
- for ssecs in ${behinds[@]}
- do
- secs=`echo $ssecs | xargs`
- echo Seconds_Behind_Master=$secs
- echo cur_diff=$cur_diff
- diff=`expr $cur_diff - 3600`
- if [[ $secs -gt $diff || $secs -gt 1800 ]];then
- echo behind_master=$secs
- return 0
- fi
- done
- return 1
- }
- #ra=`mysql -uroot -pXTZ@shop@951688 --host=172.26.80.10 -e "show slave status\G; " | grep Slave_IO_Running: | awk '{print $2}'`
- #mysql -uroot -pXTZ@shop@951688 --host=172.26.80.8 -e "show slave status\G; " | grep Seconds_Behind_Master: | awk '{print $2}'
- #master = '172.26.80.10'
- slave_hosts=(${XYZ_SLAVE_HOSTS//:/ })
- #(172.26.80.8 172.26.80.6)
- # shellcheck disable=SC2068
- for host in ${slave_hosts[@]}
- do
- echo $host
- slave_running $host
- running=$?
- if [[ $running == 0 ]];then
- echo "slave ${host} has stoped"
- exit
- fi
- slave_behind_match $host
- behind_match=$?
- if [[ $behind_match == 0 ]];then
- echo "slave ${host} 延迟太大"
- exit
- fi
- echo $host can purge
- done
- today=$(date "+%Y-%m-%d")
- command="PURGE master LOGS BEFORE '${today} 00:00:00';"
- echo $command
- # shellcheck disable=SC2068
- for host in ${slave_hosts[@]}
- do
- echo $host:$command
- mysql -uroot -pXTZ@shop@951688 --host=$host -e "$command"
- done
|