1. 程式人生 > >SHELL指令碼跳過mysql同步錯誤

SHELL指令碼跳過mysql同步錯誤

mysql主從複製,經常會遇到錯誤而導致slave端複製中斷,這個時候一般就需要人工干預,跳過錯誤才能繼續 跳過錯誤有兩種方式: 1.跳過指定數量的事務: mysql>slave stop; mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1        #跳過一個事務 mysql>slave start

2.修改mysql的配置檔案,通過slave_skip_errors引數來跳所有錯誤或指定型別的錯誤 vi /etc/my.cnf [mysqld] #slave-skip-errors=1062,1053,1146 #跳過指定error no型別的錯誤 #slave-skip-errors=all #跳過所有錯誤 ---------------------  由於手動比較麻煩,所以寫了一個shell指令碼, 記錄一下

#!/bin/bash  
USERNAME="dba"
PASSWORD="9f46d07425"
create_db_sql="show slave status\G"
time = `mysql -u${USERNAME} -p${PASSWORD} -e "show slave status\G" | grep "Seconds_Behind_Master: " | awk -F ': ' '{print $2}')`
num = `mysql  -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}" | grep -w error | wc -l`
while [[ "0" != $time ]]; do
if [[ $num -gt 0 ]]; then
   mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e "slave stop;"
   mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e "SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;"
   mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} -e "slave start;"
fi
done