檢查MySQL主從復制運行狀態


腳本思路:

1、使用MySQL客戶端命令"mysql"直接在命令行中運行MySQL指令"show slave status\G;"來查看MySQL主從復制狀態信息。
2、通過狀態信息中的一些重要字段來判斷當前主機的主從復制狀態是否健康。
3、若不健康則一般是由於Slave上SQL執行過程中出現異常,則將異常的SQL信息打印到屏幕上。

腳本內容:

#!/bin/bash
# @author:rby
# @title:檢查MySQL主從健康情況

#
# 基本配置
#
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語句進行判斷,並打印相關信息到屏幕上

腳本好處:

在本腳本中,使用變量"$show_slave_status"來存儲"mysql -uxxx -pxxx -e'show slave status\G;'"命令執行的結果,以供后續的腳本指令語句對結果進行處理,其實際命令只運行了一次,就可以多處引用,同時也提高了腳本工作的效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM