舞台 3 :困難的修理
如果在索引檔案的第乙個16k塊被破壞,或包含不正確的資訊,或如果索引檔案丟失,你只應該到這個階段 。在這種情況下,建立乙個新的索引檔案是必要的。按如下這樣做:
把資料檔案移更安全的地方。
使用表描述檔案建立新的(空)資料和索引檔案:
shell> mysql db_name
mysql> delete from tbl_name;
mysql> quit
將老的資料檔案拷貝到新建立的資料檔案之中。(不要只是將老檔案移回新檔案之中;你要保留乙個副本以防某些東西出錯。)
回到階段2。現在myisamchk -r -q應該工作了。(這不應該是乙個無限迴圈)。
階段4:非常困難的修復
只有描述檔案也破壞了,你才應該到達這個階段。這應該從未發生過,因為在表被建立以後,描述檔案就不再改變了。
從乙個備份恢復描述檔案並且回到階段3。你也可以恢復索引檔案並且回到階段2。對後者,你應該用myisamchk -r啟動。
如果你沒有乙個備份但是確切地知道表是怎樣被建立的,在另乙個資料庫中建立表的乙個拷貝。刪除新的資料檔案,然後從其他資料庫將描述和索引檔案移到破壞的資料庫中。這給了你新的描述和索引檔案,但是讓資料檔案獨自留下來了。回到階段2並且嘗試重建索引檔案。
13.4.3 表優化
為了組合成碎片的記錄並且消除由於刪除或更新記錄而浪費的空間, 以恢復模式執行myisamchk:
shell> myisamchk -r tbl_name
你可以用sql的optimize table語句使用的相同方式來優化一張表,optimize table比較容易,但是myisamchk更快。也沒有在乙個實用程式和伺服器之間不必要的互動可能性,因為當你使用optimize table時,伺服器做所有的工作。
myisamchk也有你可用來改進乙個表的效能的很多其他選項:
-s, --sort-index
-r index_num, --sort-records=index_num
-a, --analyze
對於選項完整的描述見13.1.1 myisamchk呼叫語法
MYSQL資料表損壞的原因分析和修復方法小結
1.表損壞的原因分析 以下原因是導致mysql 表毀壞的常見原因 1 伺服器突然斷電導致資料檔案損壞。2 強制關機,沒有先關閉mysql 服務。3 mysqld 程序在寫表時被殺掉。4 使用myisamchk 的同時,mysqld 也在操作表。5 磁碟故障。6 伺服器宕機。7 mysql 本身的bu...
MySQL資料表損壞的正確修復方案
文章引用 修復以損壞的mysql資料表的實際操作在實際中是我們經常用到的,以下的文章主要是介紹正確修復以損壞的mysql資料表的實際操作步驟,以下就是正文的介紹,希望會給你帶來一些幫助在此方面。於斷電或非正常關機而導致mysql 和php搭配之最佳組合 資料庫出現錯誤是非常常見的問題。有兩種方法,一...
MySQL資料表損壞的正確修復方案
mysql資料表損壞的正確修復方案 修復以損壞的mysql資料表的實際操作在實際中是我們經常用到的,以下的文章主要是介紹正確修復以損壞的mysql資料表的實際操作步驟,以下就是正文的介紹,希望會給你帶來一些幫助在此方面。www.2cto.com 於斷電或非正常關機而導致mysql 和php搭配之最佳...