您現在的位置: 365建站網 > 365學習 > 如何使用 myisamchk 修復損壞的 MysQL 表

如何使用 myisamchk 修復損壞的 MysQL 表

文章來源:365jz.com     點擊數:253    更新時間:2020-12-28 10:26   參與評論

MyISAM 是 MySQL 數據庫的默認存儲引擎。MyISAM 表很容易損壞。在這篇文章中,我將解釋如何使用 myisamchk 來識別和修復 MyISAM 中的表損壞。在 MySQL 下創建表時,它會創建三個不同的文件:*.frm文件來存儲表格式* 。用于存儲數據的 MYD (MyData) 文件,以及 *。用于存儲索引的 MYI(MyIndex)。我更喜歡使用 InnoDB 作為更大的數據庫的存儲引擎,因為它類似于 Oracle 并提供提交、回滾選項。
我從

MySQL 數據庫的生產 bugzilla
應用程序收到以下錯誤。從錯誤消息中可以明顯看attach_data已損壞,需要重新顯示。損壞的桌子可以使用 myisamchk 進行修復,如下所述。

undef error - DBD::mysql::db selectrow_array failed: Table 'attach_data' is
marked as crashed and should be repaired [for Statement "SELECT LENGTH(thedata)
FROM attach_data WHERE id = ?"] at Bugzilla/Attachment.pm line 344
Bugzilla::Attachment::datasize('Bugzilla::Attachment=HASH(0x9df119c)') called

1. 使用 myisamchk 識別所有損壞的表

# myisamchk /var/lib/mysql/bugs/*.MYI >> /tmp/myisamchk_log.txtmyisamchk: error: Wrong bytesec: 0-0-0 at linkstart: 18361936
MyISAM-table 'attach_data.MYI' is corrupted
Fix it using switch "-r" or "-o"
myisamchk: warning: 1 client is using or hasn't closed the table properly
MyISAM-table 'groups.MYI' is usable but should be fixed
myisamchk: warning: 1 client is using or hasn't closed the table properly
MyISAM-table 'profiles.MYI' is usable but should be fixed

當您將 myisamchk 的輸出重定向到臨時文件時,它將僅在屏幕上顯示損壞的表名。/tmp/myisamchk_log.txt文件將包含有關所有表(包括良好表)的信息,如下所示:

Checking MyISAM file: user_group_map.MYI
Data records:     182   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1

2. 使用 myisamchk 修復損壞的表

執行 myisamchk,如下所示,使用 -r 選項修復上述步驟中標識的損壞表。

# myisamchk -r profiles.MYI- recovering (with sort) MyISAM-table 'profiles.MYI'
Data records: 80
- Fixing index 1
- Fixing index 2

您可能會收到錯誤消息:如果應用程序和其他表仍在使用表,則客戶端正在使用或尚未正確關閉表。為了避免此錯誤消息,請先關閉 mysqld,然后再執行修復,如果您有能力關閉數據庫一段時間。如果沒有,請使用 FLUSH TABLES 強制 mysqld 刷新內存中仍在的任何表修改。

3. 對整個 MySQL 數據庫一起執行檢查和修復

# myisamchk --silent --force --fast --update-state /var/lib/mysql/bugs/*.MYImyisamchk: MyISAM file /var/lib/mysql/bugs/groups.MYI
myisamchk: warning: 1 client is using or hasn't closed the table properly
myisamchk: MyISAM file /var/lib/mysql/bugs/profiles.MYI
myisamchk: warning: 1 client is using or hasn't closed the table properly
  • -s, - -你可以用兩個 - s 使 myisamchk 非常沉默。

  • -f, - 強制選項 : 重新啟動 myisamchk 自動與修復選項 -r, 如果表中有任何錯誤.

  • -F,--快速選項:僅檢查尚未正確關閉的表。

  • -U --更新狀態選項:當表發現任何錯誤時,將表標記為崩潰。

4. 為大型 MySQL 數據庫分配額外內存

對于大型數據庫,可能需要幾個小時才能恢復表。根據系統上可用的 RAM,在執行 myisamchk 時增加內存參數,如下所示:

# myisamchk --silent --force --fast --update-state \
--key_buffer_size=512M --sort_buffer_size=512M \
--read_buffer_size=4M --write_buffer_size=4M \
/var/lib/mysql/bugs/*.MYI

5. 使用 myisamchk 獲取有關表的信息

您也可以使用 myisamchk 獲取有關表的詳細信息,如下所示。

# myisamchk -dvv profiles.MYIMyISAM file:         profiles.MYI
Record format:       Packed
Character set:       latin1_swedish_ci (8)
File-version:        1
Creation time:       2007-08-16 18:46:59
Status:              open,changed,analyzed,optimized keys,sorted index pages
Auto increment key:              1  Last value:                    88
Data records:                   88  Deleted blocks:                 0
Datafile parts:                118  Deleted data:                   0
Datafile pointer (bytes):        4  Keyfile pointer (bytes):        4
Datafile length:              6292  Keyfile length:              6144
Max datafile length:    4294967294  Max keyfile length: 4398046510079
Recordlength:                 2124

table description:
Key Start Len Index   Type                     Rec/key         Root  Blocksize
1   2     3   unique  int24                          1         1024       1024
2   5     765 unique  char packed stripped           1         2048       4096

Field Start Length Nullpos Nullbit Type
1     1     1
2     2     3                      no zeros
3     5     765                    no endspace

6. 所有 myisamchk 選項

執行以下命令以了解 myisamchk 的所有可用選項。

# myisamchk --help

以下是一些關鍵選項,您可以使用與 myisamchk。

全局選項:

  • - s, -僅打印錯誤。一個人可以使用兩個 - s 使 myisamchk 非常沉默。

  • - v, -打印更多信息。這可用于 -描述和 --檢查。使用許多 -v 來更詳細。

  • -V, - 版本打印版本并退出。

  • - 哇, 等一下如果表已鎖定,請等待。

檢查選項(檢查是 myisamchk 的默認操作):

  • - c, - - 檢查檢查表有錯誤。

  • -e, - - -檢查表非常通。只有在極端情況下才使用,因為 myisamchk 通常能夠找出表是否正常,即使沒有此開關。

  • -F, - - 快僅檢查尚未正確關閉的表。

  • -C, - - 只檢查更改僅檢查自上次檢查以來已更改的表。

  • - f, - -如果表中有任何錯誤,請使用"-r"重新啟動。狀態將更新為"-更新狀態"。

  • -i, - - 信息打印有關已檢查表的統計信息。

  • -m, - - -比擴展檢查更快,但只發現 99.99% 的所有錯誤。在大多數情況下應該足夠好。

  • -U - 更新狀態如果發現任何錯誤,將表標記為已崩潰。

  • -T, - - 只讀不要將表標記為已選中。

維修選項(使用"-r"或"-o"時):

  • -B, - 備份備份 。MYD 文件作為"文件名時間"。巴克。

  • -- 更正校驗和更正表的校驗和信息。

  • -e, - - -嘗試從數據文件中恢復每一個可能的行。通常,這也會發現很多垃圾行;不要使用這個選項,如果你不是完全絕望。

  • - f, - -覆蓋舊的臨時文件。

  • -r, - - 恢復可以修復除不是唯一鍵之外的幾乎任何內容。

  • -n, - 排序恢復強制恢復與排序,即使臨時文件將是非常大。

  • -p, - - 并行恢復使用與"-r"和"-n"相同的技術,但在不同的線程中并行創建所有鍵。

  • -o, - - -使用舊的恢復方法;比 "-r" 慢,但可以處理幾個情況下,"-r"報告無法修復數據文件。

  • - q, - - 快通過不修改數據文件加快修復速度??梢越o出第二個"-q"來強制 myisamchk 在重復密鑰的情況下修改原始數據文件。注:無法使用此選項修復數據文件損壞的表。

  • - u, - - -拆包文件包裝與 myisampack 。

其他操作:

  • -a, - -分析鍵的分布。將更快地加入 MySQL。您可以使用"-描述-詳細"來檢查計算table_name。

  • - d, - - 描述打印一些有關表的信息。


如對本文有疑問,請提交到交流論壇,廣大熱心網友會為你解答??! 點擊進入論壇


發表評論 (253人查看,0條評論)
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
用戶名: 驗證碼: 點擊我更換圖片
最新評論
------分隔線----------------------------
自拍偷拍福力视频,偷拍国际精品,麻豆一区福利电影,国产网红视频午夜福利,se视频大全,久久国产AV影院 中国老女人xxhd| 人c交zoozooxxvideo| 大屁股美女尿xx厕所偷拍| 亚洲av永久无码天堂影院| 出差我被公高潮a片| 禁伦短文合集| chinese丰满美女video| 青苹果影院y04080| 俄罗斯胖妇大胆bbww| 香港三级日本三级韩级| 人与嘼zozo免费观看| 人妻无码av中文系列久久第一页| 亚韩无码av电影在线观看| 国产六月婷婷爱在线观看| 人妻出轨中文字幕不卡一区| 最新国产aⅴ精品无码| 四库影院永久四虎精品国产| 办公室上司的又粗又大| 美女范冰冰hdxxxx| 免费人成黄页在线观看国产| 欧美三级不卡在线播放| 免费av在线看不卡| 国产精品欧美亚洲韩国日本久久| 快穿寻找粗跟h| 被夫の上司持久侵犯酒井电影| 中文字幕乱码免费专区| henhenlu| 很黄很色很污18禁免费| 欧美黑人性暴力猛交| 久久爱在在线观看| fuck东北老女人hd对话| http://www.joesaling.com