■ 廣東 張秀云
今天收到一臺DB機器連接不通的告警,登錄服務器發現DB連通性是正常的。懷疑可能是網絡抖動導致的誤告,查看網絡監控進行確認,并沒有發現有丟包或者網絡延遲的陡增的情況,初步排除網絡抖動問題。
查看MySQL錯誤日志,發現有mysqld got signal 8的報錯,MySQL由于某種原因導致MySQL出現crash。報錯如圖1所示。
懷疑是MySQL的bug引起,在官網找到了對應的bug,鏈接如下:
https://bugs.mysql.com/bug.php?id=65663
原因是某個SQL訪問分區表的時候,訪問分區越界的時候有bug,導致實例crash。如圖2所示。
只有version為5.5.23,5.5.24,5.5.25 有這個 bug,在5.5.26修復了這個bug,而這個DB的版本恰好是5.5.24。通過抓包發現確實有一個使用了分區表的SQL,一出現MySQL就crash,分析發現是因為使用的時間分區字段超過了最大值導致。

圖1 mysqld got signal 8的報錯信息

圖2 訪問分區越界時有bug導致實例crash
可采取如下解決辦法:1.修改 SQL;2.添加 max分區;3.升級MySQL版本。