同事反饋應用在執行查詢某張表時候報
ERROR 1194 (HY000): Table is marked as crashed and should be repaired
錯誤mysql
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
經過網絡搜索得出的大概問題緣由爲索引頁損壞或表出現錯誤,網絡上提供2種解決方案sql
使用myisamchk 命令進行修復
myisamchk -c -r /var/lib/mysql/wx/ims_stat_msg_history
.網絡使用mysql 命令
repair table ims_stat_msg_history
進行修復.測試經過使用上面兩種解決方案,此問題依然存在,經過覈查表發現表大小恰好爲2G(1073741312/1024/1024)*2spa
-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
隨着這條線索覈查操做系統的limit (
/etc/security/limits
) 發現default有設置fssize 爲2097151
和文件已經達到的大小2G恰好一致,這裏我將此參數改成-1 ,而後從新切換一下用戶環境後重啓mysql
重啓mysql後,再次執行repair table ims_stat_msg_history
進行修復,通過修復後測試,表恢復正常!操作系統
對於網絡上提供的解決方案,在不十分清楚的狀況下,須要反覆確認操做,最好進行先備份code
對於使用了修復方案仍是存在問題,須要多擴展思路和方向進行解決索引