国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

教您修復(fù)mysql數(shù)據(jù)庫的方法

2024-07-24 13:05:49
字體:
供稿:網(wǎng)友

mysql的朋友都知道mysql在長時間使用過后數(shù)據(jù)庫會出現(xiàn)一些問題,這就需要快速修復(fù)損壞mysql數(shù)據(jù)庫以方便我們的工作和學(xué)習(xí)。下面小編為大家下面介紹兩種快速檢修 MySQL 數(shù)據(jù)庫的方法。

本人常用這樣的代碼,直接放到mysql數(shù)據(jù)庫目錄里面

復(fù)制代碼 代碼如下:


cmd /k myisamchk -r jb51_tablename


jb51_tablename是jb51_tablename.MYD的名稱。運(yùn)行以下就可以了。

有的時候因為掉電或者其他原因?qū)е聰?shù)據(jù)庫損壞,我們可以使用mysql自帶的mysqlcheck命令來快速修復(fù)所有的數(shù)據(jù)庫或者特定的數(shù)據(jù)庫;例如
檢查優(yōu)化并修復(fù)所有的數(shù)據(jù)庫用:

1.先在運(yùn)行中輸入CMD,啟動命令行.

2.進(jìn)入Mysql的Bin目錄:E:/Program Files/MySQL/MySQL Server 5.0/bin,如果不知道如何進(jìn)入別的目錄,就要參考網(wǎng)上的資料補(bǔ)習(xí)基礎(chǔ)知識了.
常見方式:
運(yùn)行 E:
運(yùn)行 CD "E:/Program Files/MySQL/MySQL Server 5.0/bin"

3.運(yùn)行: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
......
......
......

注意!


在修復(fù)過程中,如果看到有error的提示,表明這個表是壞的,無法修復(fù)的,對于含有壞表的的數(shù)據(jù)庫,您只能刪除它,或停止它,不然會影響整個Mysql的穩(wěn)定,造成mysql自動停止.(提示"The storage engine for the table doesn't support repair"的表不需要處理)


如果修復(fù)太快看不到結(jié)果,可以運(yùn)行
mysqlcheck -A -o -r -uroot -p888888 >>C:/test.txt

運(yùn)行后打開test.txt就可以看到了. 
  
1、myisamchk

  使用 myisamchk 必須暫時停止 MySQL 服務(wù)器。例如,我們要檢修 discuz 數(shù)據(jù)庫。執(zhí)行以下操作:

復(fù)制代碼 代碼如下:


  # service mysql stop (停止 MySQL );
  # myisamchk -r /數(shù)據(jù)庫文件的絕對路徑/*MYI
  # service mysql start



  myisamchk 會自動檢查并修復(fù)數(shù)據(jù)表中的索引錯誤。

2、mysqlcheck

  使用 mysqlcheck 無需停止 MySQL ,可以進(jìn)行熱修復(fù)。操作步驟如下:
  
># mysqlcheck -r discuz.*

小編提醒:無論是 myisamchk 還是 mysqlcheck ,一般情況下不要使用 -f 強(qiáng)制修復(fù),-f 參數(shù)會在遇到一般修復(fù)無法成功的時候刪除部分出錯數(shù)據(jù)以嘗試修復(fù)。所以,不到萬不得已不要使用 -f。

以下是補(bǔ)充:

一張損壞的表的癥狀通常是查詢意外中斷并且你能看到例如這些錯誤:

◆ “tbl_name.frm”被鎖定不能改變。

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

◆ 從表處理器的得到錯誤###(此時,錯誤135是一個例外)。

◆ 意外的文件結(jié)束。

◆ 記錄文件被毀壞。

在這些情況下,你必須修復(fù)表。表的修復(fù)是一項非常困難的工作,很多情況下令人束手無策。然而,有一些常規(guī)的知道思想和過程,可以遵循它們來增加修正表的機(jī)會。通常,開始是可以用最快的修復(fù)方法,看看能否袖珍故障。如果發(fā)現(xiàn)不成功,可以逐步升級到更徹底的但更慢的修復(fù)方法。如果仍舊難以修復(fù),就應(yīng)該從備份中恢復(fù)了。在上一章已經(jīng)詳細(xì)介紹了這一部分內(nèi)容。

簡單安全的修復(fù)

