mysql 伺服器巡檢指令碼

xz43發表於2021-06-02

crontab -l

# 每天早上1點 伺服器巡檢0 1 * * * /bin/bash /data/backup/scripts/check_server.sh  > /data/backup/log/my3306/check_server.log 2>&1

 

 

/data/backup/scripts/check_server.sh


#! /bin/bash

### AUTHOR: abc

### EMAIL: abc@sina.com

### DATE: 2018/03/22

### REV: 3.0

# 資料庫伺服器 效能巡檢報告

source /etc/profile

source /root/.bash_profile



#################################

#                               #

#          全域性配置             #

#                               #

#################################


# 巡檢日期

CheckDate=`date +"%Y-%m-%d"`


# 巡檢主機

CheckServer=`hostname`


# 巡檢IP

CheckIP=`ifconfig eth0 |grep "inet " |awk '{print $2}'`


# 巡檢報告

CheckReport=/data/backup/log/my3306/check_server.log


# 例項名

InstanceName=my3306


# 資料目錄

DataDir=/data/mysql/my3306


# 備份同步路徑

TargetRsyncDir=/data/backup/mysql/my3306


# 收件人

addr="abc@sina.com ace@sina.com bbc@ sina.com bbs@ sina.com"


# 郵件標題

subj="${CheckServer}(${CheckIP})巡檢報告"


# 郵件正文

body=$CheckReport


# 正文標題

title="${CheckServer}(${CheckIP})巡檢報告"


#################################

#                               #

#          巡檢內容             #

#                               #

#################################


# 格式化標題函式

function f_format(){

echo      "##############################################################################"

echo     "#                                                                             "

echo     "#                          "$1"                                               "

echo     "#                                                                             "

echo -e  "##############################################################################\n"

}


# 表空間使用率檢查函式

function f_check_tbs(){

echo "SELECT a.schema_name db_name,

       CONCAT(IFNULL(ROUND((SUM(b.data_length) + SUM(b.index_length)) / 1024 / 1024,

                           0),

                     0),

              'M') total,

       CONCAT(IFNULL(ROUND(((SUM(b.data_length) + SUM(b.index_length)) -

                           SUM(b.data_free)) / 1024 / 1024,

                           0),

                     0),

              'M') used,

       CONCAT(IFNULL(ROUND(SUM(data_free) / 1024 / 1024, 0), 0), 'M') free,

       CONCAT(IFNULL(ROUND((((SUM(b.data_length) + SUM(b.index_length)) -

                           SUM(b.data_free)) /

                           ((SUM(b.data_length) + SUM(b.index_length))) * 100),

                           0),

                     0),

              '%') ratio,

       COUNT(table_name) TABLES

  FROM information_schema.schemata a

  LEFT JOIN information_schema. TABLES b

    ON a.schema_name = b.table_schema

 WHERE a.schema_name NOT IN

       ('information_schema', 'mysql', 'performance_schema')

 GROUP BY a.schema_name

 ORDER BY 1;"

}


f_format $title


f_format "01、CPU空閒率、系統負載"

top - b -n1 -d1|head -n5


f_format "02、可用記憶體"

free -g


f_format "03、磁碟空間使用率"

df -Th


f_format "04、磁碟IO效能"

iostat -d -m 2 5


f_format "05、資料庫例項狀態"

ps -ef | grep mysql|grep -v "grep"


f_format "06、資料庫監聽狀態"

netstat -atun| grep 3306


f_format "07、資料庫大小"

echo     "資料目錄: $DataDir"                     

du -ch --max-depth=1 $DataDir |grep total|cut -f 1 


f_format "08、資料庫表空間使用率"           

f_check_tbs|mysql --login-path=my3306   


f_format "09、錯誤日誌"            

grep `date +"%Y-%m-%d"`  $DataDir/error.log   


f_format "10、備份狀態"

echo     "備份路徑: $TargetRsyncDir"          

ls -hl $TargetRsyncDir |grep `date +"%Y%m%d"`  


f_format "THE END ! "


#applied_email

mail -s $subj $addr < $body



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-2775160/,如需轉載,請註明出處,否則將追究法律責任。

相關文章