■ 廣東 張秀云
今天收到一臺(tái)DB機(jī)器連接不通的告警,登錄服務(wù)器發(fā)現(xiàn)DB連通性是正常的。懷疑可能是網(wǎng)絡(luò)抖動(dòng)導(dǎo)致的誤告,查看網(wǎng)絡(luò)監(jiān)控進(jìn)行確認(rèn),并沒(méi)有發(fā)現(xiàn)有丟包或者網(wǎng)絡(luò)延遲的陡增的情況,初步排除網(wǎng)絡(luò)抖動(dòng)問(wèn)題。
查看MySQL錯(cuò)誤日志,發(fā)現(xiàn)有mysqld got signal 8的報(bào)錯(cuò),MySQL由于某種原因?qū)е翸ySQL出現(xiàn)crash。報(bào)錯(cuò)如圖1所示。
懷疑是MySQL的bug引起,在官網(wǎng)找到了對(duì)應(yīng)的bug,鏈接如下:
https://bugs.mysql.com/bug.php?id=65663
原因是某個(gè)SQL訪問(wèn)分區(qū)表的時(shí)候,訪問(wèn)分區(qū)越界的時(shí)候有bug,導(dǎo)致實(shí)例crash。如圖2所示。
只有version為5.5.23,5.5.24,5.5.25 有這個(gè) bug,在5.5.26修復(fù)了這個(gè)bug,而這個(gè)DB的版本恰好是5.5.24。通過(guò)抓包發(fā)現(xiàn)確實(shí)有一個(gè)使用了分區(qū)表的SQL,一出現(xiàn)MySQL就crash,分析發(fā)現(xiàn)是因?yàn)槭褂玫臅r(shí)間分區(qū)字段超過(guò)了最大值導(dǎo)致。
圖1 mysqld got signal 8的報(bào)錯(cuò)信息
圖2 訪問(wèn)分區(qū)越界時(shí)有bug導(dǎo)致實(shí)例crash
可采取如下解決辦法:1.修改 SQL;2.添加 max分區(qū);3.升級(jí)MySQL版本。