為了修復(fù)一個表執(zhí)行下列步驟:

◆ 首先,用--recover,-r選項修正表,并且用--quick,-q選項,來只根據(jù)索引文件的內(nèi)容進(jìn)行恢復(fù)。這樣不接觸數(shù)據(jù)文件來修復(fù)索引文件。(-r意味著“恢復(fù)模式”)

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


◆ 如果問題仍舊存在,則忽略--quick選項,允許修復(fù)程序修改數(shù)據(jù)文件,因為這可能存在問題。下面的命令將從數(shù)據(jù)文件中刪除不正確的記錄和已被刪除的記錄并重建索引文件:

myisamchk -r tbl_name
isamchk -r tbl_name


◆ 如果前面的步驟失敗,使用。安全恢復(fù)模式使用一個老的恢復(fù)方法,處理常規(guī)恢復(fù)模式不行的少數(shù)情況(但是更慢)。

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


困難的修理

如果在索引文件的第一個16K塊被破壞,或包含不正確的信息,或如果索引文件丟失,你只應(yīng)該到這個階段 。在這種情況下,創(chuàng)建一個新的索引文件是必要的。按如下這樣的步驟做:

◆ 定位到包含崩潰表的數(shù)據(jù)庫目錄中

◆ 把數(shù)據(jù)文件移更安全的地方。

◆ 使用表描述文件創(chuàng)建新的(空)數(shù)據(jù)和索引文件:

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


上述語句將重新創(chuàng)建新的空表,并使用表的的描述文件tbl_name.frm重新生成新的數(shù)據(jù)和索引文件。

◆ 將老的數(shù)據(jù)文件拷貝到新創(chuàng)建的數(shù)據(jù)文件之中。(不要只是將老文件移回新文件之中;你要保留一個副本以防某些東西出錯。)

◆ 在使用標(biāo)準(zhǔn)的修復(fù)方法。現(xiàn)在myisamchk -r -q應(yīng)該工作了。(這不應(yīng)該是一個無限循環(huán))。

如果你擁有表的備份文件,那么一切過程就容易的多。從備份文件中可以恢復(fù)表的描述文件,然后在檢查表,有可能還要繼續(xù)使用標(biāo)準(zhǔn)的修復(fù)方法,應(yīng)該糾可以解決問題了。

非常困難的修復(fù)

只有描述文件也破壞了,你才應(yīng)該到達(dá)這個階段。這應(yīng)該從未發(fā)生過,因為在表被創(chuàng)建以后,描述文件就不再改變了。

從一個備份恢復(fù)描述文件并且回到階段2。你也可以恢復(fù)索引文件并且回到階段1。對于后者,你應(yīng)該用myisamchk -r啟動。

如果因為某種原因,數(shù)據(jù)的備份文件丟失或者沒有備份文件,但是你還記得建立表的CREATE TABLE語句,那么太好了,這樣還是可以恢復(fù)索引文件:

◆ 定位到包含崩潰表的數(shù)據(jù)庫目錄中

◆ 把數(shù)據(jù)文件移更安全的地方。再把數(shù)據(jù)庫目錄中的對應(yīng)的目錄刪去.。

◆ 調(diào)用mysql并發(fā)復(fù)CREATE TABLE語句建立該表。

◆ 退出mysql,將原始的數(shù)據(jù)文件和索引文件移回到數(shù)據(jù)庫的目錄中,替換剛才新建的文件。

◆ 然后回到階段2,修復(fù)表。也可以只移回數(shù)據(jù)文件,這樣保留新的描述和索引文件,然后回到階段1,繼續(xù)用標(biāo)準(zhǔn)的方法修復(fù)表。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临湘市| 泰州市| 措勤县| 乌海市| 方城县| 武强县| 金寨县| 上饶县| 安阳县| 双江| 大埔区| 江北区| 东乡县| 广汉市| 绥宁县| 和平县| 宁安市| 和硕县| 湖北省| 西盟| 嘉善县| 闽清县| 内黄县| 垦利县| 临泉县| 永丰县| 商水县| 卫辉市| 新民市| 隆德县| 白玉县| 治县。| 阜宁县| 内江市| 汪清县| 博爱县| 兴宁市| 伽师县| 洛隆县| 同心县| 凤冈县|