Mysql

如何獲取 MySQL 實例上次宕機的時間

  • May 17, 2016

是否可以確定 MySQL 實例最後一次宕機的時間?是否有一個日誌文件或任何東西可以記錄 MySQL 中的伺服器狀態?我在網上瀏覽了無數文章,但沒有找到任何可以提供任何幫助的東西。幫助!

這是我想出的獲取資訊的程式碼:

#!/bin/bash

######################
##BY: kixes         ##
##Created: 4-1-2016 ##
##Version: 1.01     ##
######################

#####################
######Variables######
#############################################################

#LogFile is where the ErrorLog dumps its filtered error log data
LogFile=/var/lib/mysql/admin/logs/shutdowns.log
#Error log holds the raw information from the MySQL Error log filtered by grep.
ErrorLog='grep 'Starting' /var/lib/mysql'`hostname`'.err'
#OutputFile holds a comma delimited set of values of hostname,shutdown date, shutdown time, startup time
OutputFile=/var/lib/mysql/admin/logs/shutdowns_`date +"%Y-%m-%d"`.csv

#############################################################
######Variables######
#####################

##################
######Header######
#############################################################

#Write (Not append) to $LogFile
$ErrorLog > $LogFile
#Writes (Not append) the table headers
echo "hostname,Shutdown_date,Shutdown_time,Startup_time" > $OutputFile

#############################################################
######Header######
##################

################
######Body######
#############################################################

#Do not change variables!
q=0
intholder=-1

#Go line by line in $LogFile. '$i' is the current line (string).
while read i; do
       ((q++))

       #If the line ($i) is a line containing shut-down information then gathers in shut-down information
       if [[ $i =~ "Starting shutdown..." ]]
       then
               shutdowndate=`echo "$i" | grep -Eo '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}'`
               shutdowntime=`echo "$i" | grep -Eo '[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}'`
               ((intholder=$q + 1))
       fi

       #If the line ($i) is a line containing start-up information then gather that information
       if [[ "$intholder" == "$q" ]]
       then
               startuptime=`echo "$i" | grep -Eo '[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}'`
               echo "MySQL instance:`hostname` went down on $shutdowndate at $shutdowntime and started at $startuptime"

               echo "`hostname`,$shutdowndate,$shutdowntime,$startuptime" >> $OutputFile
       fi


#End loop
done <$LogFile

#############################################################
######Body######
################

該文件mysql.log顯示啟動和關閉。

SHOW VARIABLE LIKE 'log_error';說文件在哪裡。但是,還要檢查SHOW VARIABLE LIKE 'log_output';. (不知道這個日誌是不是被那個控制的。)

SHOW STATUS LIKE 'Uptime';表示它已經上升了多少秒。

引用自:https://dba.stackexchange.com/questions/133824