自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何修復(fù)MySQL數(shù)據(jù)庫表

運(yùn)維 數(shù)據(jù)庫運(yùn)維 MySQL
你可能在使用MySQL過程中,各種意外導(dǎo)致數(shù)據(jù)庫表的損壞,而且這些數(shù)據(jù)往往是最新的數(shù)據(jù),通常不可能在備份數(shù)據(jù)中找到。本章將繼上篇文章中檢查出表的問題后,告訴你如何修復(fù)表。

相關(guān)文章:如何進(jìn)行MySQL數(shù)據(jù)庫表的故障檢測(cè)

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

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

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

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

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

◆ 記錄文件被毀壞。

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

簡(jiǎn)單安全的修復(fù)

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

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

myisamchk -r -q tbl_name

isamchk -r -q tbl_name

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

myisamchk -r tbl_name

isamchk -r tbl_name

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

myisamchk --safe-recover tbl_name

isamchk --safe-recover tbl_name

困難的修理

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

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

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

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

shell> mysql db_name

mysql> DELETE FROM tbl_name;

mysql> quit

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

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

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

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

非常困難的修復(fù)

只有描述文件也破壞了,你才應(yīng)該到達(dá)這個(gè)階段。這應(yīng)該從未發(fā)生過,因?yàn)樵诒肀粍?chuàng)建以后,描述文件就不再改變了。

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

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

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

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

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

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

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

【編輯推薦】

  1. 如何進(jìn)行MySQL數(shù)據(jù)庫表的故障檢測(cè)
  2. 如何對(duì)MySQL數(shù)據(jù)庫表進(jìn)行鎖定
  3. 如何對(duì)MySQL數(shù)據(jù)庫日志文件進(jìn)行維護(hù)
  4. 建立MySQL數(shù)據(jù)庫日常維護(hù)規(guī)范
  5. 如何在.NET中使用MySQL數(shù)據(jù)庫
責(zé)任編輯:楊鵬飛 來源: 51CTO整理
相關(guān)推薦

2022-06-06 08:21:13

MySQL數(shù)據(jù)庫命令

2014-07-09 14:23:20

WordPress數(shù)據(jù)庫表

2011-05-18 13:16:21

MySQL數(shù)據(jù)庫鎖定

2023-09-14 23:05:57

? ?MySQL數(shù)據(jù)庫

2009-02-02 16:50:34

數(shù)據(jù)庫表的鎖定MySQL

2010-10-13 11:54:00

MySQL數(shù)據(jù)庫表

2011-07-28 17:02:59

MYSQL數(shù)據(jù)庫跨表更新數(shù)據(jù)并合

2010-06-07 13:53:04

MySQL數(shù)據(jù)庫表

2009-02-02 13:43:19

故障檢測(cè)數(shù)據(jù)庫

2010-05-24 14:38:41

MySQL數(shù)據(jù)庫

2011-07-19 11:12:36

PHPMySQL數(shù)據(jù)庫

2019-10-21 08:08:34

MySQL數(shù)據(jù)庫主鍵

2019-12-13 10:31:45

數(shù)據(jù)庫SQLMySQL

2010-06-13 10:59:38

MySQL數(shù)據(jù)庫

2011-04-12 09:43:17

Sybase數(shù)據(jù)庫修復(fù)技巧

2018-05-14 16:14:56

數(shù)據(jù)庫MySQL分表與分區(qū)

2010-06-01 12:51:23

MySQL數(shù)據(jù)庫

2017-05-25 10:23:13

數(shù)據(jù)a表b表

2011-03-21 17:00:23

MySQL數(shù)據(jù)庫

2010-10-15 16:20:59

MySQL數(shù)據(jù)庫表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)