1. 程式人生 > >Mysql佇列資料庫cpu wait IO高的問題排查經歷

Mysql佇列資料庫cpu wait IO高的問題排查經歷

        這個mysql資料庫是佇列資料庫,5.5.21版本,用於頻繁的增刪查操作。平時使用正常,但是在16日凌晨資料庫伺服器wait IO突然增高,由原來的7%飆到了34%。導致很多連線一直都處於等待狀態。

1、排查了已知的配置引數,沒有什麼變動,配置也正常,沒有離譜的。

2、又檢查了索引,也是之前的操作,沒有多大的變動。

3、後來又查詢了慢語句,發現都是平時執行的那些普通的sql,沒有特殊的。

4、網路有問題?異地操作和本地操作也沒有多大變化,ping的響應時間也0.1ms左右。

5、分析之後又瞭解到普遍寫很慢,平均等待大約得3-6s,哪怕是簡單的根據主鍵刪除操作;select讀取操作倒是很快。

6、伺服器問題?檢查硬碟空間,才使用8%,raid也正常。SA人員說硬碟和cpu等正常,沒與問題。

後來因為業務不熟,認為資料量又增大了,是引數的配置問題,就一直尋找mysql的關鍵引數,調整引數。

重啟資料庫過程中不能正常stop,即使啟動了也報正常啟動。認為不影響使用,是指令碼的問題,就把這個問題跳過了。

查詢了一天半夜都沒有找到原因,個別的已經積壓了將近千萬的資料庫了。。。

第二天再弄。

又查詢引數,查詢機器,都麼有查詢到任何問題。

都沒有問題,暈死了。

換吧,換其他機器。半夜的時候打算換庫,只聽到有8個程式操作庫,wait io還是在20%左右,然後把這8個程式操作的資料庫該為新的庫(資料、引數等都一樣),wait io只有5%!!!

回想起原來資料庫重啟都有問題,在加上現在的情況,重灌資料庫。

 凌晨4點,解決了。。。

總結:

1、  細小的問題不要忽略,不要放過任何蛛絲馬跡。

2、  資料庫和伺服器的知識還是很欠缺,導致問題查詢不能完全排除,不夠自信,有返工現象。浪費時間。

3、  資料庫平時應該就做好資料備份,服務備用,找不到問題優先保證資料正常,不至於臨時抓瞎。平時多做準備工作。平時多流汗,戰時少流血。