Mysql資料庫提示資料表損失問題修複解決辦法

來源:互聯網
上載者:User
最近一段時間,公司的伺服器每隔一段時間(大概24個小時),就會出現無法訪問的情況,然後重啟了伺服器,一切都恢複了正常,一直都不知道是什麼問題,於是就問了機房的工程師,他幫我分析了伺服器的作業記錄,發現了大量的Mysql的錯誤。

 

 

基本上每隔20秒,就會出現一次錯誤提示,看著這個的提示應該是這個表需要修複了

錯誤產生原因

在網上查了查為什麼會出現表損壞,基本上得到以下的原因:
頻繁查詢和更新Mysql資料庫表,造成的索引錯誤。
MYSQL資料庫因為某種原因而受到了損壞,如:資料庫伺服器突發性的斷電、在提在資料庫表提供服務時對錶的原檔案進行某種操作都有可能導致MYSQL資料庫表被損壞而無法讀取資料。總之就是因為某些不可測的問題造成表的損壞。
這個資料庫啟動並執行是一個Discuz論壇,一直都人在刷使用者註冊,我比較認同第一種的情況,而表pre_commen_regip也是使用者註冊相關的IP記錄表,分享了這個出現的原因,我們來說說解決方案。

解決方案

 

我們可以使用資料庫管理工具,例如phpmyadmin,登入資料庫,選中需要修複的表格,然後點擊修複表操作:

 

 

如果你沒有資料庫管理工具,那麼你可以遠程進入伺服器,然後通過命令列操作,修複損壞的表:

 

找到mysql的安裝目錄的bin/myisamchk工具,在命令列中輸入:

 

myisamchk -c -r ../data/tablename/posts.MYI

 

然後myisamchk 工具會協助你恢複資料表的索引,也不用重新啟動mysql,問題就解決了。

關於Mysql的修複

當你試圖修複一個被破壞的表的問題時,有三種修複類型。如果你得到一個錯誤資訊指出一個臨時檔案不能建立,刪除資訊所指出的檔案並再試一次–這通常是上一次修複操作遺留下來的。
這三種修複方法如下所示:

% myisamchk --recover --quick /path/to/tblName
% myisamchk --recover /path/to/tblName
% myisamchk --safe-recover /path/to/tblName

第一種是最快的,用來修複最普通的問題,而最後一種是最慢的,用來修複一些其它方法所不能修複的問題。
檢查和修複MySQL資料檔案
如果上面的方法無法修複一個被損壞的表,在你放棄之前,你還可以試試下面這兩個技巧:
1、如果你懷疑表的索引檔案(*.MYI)發生了不可修複的錯誤,甚至是丟失了這個檔案,你可以使用資料檔案(*.MYD)和資料格式檔案(*.frm)重建它。首先製作一個資料檔案(tblName.MYD)的拷貝。重啟你的MySQL服務並串連到這個服務上,使用下面的命令刪除表的內容:

mysql> DELETE FROM tblName;

在刪除表的內容的同時,會建立一個新的索引檔案。退出登入並重新關閉服務,然後用你剛才儲存的資料檔案(tblName.MYD)覆蓋新的(空)資料檔案。
最後,使用myisamchk執行標準的修複(上面的第二種方法),根據表的資料的內容和表的格式檔案重建索引資料。
2、如果你的表的格式檔案(tblName.frm)丟失了或者是發生了不可修複的錯誤,但是你清楚如何使用相應的CREATE
TABLE語句來重建這張表,你可以重建一個新的.frm檔案並和你的資料檔案和索引檔案(如果索引檔案有問題,使用上面的方法重建一個新的)一起使用。首先製作一個資料和索引檔案的拷貝,然後刪除原來的檔案(刪除資料目錄下有關這個表的所有記錄)。

啟動MySQL服務並使用當初的CREATE TABLE檔案建立一個新的表。新的.frm檔案應該可以正常工作了,但是最好你還是執行一下標準的修複(上面的第二種方法)。

總結

為了不冒失修複,故採取保守做法,我們知道 MySQL 一個高效的管理工具便是 PhpMyAdmin,而在該管理軟體中就包含了對錶的檢查、分析、修複、最佳化功能,比起網上提供的含糊命令列來說更安全更簡便。
通過實踐,在使用檢查表功能後確實發現了問題,之後使用修複功能進行了修複,反饋結果每個表都已經 ok,再執行一次最佳化,重新測試訪問網站終於恢複了正常。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.