无码色色,久久久久久免费精品喷水,美女把胸罩解开让男生摸,欧美一级在线观看视频,色亚洲天堂,色综合天天综合给合国产

咨詢電話:023-88959644    24小時(shí)服務(wù)熱線:400-023-8809
NEWS CENTER ·
新聞動(dòng)態(tài)
關(guān)注中技互聯(lián) 關(guān)注前沿

MySQL數(shù)據(jù)庫(kù)崩潰怎么辦?用Myisamchk!

發(fā)表日期:2013-05-29    文章編輯:張氏    瀏覽次數(shù):55    標(biāo)簽:

www.tmsmall666.cn

   由MySQL用來存儲(chǔ)數(shù)據(jù)的文件格式以已經(jīng)被廣泛地測(cè)試過,但是總是有外部情況可以導(dǎo)致數(shù)據(jù)庫(kù)表被破壞:

  mysqld進(jìn)程在一個(gè)寫入當(dāng)中被殺死;計(jì)算機(jī)的意外關(guān)閉(例如,如果計(jì)算機(jī)掉電);一個(gè)硬件錯(cuò)誤。

  這章描述如何檢查和處理在MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)損壞。如果你的表損壞很多,你應(yīng)該嘗試找出其原因!見G.1 調(diào)試一個(gè)MySQL服務(wù)器。

  在執(zhí)行崩潰恢復(fù)時(shí),理解在一個(gè)數(shù)據(jù)庫(kù)中的每一個(gè)表tbl_name對(duì)應(yīng)的在數(shù)據(jù)庫(kù)目錄中的3個(gè)文件是很重要的:

  文件 用途

  “tbl_name.frm” 表定義(表格)文件

  “tbl_name.MYD” 數(shù)據(jù)文件

  “tbl_name.MYI” 索引文件

  這3個(gè)文件的每一個(gè)文件類型可能遭受不同形式的損壞,但是問題最常發(fā)生在數(shù)據(jù)文件和索引文件。

  myisamchk通過一行一行地創(chuàng)建一個(gè)“.MYD”(數(shù)據(jù) )文件的副本來工作,它通過由刪除老的“.MYD 文件并且重命名新文件到原來的文件名結(jié)束修復(fù)階段。如果你使用--quick,myisamchk不創(chuàng)建一個(gè)臨時(shí)“.MYD”文件,只是假定“.MYD”文件是正確的并且僅創(chuàng)建一個(gè)新的索引文件,不接觸“.MYD”文件,這是安全的,因?yàn)閙yisamchk自動(dòng)檢測(cè)“.MYD”文件是否損壞并且在這種情況下,放棄修復(fù)。你也可以給myisamchk兩個(gè)--quick選項(xiàng)。在這種情況下,myisamchk不會(huì)在一些錯(cuò)誤上(象重復(fù)鍵)放棄,相反試圖通過修改“.MYD”文件解決它們。通常,只有在你在太少的空閑磁盤空間上實(shí)施一個(gè)正常修復(fù),使用兩個(gè)--quick選項(xiàng)才有用。在這種情況下,你應(yīng)該至少在運(yùn)行myisamchk前做一個(gè)備份。

  一、怎樣檢查表的錯(cuò)誤

  為了檢查一張表,使用下列命令:

  myisamchk tbl_name

  這能找出所有錯(cuò)誤的99.99%。它不能找出的是僅僅涉及數(shù)據(jù)文件的損壞(這很不常見)。如果你想要檢查一張表,你通常應(yīng)該沒有選項(xiàng)地運(yùn)行myisamchk或用-s或--silent選項(xiàng)的任何一個(gè)。

  myisamchk -e tbl_name

  它做一個(gè)完全徹底的數(shù)據(jù)檢查(-e意思是“擴(kuò)展檢查”)。它對(duì)每一行做每個(gè)鍵的讀檢查以證實(shí)他們確實(shí)指向正確的行。這在一個(gè)有很多鍵的大表上可能花很長(zhǎng)時(shí)間。myisamchk通常將在它發(fā)現(xiàn)第一個(gè)錯(cuò)誤以后停止。如果你想要獲得更多的信息,你能增加--verbose(-v)選項(xiàng)。這使得myisamchk繼續(xù)一直到最多20個(gè)錯(cuò)誤。在一般使用中,一個(gè)簡(jiǎn)單的myisamchk(沒有除表名以外的參數(shù))就足夠了。

  myisamchk -e -i tbl_name

  象前面的命令一樣,但是-i選項(xiàng)告訴myisamchk還打印出一些統(tǒng)計(jì)信息。

  二、怎樣修復(fù)表

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

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

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

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

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

  記錄文件被毀壞。

  在這些情況下,你必須修復(fù)表。myisamchk通常能檢測(cè)并且修復(fù)出錯(cuò)的大部分東西。

  修復(fù)過程包含最多4個(gè)階段,在下面描述。在你開始前,你應(yīng)該cd到數(shù)據(jù)庫(kù)目錄和檢查表文件的權(quán)限,確保他們可被運(yùn)行mysqld的Unix用戶讀取(和你,因?yàn)槟阈枰嫒∧阏跈z查的文件)。如果它拒絕你修改文件,他們也必須是可被你寫入的。

  階段1:檢查你的表

  運(yùn)行

  myisamchk *.MYI

  或(myisamchk -e *.MYI,如果你有更多的時(shí)間)。使用-s(沉默)選項(xiàng)禁止不必要的信息。

  你必須只修復(fù)那些myisamchk報(bào)告有一個(gè)錯(cuò)誤的表。對(duì)這樣的表,繼續(xù)到階段2。

  如果在檢查時(shí),你得到奇怪的錯(cuò)誤(例如out of memory錯(cuò)誤),或如果myisamchk崩潰,到階段3。

  階段2 :簡(jiǎn)單安全的修復(fù)

  首先,試試myisamchk -r -q tbl_name(-r -q意味著“快速恢復(fù)模式”)。這將試圖不接觸數(shù)據(jù)文件來修復(fù)索引文件。如果數(shù)據(jù)文件包含它應(yīng)有的一切和在數(shù)據(jù)文件指向正確地點(diǎn)的刪除連接,這應(yīng)該管用并且表可被修復(fù)。開始修理下一張表。否則,使用下列過程:

  在繼續(xù)前做數(shù)據(jù)文件的一個(gè)備份。

  使用myisamchk -r tbl_name(-r意味著“恢復(fù)模式”)。這將從數(shù)據(jù)文件中刪除不正確的記錄和已被刪除的記錄并重建索引文件。

  如果前面的步驟失敗,使用myisamchk --safe-recover tbl_name。安全恢復(fù)模式使用一個(gè)老的恢復(fù)方法,處理常規(guī)恢復(fù)模式不行的少數(shù)情況(但是更慢)。 如果在修復(fù)時(shí),你得到奇怪的錯(cuò)誤(例如out of memory錯(cuò)誤),或如果myisamchk崩潰,到階段3。

  階段3 :困難的修理

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

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

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

  shell> mysql db_name

  mysql> DELETE FROM tbl_name;

  mysql> quit

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

  回到階段2。現(xiàn)在myisamchk -r -q應(yīng)該工作了。(這不應(yīng)該是一個(gè)無限循環(huán))。

  階段4:非常困難的修復(fù)

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

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

  如果你沒有一個(gè)備份但是確切地知道表是怎樣被創(chuàng)建的,在另一個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建表的一個(gè)拷貝。刪除新的數(shù)據(jù)文件,然后從其他數(shù)據(jù)庫(kù)將描述和索引文件移到破壞的數(shù)據(jù)庫(kù)中。這給了你新的描述和索引文件,但是讓數(shù)據(jù)文件獨(dú)自留下來了。回到階段2并且嘗試重建索引文件。

  三、表優(yōu)化

  為了組合成碎片的記錄并且消除由于刪除或更新記錄而浪費(fèi)的空間, 以恢復(fù)模式運(yùn)行myisamchk:

  shell> myisamchk -r tbl_name

  你可以用SQL的OPTIMIZETABLE語句使用的相同方式來優(yōu)化一張表,OPTIMIZE TABLE比較容易,但是myisamchk更快。也沒有在一個(gè)實(shí)用程序和服務(wù)器之間不必要的交互可能性,因?yàn)楫?dāng)你使用OPTIMIZE TABLE時(shí),服務(wù)器做所有的工作。

  myisamchk也有你可用來改進(jìn)一個(gè)表的性能的很多其他選項(xiàng):

  -S, --sort-index

  -R index_num, --sort-records=index_num

  -a, --analyze

  對(duì)于選項(xiàng)完整的描述見myisamchk調(diào)用語法。

重慶中技互聯(lián)網(wǎng)信息咨詢有限公司 www.tmsmall666.cn

如沒特殊注明,文章均為中技互聯(lián)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來自www.tmsmall666.cn
相關(guān)新聞

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 備11003429號(hào)

  • qq客服
  • 公眾號(hào)
  • 手機(jī)版
  • 新浪微博