一、問題背景
接上級要求,某生產資料庫需要實施備份;剛好漏洞掃瞄報告出來,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最早時候的資訊(暫時不知道這裡是不是暗藏問題發生的玄機)
記一次manila故障
排查過程 1.檢視manila的日誌,api.log scheduler.log share.log,排程日誌最具參考性,但是顯示建立成功 實際狀態為creating 排到share時出現大量報錯 get all share usage failed 2.檢查後端儲存,節點均正常 排查過程 1.關閉...
記一次MySQL生產環境故障處理
在2020年5月15日 凌晨三點,某台生產環境的mysql程序異常,無法連線到資料庫。早上上班開始排查問題並解決。伺服器是windows環境,設定每2天凌晨自動重啟主機,mysql以及其他應用都設定了自動啟動。注 以下所有步驟需要先關閉使用到資料庫的應用程式。檢視系統的計畫任務,發現剛好15日凌晨3...
記週日一次故障意外
記週日一次故障意外 找了waf工程師問,並且我這裡也在同步測試,tcping 網域名稱沒返回,不得不 ctrl c 中斷退出 說解析異常,222這個位址不通,然後給我們明確回覆說 47.91.170.222不是waf的入口 ip,切別的ip是沒用的 因為解析異常之後,我是有叫他切到別的能用的waf ...