1. 程式人生 > 其它 >檢查MySQL主從複製執行狀態

檢查MySQL主從複製執行狀態

指令碼思路:

1、使用MySQL客戶端命令"mysql"直接在命令列中執行MySQL指令"show slave status\G;"來檢視MySQL主從複製狀態資訊。
2、通過狀態資訊中的一些重要欄位來判斷當前主機的主從複製狀態是否健康。
3、若不健康則一般是由於Slave上SQL執行過程中出現異常,則將異常的SQL資訊列印到螢幕上。

指令碼內容:

MYSQL_USER="root"
MYSQL_PASSWORD="xxx"
MYSQL_HOST="localhost"
MYSQL_PORT=3306

# 
# 檢查MySQL主從健康情況
#

show_slave_status=`mysql -h"$MYSQL_HOST" -P"$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -A -e 'show slave status\G;' 2>/dev/null`
slave_sql_running_state=`echo "$show_slave_status" |grep Slave_SQL_Running_State |awk -F ': ' '{print $2}'`  # Slave上SQL執行狀態
ms_status=`echo "$show_slave_status" |grep Running: |awk -F ': ' '{if($2=="Yes"){sum += 1}}; END{print sum}'`  # IO、SQL執行緒執行狀態:2表示健康,!2表示不健康

# 如果主從複製狀態是不健康的則在螢幕上列印Slave主機SQL執行狀態
if [ $ms_status -eq 2 ];then
  echo "ms running status: 1"
else
  echo "ms running status: 0"
  echo "error: $slave_sql_running_state"
fi

指令碼解析:

使用grep命令基於關鍵字過濾獲取關鍵行
使用awk命令進行判斷和篩選欄位
使用Shell指令碼中的if語句進行判斷,並列印相關資訊到螢幕上

樂在分享!~~