步驟:
1.sql語句:check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error
2.Linux執行:
myisamchk -r -q /var/lib/mysql/db/test.MYI
3.sql語句:repair table tabTest;
4.sql語句:check table tabTest; Status是OK就修復好了
非Linux上:直接

參考:
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為缺省的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
1.MyISAM表損壞
用myisamchk命令來修復
myisamchk -r -q 后面跟你的表名.MYI
這個命令是專門修復myism引擎數據庫表的。比如,你的數據庫目錄為
/var/lib/mysql/db
其中一個表為 test
那么修復test表的方法為
myisamchk -r -q /var/lib/mysql/db/test.MYI
如果修復全部表,用這個命令
myisamchk -r -q /var/lib/mysql/db/*.MYI
2.InnoDB表損壞
InnoDB擁有內部恢復機制,假如數據庫崩潰了,InnoDB通過從最后一個時間戳開始運行日志文件,來嘗試修復數據庫。
大多數情況下會修復成功,而且整個過程是透明的。
假如InnoDB自行修復失敗,那么數據庫將不能啟動。
在繼續操作前,先瀏覽下MySQL的日志文件,確定數據庫是因為InnoDB表的損壞而崩潰。
有一種方法是更新InnoDB的日志文件計數器以跳過引起崩潰的查詢,這種情況下,將造成數據的不一致性而且會經常使主從復制中斷。
一旦確定MySQL因為InnoDB表損壞無法啟動時,就可以按照以下5步進行修復:
1.編輯/etc/my.cnf文件,加入如下行:
innodb_force_recovery = 4
2.這時就可以重新啟動數據庫了,在innodb_force_recovery配置的作用,所有的插入與更新操作將被忽略;
3.導出所有的數據表;
4.關閉數據庫並刪除所有數據表文件及目錄,再運行 mysql_install_db來創建MySQL默認數據表;
5.在/etc/my.cnf中刪除innodb_force_recovery這一行,再啟動MySQL(這時MySQL正常啟動);
6.從第3步備份的文件中恢復所有的數據。
innodb_force_recovery可以設置為1-6,大的數字包含前面所有數字的影響。當設置參數值大於0后,可以對表進行select,create,drop操作,但insert,update或者delete這類操作是不允許的。
1(SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁。
2(SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程需要執行full purge操作,會導致crash。
3(SRV_FORCE_NO_TRX_UNDO):不執行事務回滾操作。
4(SRV_FORCE_NO_IBUF_MERGE):不執行插入緩沖的合並操作。
5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存儲引擎會將未提交的事務視為已提交。
6(SRV_FORCE_NO_LOG_REDO):不執行前滾的操作。
參考:
rpm安裝默認目錄:
數據文件:/var/lib/mysql/
配置文件模板:/usr/share/mysql
mysql客戶端工具目錄:/usr/bin
日志目錄:/var/log/
pid,sock文件目錄:/tmp/