1. 程式人生 > >記升級mysql後的一次故障

記升級mysql後的一次故障

kill 備份 環境 tps 完全 兩個 web-inf 項目 分享

一、問題背景

  接上級要求,某生產數據庫需要實施備份;剛好漏洞掃描報告出來,mysql 版本需要升級到5.7.20,於是就未雨綢繆,先寫腳本。腳本在mysql舊版本下完全可用(未升級前,mysql 為5.7.18)。升級完後,本著技術人員的一種嚴謹態度,絕對要sh -x 看看腳本在新環境下有沒有出現異常啦~~~

二、現象(主要有兩個)   1、mysqldump只能備份表不能備份庫(Z庫和S庫),剛好測試時用的是S庫!(這個強調下面是有用的,觀眾慢慢欣賞)。開始非常納悶,兩個庫才不到100M,mysqldump良久不出結果,總不能僅僅1~2天,生產庫上數據量陡增的    2、與此同時,測試人員反饋,項目頁面一直轉圈登不上(前一天剛升級完數據庫,測試過,頁面打開沒問題)   技術分享圖片

三、排查及解決

  1、上頭說,可能是因為升級後 tomcat 沒有重啟,導致應用出問題(ps:數據庫跟應用分別在兩臺不同的機器上),於是就重啟 tomcat ~~順帶觀察實時日誌:tail -f Catalina.out

(1)圖一

技術分享圖片

(2)圖二

技術分享圖片

  綜上,可以發現,挺多preparing的。。。然當時其實看不出有什麽異樣(畢竟太年輕,囧)

  2、之後,開發人員拿到數據庫賬號密碼,說S庫的某個表,也就是上圖的日誌表:TB_ICT_SYS_LOG被鎖了!這就是為什麽mysqldump測試備份S庫的時候一直備份不了,如果測試備份Z庫的話,結果估計是可以出來的,因為Z庫上的表並沒有被鎖

登陸數據庫查線程運行情況,終於有眉目了!!!

(1)圖一 (mysqldump不了S庫的線程)技術分享圖片

(2)圖二 (頁面登陸不上卡住報錯的線程)

技術分享圖片

  3、解決:據查到的進程號, kill 掉數據庫鎖進程

之後,數據庫恢復正常,頁面打開沒問題技術分享圖片

四、結論

  1、瀏覽器登陸項目頁面,無論登陸是否成功,都有一個第三點 1(2)圖二的插入S庫日誌表的操作

  2、mysqldump備份數據庫會有鎖表的問題,可能會和插入操作有沖突(開發人員:業務上並沒有其他地方引起鎖表操作),所以這次問題的產生好可能是因為在調試腳本的時候引起的。為了不影響業務,建議晚上備份(現在調度已改成淩晨 0 點備份

  3、確定Tomcat數據庫連接池配置是否準確無誤(.../WEB-INF/classes/jdbc.properties),雖然跟本次排錯過程無關

技術分享圖片

這個日誌是tomcat最早時候的信息(暫時不知道這裏是不是暗藏問題發生的玄機)

記升級mysql後的一次故障