0%

Repair myisam table by myisamchk

緣起

最近遇到了一個因為在 db 運作時 磁碟容量寫滿了,然後 db 直接 crash 後自動重開而且失敗,造成大量存取中的 table 毀損,稍微研究了一下如何把那些壞掉的 table 修復起來,以下做個分享

首先先用以下指令檢查壞掉的情況

1
$ myisamchk <table_name>

若要修復的話加上參數 -r

1
$ myisamchk -r <table_name>

若要修的數量太多太大可以再加上 -q (快速模式)

1
$ myisamchk -r -q <table_name>

若修復過程遇到問題可以改成 -o (安全模式),但是更慢

1
$ myisamchk -o <table_name>

全部修完之後可以再做一次 chk,另外如果要進行 mysqldump 遇到 LOCK TABLES 的情形可以使用–skip-lock-tables

1
$ mysqldump -uroot -p$PASSWORD -q --skip-lock-tables <db_name> > xxxx.sql