當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 重慶OA系統(tǒng) > 重慶OA快博
檢測(cè)和解決表維護(hù)MySQL數(shù)據(jù)庫(kù)的問(wèn)題
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
日常工作管理中,數(shù)據(jù)庫(kù)管理員要做好維護(hù)MySQL數(shù)據(jù)庫(kù)管理的工作,若重新生成索引文件,我們又該怎樣做?下面由經(jīng)驗(yàn)豐富的數(shù)據(jù)庫(kù)管理員講解怎樣做好維護(hù)MySQL數(shù)據(jù)庫(kù)管理的工作。
以下的文章主要向大家描述的是正確檢查與維護(hù)MySQL數(shù)據(jù)庫(kù)表的實(shí)際操作流程,以及在檢查與維護(hù)MySQL數(shù)據(jù)庫(kù)表的實(shí)際操作中值得我們大家留意的事項(xiàng)的具體描述,望你在瀏覽之后會(huì)有所收獲。
理想的情況是,MySQL(和PHP搭配之最佳組合)從首次安裝以來(lái)始終平穩(wěn)地運(yùn)行。但有時(shí)確實(shí)會(huì)由于各種原因而出現(xiàn)問(wèn)題,其范圍可以從電源斷電到硬件故障到不正常地關(guān)閉MySQL(和PHP搭配之最佳組合)服務(wù)器(如用kill -9終止服務(wù)器或機(jī)器崩潰)。
諸如這樣的情況大部分都超出您的控制范圍,它們會(huì)導(dǎo)致數(shù)據(jù)庫(kù)表的毀壞,尤其是在對(duì)表進(jìn)行修改且未完全寫(xiě)入時(shí)所引起的。
本章的重點(diǎn)是檢測(cè)和解決表的問(wèn)題,而不論問(wèn)題是如何引起的。對(duì)于表的檢查和修復(fù),MySQL(和PHP搭配之最佳組合)管理員最好的朋友是myisamchk 和isamchk 實(shí)用程序。這兩個(gè)程序有好幾個(gè)功能,我們已經(jīng)在前面討論了怎樣使用它們執(zhí)行索引鍵的分布分析和索引的釋放與激活。還可以使用它們檢查表和修復(fù)有問(wèn)題的表。這使您能在表變壞之前(使表不能使用之前)修正故障。
myisamchk 和isamchk 提供的全部選項(xiàng)的清單在附錄E 中。有關(guān)其他的背景,請(qǐng)參閱MySQL(和PHP搭配之最佳組合)參考指南的“維護(hù)MySQL數(shù)據(jù)庫(kù)(和PHP搭配之最佳組合)安裝”一章。
表的故障檢測(cè)和維護(hù)MySQL數(shù)據(jù)庫(kù)的一般過(guò)程如下:
1) 檢查出錯(cuò)的表。如果該表檢查通過(guò),則完成任務(wù),否則必須修復(fù)它。
2) 在開(kāi)始修復(fù)之前對(duì)表文件進(jìn)行拷貝,以防萬(wàn)一。
3) 試著修復(fù)表。
4) 如果修復(fù)操作失敗,從數(shù)據(jù)庫(kù)備份和更新日志中恢復(fù)此表。
上述過(guò)程的最后一步假定您已經(jīng)執(zhí)行了數(shù)據(jù)庫(kù)備份并允許更新日志有效。如果不是這樣的話,系統(tǒng)將有危險(xiǎn)。參考第11章查找一下怎樣使用MySQL(和PHP搭配之最佳組合)aump 和怎樣開(kāi)啟更新日志。您肯定不想不可挽回地丟失一個(gè)表,因此,應(yīng)努力地做備份。
在使用myisamchk 或isamchk 檢查或修復(fù)表之前,應(yīng)該滿足一些初步需求:
建立常規(guī)的數(shù)據(jù)庫(kù)備份過(guò)程并允許更新日志,以防事情越來(lái)越糟使表的毀壞不能修復(fù)。筆者好像在以前提醒過(guò)這一點(diǎn)?
在開(kāi)始試驗(yàn)之前應(yīng)先仔細(xì)地閱讀本章的內(nèi)容。尤其是不應(yīng)該在閱讀“避免與MySQL數(shù)據(jù)庫(kù)表服務(wù)器交互作用”之前進(jìn)行操作,因?yàn)樗鼘⒂懻摦?dāng)您試圖在一個(gè)表上執(zhí)行檢查或修復(fù)過(guò)程時(shí)服務(wù)器正在使用這個(gè)表所引起的問(wèn)題。它還討論怎樣在服務(wù)器運(yùn)行時(shí)防止那些問(wèn)題發(fā)生。
當(dāng)運(yùn)行表檢查或修復(fù)時(shí),您應(yīng)該被注冊(cè)在運(yùn)行MySQL(和PHP搭配之最佳組合)的賬號(hào)下,因?yàn)槟枰獙?duì)表文件讀寫(xiě)訪問(wèn)。
myisamchk 和isamchk 的調(diào)用語(yǔ)法
MySQL(和PHP搭配之最佳組合)的myisamchk 和isamchk 實(shí)用程序很類似,多數(shù)時(shí)候它們可以用同樣的方式使用。它們之間的主要區(qū)別是它們所使用的表的類型。對(duì)于MyISAM 表,使用my i s a m c h k,而對(duì)于ISAM 表,則使用i s a m c h k。您可以通過(guò)表的索引文件的擴(kuò)展名來(lái)告訴表使用哪種存儲(chǔ)格式。擴(kuò)展名“. M Y I”表明是一個(gè)MyISAM 表,而“. I S M”表明是ISAM 表。
為了使用任一個(gè)實(shí)用程序,應(yīng)指明您所要檢查或修復(fù)的表,以及指明要執(zhí)行的操作類型的選項(xiàng):
% myisamchk options tbl_name...
% isamchk options tbl_name...
tbl_name 參數(shù)可以是表名也可以是該表的索引文件名。如果指定多個(gè)表,可以很容易地使用文件名模式來(lái)拾取目錄中所有相應(yīng)的文件:
% myisamchk options *.MYI
% isamchk options *.ISM
不會(huì)因?yàn)楦嬖V了錯(cuò)誤的程序來(lái)檢查某個(gè)表而使該表毀壞,但是除了發(fā)布一條警告消息外此程序不做任何事情。例如,下面的第一條語(yǔ)句將檢查當(dāng)前目錄中的所有MyISAM 表,而第二條語(yǔ)句只顯示一條警告消息:
% myisamchk *.MYI 正確
% myisamchk *.ISM 不正確─文件類型錯(cuò)
不論是myisamchk 還是isamchk 都不對(duì)表所在的位置做任何判斷,因此,應(yīng)該或者在包含表文件的目錄中運(yùn)行程序,或者指定表的路徑名。這允許您將表文件拷貝到另一個(gè)目錄中并用該拷貝進(jìn)行操作。
檢查表
myisamchk 和isamchk 提供了表檢查方法,這些方法在徹底檢查表的程度方面有差異。通常用標(biāo)準(zhǔn)方法就足夠了。如果標(biāo)準(zhǔn)檢查報(bào)告沒(méi)有發(fā)現(xiàn)錯(cuò)誤而您仍然懷疑有毀壞(或許因?yàn)椴樵儧](méi)有正常地工作),可能要執(zhí)行更徹底的檢查。要想用任意一個(gè)實(shí)用程序執(zhí)行標(biāo)準(zhǔn)的表檢查,則不用帶任何選項(xiàng)直接調(diào)用即可:
% myisamchk tbl_name
% isamchk tbl_name
為了執(zhí)行擴(kuò)充檢查,使用--extend-check 選項(xiàng)。該選項(xiàng)非常慢,但檢查極為徹底。對(duì)于該表的數(shù)據(jù)文件中的每個(gè)記錄,索引文件中的每個(gè)索引的相關(guān)鍵都被檢查以確保它真正指向正確的記錄。myisamchk 還有一個(gè)中間選項(xiàng)- - m e d i um - c h e c k,它不如擴(kuò)展檢查徹底,但速度快。
如果對(duì)于--extend-check 檢查不報(bào)告錯(cuò)誤,則可以肯定表是好的。如果您仍然感覺(jué)表有問(wèn)題,那原因肯定在其他地方。應(yīng)重新檢查任何好像有問(wèn)題的查詢以驗(yàn)證查詢是正確書(shū)寫(xiě)的。如果您認(rèn)為問(wèn)題可能是MySQL數(shù)據(jù)庫(kù)表服務(wù)器的原因,應(yīng)考慮整理一份故障報(bào)告或升級(jí)到新的版本上。
如果myisamchk 或isamchk 報(bào)告表有錯(cuò)誤,應(yīng)用下節(jié)中的說(shuō)明修復(fù)它們。
修復(fù)表
表的修復(fù)是一項(xiàng)可怕的工作,如果具體問(wèn)題非常獨(dú)特則更難進(jìn)行。然而,有一些常規(guī)的指導(dǎo)思想和過(guò)程,可以遵循它們來(lái)增加修正表的機(jī)會(huì)。通常,開(kāi)始時(shí)可以用最快的修復(fù)方法,看看是否能修正故障。如果發(fā)現(xiàn)不行的話,可以逐步升級(jí)到更徹底的(但更慢的)修復(fù)方法上,直到故障被修復(fù)或您不能繼續(xù)升級(jí)為止(實(shí)際上,大多數(shù)問(wèn)題不用更大規(guī)模的和更慢的方法就能修正)。如果表不能修復(fù),則從備份中恢復(fù)該表。有關(guān)使用備份文件和更新日志進(jìn)行恢復(fù)的指導(dǎo)在已第11章中給出。
1. 執(zhí)行標(biāo)準(zhǔn)的表修復(fù)
為了修復(fù)一個(gè)表,執(zhí)行下列步驟:
1) 試著用--recover 選項(xiàng)修正表,但也可以用--quick 選項(xiàng)試圖只根據(jù)索引文件的內(nèi)容進(jìn)行恢復(fù)。這樣將不觸及數(shù)據(jù)文件:
% myisamchk --recover --quick tbl_name
% isamchk --recover --quick tbl_name
2) 如果問(wèn)題仍存在,再試一下上一步的命令,但忽略--quick 選項(xiàng),以允許my i s a m c h k或isamchk 前進(jìn)并修改數(shù)據(jù)文件:
% myisamchk --recover tbl_name
% isamchk --recover tbl_name
3) 如果還不工作,試一試--safe-recover 修復(fù)方法。這種方法比普通的恢復(fù)方法要慢,但能夠修正-recover 方法不能修正的幾個(gè)問(wèn)題:
% myisamchk --safe-recover tbl_name
% isamchk --safe-recover tbl_name
如果myisamchk 或isamchk 由于一個(gè)“C a n’t create new temp file: file_name” 的錯(cuò)誤消息在任何一步中停止,應(yīng)該重復(fù)這個(gè)命令并增加--force 選項(xiàng)以迫使清除臨時(shí)文件。這個(gè)臨時(shí)文件可能是從上一次失敗的修復(fù)中留下的。
在修復(fù)表之前拷貝它們?cè)趫?zhí)行表修復(fù)前應(yīng)該遵循的一個(gè)常規(guī)的預(yù)防措施是做該表的新拷貝。這種情況未必出現(xiàn),但如果發(fā)生,則可以從拷貝文件中做該表的新的拷貝并試試另一種恢復(fù)方法。
2. 標(biāo)準(zhǔn)表修復(fù)方法失敗時(shí)怎么辦
如果標(biāo)準(zhǔn)的修復(fù)過(guò)程未能修復(fù)表,則索引文件可能在修復(fù)時(shí)丟失或毀壞。盡管未必可能,但還是有可能使表的描述文件丟失。不論哪種情況,都需要替換受影響的文件,然后再試試標(biāo)準(zhǔn)修復(fù)過(guò)程。
為了重新生成索引文件,可以使用下列過(guò)程:
1) 定位到包含崩潰表的數(shù)據(jù)庫(kù)目錄中。
2) 將該表的數(shù)據(jù)文件移到安全的地方。
3) 調(diào)用MySQL(和PHP搭配之最佳組合)并通過(guò)執(zhí)行下列語(yǔ)句重新創(chuàng)建新的空表,該語(yǔ)句使用表的描述文件tbl_name.frm 重新開(kāi)始生成新的數(shù)據(jù)和索引文件:
MySQL(和PHP搭配之最佳組合)> DELETE FROM tbl_name;
4) 退出MySQL(和PHP搭配之最佳組合),將原始的數(shù)據(jù)文件移回到數(shù)據(jù)庫(kù)目錄中,替換剛建立的新的空文件。
5) 再試試標(biāo)準(zhǔn)表修復(fù)方法。
為了恢復(fù)該表的描述文件,可先從備份文件中恢復(fù),然后再試著用標(biāo)準(zhǔn)修復(fù)方法。如果由于某些原因沒(méi)有備份,但知道建立表的CREATE TABLE 語(yǔ)句,則仍可以恢復(fù)該文件:
1) 定位到包含崩潰表的數(shù)據(jù)庫(kù)目錄中。
2) 將該表的數(shù)據(jù)文件移動(dòng)到安全的地方。如果想要使用索引的話,還需將索引文件移走。
3) 調(diào)用MySQL(和PHP搭配之最佳組合)并發(fā)布CREATE TABLE 語(yǔ)句建立該表。
4) 退出MySQL(和PHP搭配之最佳組合),將原始數(shù)據(jù)文件移回?cái)?shù)據(jù)庫(kù)目錄中,替換剛才新建的數(shù)據(jù)文件。如果在步驟2移動(dòng)了索引文件,則也要將其移回?cái)?shù)據(jù)庫(kù)目錄中。
5) 再試試標(biāo)準(zhǔn)表修
以上的相關(guān)內(nèi)容就是對(duì)檢查和維護(hù)MySQL數(shù)據(jù)庫(kù)表的介紹,望你能有所收獲。
【編輯推薦】
◆網(wǎng)管軟件專區(qū)
◆網(wǎng)絡(luò)管理者最易犯的十大低級(jí)錯(cuò)誤
◆網(wǎng)絡(luò)管理基礎(chǔ)知識(shí):網(wǎng)路管理模式
◆學(xué)習(xí)高效網(wǎng)絡(luò)管理技巧三招五式
◆IT運(yùn)維管理專區(qū)
- 1重慶OA快博
- 2北京OA快博
- 3深圳OA快博
- 4南京OA快博
- 5南昌OA快博
- 6長(zhǎng)沙OA快博
- 7廈門(mén)OA快博
- 8杭州OA快博
- 9上海OA快博
- 10石家莊OA快博
- 11沈陽(yáng)OA快博
- 12福州OA快博
- 1對(duì)泛普OA軟件來(lái)說(shuō),他們這個(gè)冬天真的不冷
- 2詳述企業(yè)運(yùn)用分布式網(wǎng)絡(luò)管理的優(yōu)勢(shì)
- 3自動(dòng)離職和辭職的區(qū)別有哪些
- 4破解無(wú)線網(wǎng)絡(luò)密碼軟件使用技巧
- 5Linux系統(tǒng)運(yùn)維關(guān)于route命令的詳解
- 6遠(yuǎn)程桌面服務(wù)的訪問(wèn)步驟及使用說(shuō)明
- 7優(yōu)質(zhì)服務(wù)年工作總結(jié)怎么寫(xiě)
- 8網(wǎng)絡(luò)管理經(jīng)驗(yàn)之談:杜絕路由器假死
- 9網(wǎng)絡(luò)管理專家:過(guò)濾設(shè)備防護(hù)網(wǎng)絡(luò)安全
- 10琿春市城市美化亮化工程卓有成效
- 11協(xié)同OA辦公軟件系統(tǒng)單個(gè)項(xiàng)目實(shí)施進(jìn)度表V1.0
- 12網(wǎng)絡(luò)維護(hù)管理:路由協(xié)議故障的處理技巧
- 13網(wǎng)絡(luò)監(jiān)控原理與技術(shù)實(shí)現(xiàn)
- 14操作系統(tǒng)安裝能全自動(dòng)化進(jìn)行的方法
- 15緩解過(guò)度亮化 城市該學(xué)會(huì)“熄燈”
- 16大型校園無(wú)線網(wǎng)如何進(jìn)行網(wǎng)絡(luò)管理
- 17政府網(wǎng)絡(luò)管理維護(hù)技巧實(shí)例解析
- 18OA辦公自動(dòng)化系統(tǒng)實(shí)現(xiàn)了一鍵式自動(dòng)安裝
- 19哪些企業(yè)適合實(shí)施CRM,請(qǐng)舉一些實(shí)例!
- 20霓虹閃爍夜色璀璨 市民點(diǎn)贊滕州城市亮化工程
- 21埃森哲的待遇如何
- 22配置CesarFTP服務(wù)器實(shí)例操作解析
- 23IT運(yùn)維管理技巧:優(yōu)化網(wǎng)絡(luò)防止阻塞
- 24扶溝縣供電公司:維修路燈 亮化城市
- 25重慶泛普OA軟件系統(tǒng)協(xié)同辦公系統(tǒng)是一個(gè)綜合性的信息系統(tǒng)
- 26OA系統(tǒng)、ERP軟件系統(tǒng)、CRM等新浪、IT信息網(wǎng)站、等等,軟文推廣
- 27國(guó)內(nèi)做OA系統(tǒng)最好的公司準(zhǔn)備發(fā)布權(quán)威新聞門(mén)戶發(fā)布
- 28重慶OA軟件開(kāi)發(fā)公司最好的是哪家?
- 29網(wǎng)絡(luò)運(yùn)維管理:如何增強(qiáng)遠(yuǎn)程控制安全策略
- 30泛普專注OA軟件、所以專業(yè),他們獲得了重慶OA軟件市場(chǎng)大半壁江山
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