修復(fù)MYSQL可能會(huì)使用到的實(shí)用程序列表:
myisamchk
描述、檢查、優(yōu)化和修復(fù)MySQL表的使用程序。因?yàn)閙yisamchk有許多功能,它在其自己的章節(jié)中描述。見(jiàn)13 維護(hù)MySQL安裝。
make_binary_release 制作一個(gè)編譯MySQL的一個(gè)二進(jìn)制的版本。這能用FTP傳送到在ftp.tcx.se網(wǎng)站的“/pub/mysql/Incoming”以方便其它MySQL用戶。
msql2mysql
一個(gè)外殼腳本,轉(zhuǎn)換mSQL程序到MySQL。它不能處理所有的情況,但是當(dāng)轉(zhuǎn)換時(shí),它給出一個(gè)好起點(diǎn)。
mysql
mysql是一個(gè)簡(jiǎn)單的SQL外殼(具有GNU readline 能力),它支持交互式和非交互式使用。當(dāng)交互地使用時(shí),查詢結(jié)果以ASCII表的格式被表示。當(dāng)非交互地使用時(shí)(例如,作為一個(gè)過(guò)濾器),結(jié)果是以定位符分隔的格式表示。(輸出格式可以使用命令行選項(xiàng)改變)你可以簡(jiǎn)單地象這樣運(yùn)行腳本:
shell> mysql database < script.sql > output.tab
如果你在客戶中由于內(nèi)存不足造成問(wèn)題,使用--quick選項(xiàng)!這迫使mysql使用mysql_use_result()而非mysql_store_result()來(lái)檢索結(jié)果集合。
mysqlaccess
一個(gè)腳本,檢查對(duì)主機(jī)、用戶和數(shù)據(jù)庫(kù)組合的存取權(quán)限。
mysqladmin
執(zhí)行管理操作的實(shí)用程序,例如創(chuàng)建或拋棄數(shù)據(jù)庫(kù),再裝載授權(quán)表,清洗表到磁盤(pán)中和再打開(kāi)日志文件。mysqladmin也可以被用來(lái)從服務(wù)器檢索版本,進(jìn)程和狀態(tài)信息。見(jiàn)12.2 管理一個(gè) MySQL 服務(wù)器。
mysqlbug
MySQL錯(cuò)誤報(bào)告腳本。當(dāng)填寫(xiě)一份錯(cuò)誤報(bào)告到MySQL郵件列表時(shí),應(yīng)該總是使用該腳本。
mysqld
SQL守護(hù)進(jìn)程。它應(yīng)該一直在運(yùn)行。
mysqldump
以SQL語(yǔ)句或定位符分隔的文本文件將一個(gè)MySQL數(shù)據(jù)庫(kù)傾倒一個(gè)文件中。這是最早由Igor Romanenko編寫(xiě)的自由軟件的增強(qiáng)版本。見(jiàn)12.3 從MySQL數(shù)據(jù)庫(kù)和表傾倒結(jié)構(gòu)和數(shù)據(jù)。
mysqlimport
使用LOAD DATA INFILE將文本文件倒入其各自的表中。見(jiàn)12.4 從文本文件導(dǎo)入數(shù)據(jù)。
mysqlshow 顯示數(shù)據(jù)庫(kù),表,列和索引的信息。
mysql_install_db 以缺省權(quán)限創(chuàng)建MySQL授權(quán)表。這通常僅被執(zhí)行一次。就是在系統(tǒng)上第一次安裝MySQL時(shí)。
replace 一個(gè)實(shí)用程序,由msql2mysql使用,但是有更一般的適用性。replace改變文件中或標(biāo)準(zhǔn)輸入上的字符串。使用一臺(tái)有限狀態(tài)機(jī)首先匹配更長(zhǎng)的字符串,能被用來(lái)交換字符串。例如,這個(gè)命令在給定的文件中交換a和b:
shell> replace a b b a -- file1 file2 ...
safe_mysqld 一個(gè)腳本,用某些更安全的特征啟動(dòng)mysqld守護(hù)進(jìn)程,例如當(dāng)一個(gè)錯(cuò)誤發(fā)生時(shí),重啟服務(wù)器并且記載運(yùn)行時(shí)刻信息到一個(gè)日志文件中。
--------------------------------------------------------------------------------
注意:在修復(fù)表之前要拷貝他們,注意備份,切記!
1.標(biāo)準(zhǔn)的表修復(fù)
a.試著用 --recover選項(xiàng)修復(fù)表,可以加上 --quick選項(xiàng)試圖只根據(jù)索引的內(nèi)容進(jìn)行修復(fù),這樣做不觸及數(shù)據(jù)文件。
% myisamchk --recover --quick table_name
or
% myk --recover --quick table_name
b.如果問(wèn)題還存在,在試一下上一步命令,但是要忽略 --quick選項(xiàng),這樣允許修改數(shù)據(jù)文件。
% myisamchk --recover table_name
or
% myimchk --recover table_name
c.如果還不工作,試一下 --safe-recover 修復(fù)方法。但這種方法比普通方法要慢,但能修復(fù) --recover不能修復(fù)的問(wèn)題。
% myisamchk --safe-recover table_name
or
% myisamchk --safe-recover table_name
如果在myisamchk or isamchk 由于一個(gè)"can't create new temp file:file_name"的錯(cuò)誤消息在任何一步停止,應(yīng)該重復(fù)該命令并
加入 --force選項(xiàng)強(qiáng)迫清除臨時(shí)文件。
2.如果標(biāo)準(zhǔn)修復(fù)失敗這樣做
a.定位到包含崩潰表的數(shù)據(jù)庫(kù)目錄中。
b.將該表的數(shù)據(jù)文件移到安全的地方。
c.調(diào)用mysql并通過(guò)執(zhí)行下列語(yǔ)句重新創(chuàng)建新的空表,該語(yǔ)句使用表的描述文件
tbl_name.frm重新開(kāi)始生成新的數(shù)據(jù)和索引文件。
mysql>delete from tbl_name;
d.退出mysql,將原始的數(shù)據(jù)文件移回到數(shù)據(jù)目錄中,替換剛建的新的空文件。
e.在世這樣用標(biāo)準(zhǔn)修復(fù)方法。
為了修復(fù)表的描述文件,可先從備份文件中恢復(fù),然后再用標(biāo)準(zhǔn)修復(fù)方法。
如果由于某些原因沒(méi)有備份,如果知道create table 語(yǔ)句,仍然可以恢復(fù)該文件:
a.定位到包含崩潰表的數(shù)據(jù)庫(kù)目錄中。
b.將該表的數(shù)據(jù)文件移到安全的地方。如果想使用用索引的話,還需要把索引文件移走。
c.調(diào)用mysql 發(fā)布create table 語(yǔ)句重建表。
d.退出mysql,將原始的數(shù)據(jù)文件移回到數(shù)據(jù)目錄中,替換剛才新建的數(shù)據(jù)文件。如果在第2不中移動(dòng)了索引文件,則也要講起移回到數(shù)據(jù)庫(kù)目錄中。
e.在嘗試標(biāo)準(zhǔn)表修復(fù)方法。
新聞熱點(diǎn)
疑難解答
圖片精選