程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 教您修復mysql數據庫的辦法

教您修復mysql數據庫的辦法

編輯:MySQL綜合教程

教您修復mysql數據庫的辦法。本站提示廣大學習愛好者:(教您修復mysql數據庫的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是教您修復mysql數據庫的辦法正文


會mysql的同伙都曉得mysql在長時光應用事後數據庫會湧現一些成績,這就須要疾速修復破壞mysql數據庫以便利我們的任務和進修。上面小編為年夜家上面引見兩種疾速檢驗 MySQL 數據庫的辦法。

自己經常使用如許的代碼,直接放到mysql數據庫目次外面


cmd /k myisamchk -r jb51_tablename

jb51_tablename是jb51_tablename.MYD的稱號。運轉以下便可以了。

有的時刻由於失落電或許其他緣由招致數據庫破壞,我們可使用mysql自帶的mysqlcheck敕令來疾速修復一切的數據庫或許特定的數據庫;例如
檢討優化並修復一切的數據庫用:

1.先在運轉中輸出CMD,啟動敕令行.

2.進入Mysql的Bin目次:E:\Program Files\MySQL\MySQL Server 5.0\bin,假如不曉得若何進入其余目次,就要參考網上的材料補習基本常識了.
罕見方法:
運轉 E:
運轉 CD "E:\Program Files\MySQL\MySQL Server 5.0\bin"

3.運轉:mysqlcheck -A -o -r -uroot -p888888
留意,將888888改成你本身的root用戶暗碼

mysql.columns_priv                 OK
mysql.db                      OK
mysql.func                     OK
mysql.help_category                OK
mysql.help_keyword                 OK
mysql.help_relation                OK
mysql.help_topic                  OK
mysql.host                     OK
mysql.tables_priv                 OK
mysql.time_zone                  OK
mysql.time_zone_leap_second            OK
mysql.time_zone_name                OK
mysql.time_zone_transition             OK
mysql.time_zone_transition_type          OK
mysql.user                     OK
......
......
......

留意!


在修復進程中,假如看到有error的提醒,注解這個表是壞的,沒法修復的,關於含有壞表的的數據庫,您只能刪除它,或停滯它,否則會影響全部Mysql的穩固,形成mysql主動停滯.(提醒"The storage engine for the table doesn't support repair"的表不須要處置)


假如修復太快看不到成果,可以運轉
mysqlcheck -A -o -r -uroot -p888888 >>C:\test.txt

運轉後翻開test.txt便可以看到了. 
  
1、myisamchk

  應用 myisamchk 必需臨時停滯 MySQL 辦事器。例如,我們要檢驗 discuz 數據庫。履行以下操作:


  # service mysql stop (停滯 MySQL );
  # myisamchk -r /數據庫文件的相對途徑/*MYI
  # service mysql start


  myisamchk 會主動檢討並修單數據表中的索引毛病。

2、mysqlcheck

  應用 mysqlcheck 無需停滯 MySQL ,可以停止熱修復。操作步調以下:
  
># mysqlcheck -r discuz.*

小編提示:不管是 myisamchk 照樣 mysqlcheck ,普通情形下不要應用 -f 強迫修復,-f 參數會在碰到普通修復沒法勝利的時刻刪除部門失足數據以測驗考試修復。所以,不到萬不得已不要應用 -f。

以下是彌補:

一張破壞的表的症狀平日是查詢不測中止而且你能看到例如這些毛病:

◆ “tbl_name.frm”被鎖定不克不及轉變。

◆ 不克不及找到文件“tbl_name.MYI”(Errcode :### )。

◆ 從表處置器的獲得毛病###(此時,毛病135是一個破例)。

◆ 不測的文件停止。

◆ 記載文件被損壞。

在這些情形下,你必需修復表。表的修復是一項異常艱苦的任務,許多情形命令人一籌莫展。但是,有一些慣例的曉得思惟和進程,可以遵守它們來增長修改表的機遇。平日,開端是可以用最快的修復辦法,看看可否袖珍毛病。假如發明不勝利,可以慢慢進級到更完全的但更慢的修復辦法。假如仍然難以修復,就應當從備份中恢復了。在上一章曾經具體引見了這一部門內容。

簡略平安的修復

為了修復一個表履行以下步調:

◆ 起首,用--recover,-r選項修改表,而且用--quick,-q選項,來只依據索引文件的內容停止恢復。如許不接觸數據文件來修復索引文件。(-r意味著“恢復形式”)

myisamchk -r -q tbl_name
isamchk -r -q tbl_name


◆ 假如成績仍然存在,則疏忽--quick選項,許可修復法式修正數據文件,由於這能夠存在成績。上面的敕令將從數據文件中刪除不准確的記載和已被刪除的記載偏重建索引文件:

myisamchk -r tbl_name
isamchk -r tbl_name


◆ 假如後面的步調掉敗,應用。平安恢復形式應用一個老的恢復辦法,處置慣例恢復形式不可的多數情形(然則更慢)。

myisamchk --safe-recover tbl_name
isamchk --safe-recover tbl_name


艱苦的補綴

假如在索引文件的第一個16K塊被損壞,或包括不准確的信息,或假如索引文件喪失,你只應當到這個階段 。在這類情形下,創立一個新的索引文件是需要的。按以下如許的步調做:

◆ 定位到包括瓦解表的數據庫目次中

◆ 把數據文件移更平安的處所。

◆ 應用表描寫文件創立新的(空)數據和索引文件:

shell> mysql db_namemysql> DELETE FROM tbl_name;mysql> quit


上述語句將從新創立新的空表,並應用表的的描寫文件tbl_name.frm從新生成新的數據和索引文件。

◆ 將老的數據文件拷貝到新創立的數據文件當中。(不要只是將老文件移回新文件當中;你要保存一個正本以防某些器械失足。)

◆ 在應用尺度的修復辦法。如今myisamchk -r -q應當任務了。(這不該該是一個無窮輪回)。

假如你具有表的備份文件,那末一切進程就輕易的多。從備份文件中可以恢復表的描寫文件,然後在檢討表,有能夠還要持續應用尺度的修復辦法,應當糾可以處理成績了。

異常艱苦的修復

只要描寫文件也損壞了,你才應當達到這個階段。這應當從未產生過,由於在表被創立今後,描寫文件就不再轉變了。

從一個備份恢復描寫文件而且回到階段2。你也能夠恢復索引文件而且回到階段1。關於後者,你應當用myisamchk -r啟動。

假如由於某種緣由,數據的備份文件喪失或許沒有備份文件,然則你還記得樹立表的CREATE TABLE語句,那末太好了,如許照樣可以恢復索引文件:

◆ 定位到包括瓦解表的數據庫目次中

◆ 把數據文件移更平安的處所。再把數據庫目次中的對應的目次刪去.。

◆ 挪用mysql並發復CREATE TABLE語句樹立該表。

◆ 加入mysql,將原始的數據文件和索引文件移回到數據庫的目次中,調換適才新建的文件。

◆ 然後回到階段2,修復表。也能夠只移回數據文件,如許保存新的描寫和索引文件,然後回到階段1,持續用尺度的辦法修復表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved