操作系統(tǒng)文件限制大小導(dǎo)致 MYSQL ERROR 1194 (HY000): Table is marked as crashed and should be repaired 問題處理
同事反饋應(yīng)用在執(zhí)行查詢某張表時候報ERROR 1194 (HY000): Table is marked as crashed and should be repaired 錯誤
mysql> select * from ims_stat_msg_history where module='basic' and message='0' and createtime>=UNIX_TIMESTAMP('2015-03-04') LIMIT 0, 10;ERROR 1194 (HY000): Table 'ims_stat_msg_history' is marked as crashed and should be repaired
通過網(wǎng)絡(luò)搜索得出的大概問題原因為索引頁損壞或表出現(xiàn)錯誤,網(wǎng)絡(luò)上提供2種解決方案
使用myisamchk 命令進(jìn)行修復(fù) myisamchk -c -r /var/lib/mysql/wx/ims_stat_msg_history.
使用mysql 命令 repair table ims_stat_msg_history 進(jìn)行修復(fù).
通過使用上面兩種解決方案,此問題依然存在,通過核查表發(fā)現(xiàn)表大小剛好為2G(1073741312/1024/1024)*2
-rw-rw---- 1 mysql mysql 1073741312 Mar 04 17:59 ims_stat_msg_history.MYD-rw-rw---- 1 mysql mysql 321451008 Mar 04 18:22 ims_stat_msg_history.MYI-rw-rw---- 1 mysql mysql 8937 Mar 28 2014 ims_stat_msg_history.frm
隨著這條線索核查操作系統(tǒng)的limit (/etc/security/limits) 發(fā)現(xiàn)default有設(shè)置fssize 為2097151 和文件已經(jīng)達(dá)到的大小2G剛好一致,這里我將此參數(shù)改為-1 ,然后重新切換一下用戶環(huán)境后重啟mysql
重啟mysql后,再次執(zhí)行repair table ims_stat_msg_history進(jìn)行修復(fù),經(jīng)過修復(fù)后測試,表恢復(fù)正常!
總結(jié):
對于網(wǎng)絡(luò)上提供的解決方案,在不十分清楚的情況下,需要反復(fù)確認(rèn)操作,最好進(jìn)行先備份
對于使用了修復(fù)方案還是存在問題,需要多擴展思路和方向進(jìn)行解決
更多信息請查看IT技術(shù)專欄