123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/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:`
- rb=`mysql -uroot -pXTZ@shop@951688 --host=$1 -e "show slave status\G; " | grep Slave_SQL_Running:`
- a=${ra#*:}
- b=${rb#*:}
- a=`echo $a | xargs`
- b=`echo $b | xargs`
- if [[ $a == 'Yes' && $b == 'Yes' ]];then
- return 1
- else
- echo a,b
- return 0
- fi
- }
- function slave_behind_match() {
- r=`mysql -uroot -pXTZ@shop@951688 --host=$host -e "show slave status\G; " | grep Seconds_Behind_Master:`
- ssecs=${r#*:}
- secs=`echo $ssecs | xargs`
- echo Seconds_Behind_Master = $secs
- diff=`expr $cur_diff - 3600`
- if [[ $secs < $diff ]];then
- return 1
- else
- return 0
- fi
- }
- #master = '172.26.80.10'
- slave_hosts=(${XYZ_SLAVE_HOSTS//:/ })
- #(172.26.80.8 172.26.80.6)
- allhosts=(${XYZ_ALL_HOSTS//:/ })
- #(172.26.80.10 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';"
- # shellcheck disable=SC2068
- for host in ${allhosts[@]}
- do
- mysql -uroot -pXTZ@shop@951688 --host=$host -e "$command"
- done
|