真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何進(jìn)行MySQL修復(fù)表的簡(jiǎn)單分析

如何進(jìn)行MySQL修復(fù)表的簡(jiǎn)單分析,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

創(chuàng)新互聯(lián)是專(zhuān)業(yè)的米林網(wǎng)站建設(shè)公司,米林接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行米林網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

今天有個(gè)同事問(wèn)我一個(gè)數(shù)據(jù)庫(kù)的問(wèn)題,如果開(kāi)始他就把環(huán)境細(xì)節(jié)全都告訴我,可能我就知難而退了。等我大體明白了問(wèn)題之后,發(fā)現(xiàn)好像背景比我想的要復(fù)雜多了。這是一個(gè)遠(yuǎn)程云主機(jī)環(huán)境,windows系統(tǒng),運(yùn)行著MySQL,在查詢(xún)表時(shí)出現(xiàn)了問(wèn)題,而且開(kāi)發(fā)同事經(jīng)過(guò)了repair也沒(méi)有修復(fù),說(shuō)會(huì)卡住沒(méi)有響應(yīng)。

當(dāng)然費(fèi)了一點(diǎn)功夫,好容易連接到了這臺(tái)云主機(jī),發(fā)現(xiàn)問(wèn)題似乎比我想的還要復(fù)雜一些。當(dāng)然這是一個(gè)內(nèi)部某一個(gè)團(tuán)隊(duì)使用的一個(gè)環(huán)境,可能是確實(shí)需要用到環(huán)境,大家才不得不想辦法修復(fù)。

    環(huán)境是MySQL 5.5版本,查看后臺(tái)日志發(fā)現(xiàn)從8月份就開(kāi)始有錯(cuò)誤了,錯(cuò)誤信息如下:

161018 11:15:35 [ERROR] D:\websoft\mysql\bin\mysqld: Table '.\utestdb\test_forum_post' is marked as crashed and should be repaired
161018 11:15:36 [ERROR] D:\websoft\mysql\bin\mysqld: Table '.\utestdb\test_forum_post' is marked as crashed and should be repaired而且看日志損壞的還不止一張表,我的注意力暫時(shí)先放在了出錯(cuò)的表上。

如果使用show create table  test_forum_post或者desc test_forum_post都會(huì)拋出錯(cuò)誤。

mysql> show create table test_forum_post;
ERROR 145 (HY000): Table '.\utestdb\test_forum_post' is marked as crashed and should be repaired

更讓我有些膽戰(zhàn)心驚的是,我可以從后臺(tái)的日志看到開(kāi)發(fā)同事也嘗試了多次重啟MySQL服務(wù)。但是問(wèn)題始終存在。

show create table 得不到信息,而show table status得到的信息也很有限,因?yàn)榇藭r(shí)的存儲(chǔ)引擎顯示為NULL


他們用的是MyISAM,查看了其它所有的表的存儲(chǔ)引擎,發(fā)現(xiàn)清一色都是MyISAM.所以我就可以基本斷定這個(gè)出問(wèn)題的表也是MyISAM

對(duì)于MyISAM表修復(fù),可以用myisamchk來(lái)做或者使用repair的方式都可以,當(dāng)然發(fā)現(xiàn)又是碰到不少問(wèn)題。

D:\websoft\mysql\bin>myisamchk.exe -of ..\data\utestdb\test_forum_post.MYI
這個(gè)命令運(yùn)行下去,竟然彈出了一個(gè)窗口顯示程序崩潰,反復(fù)嘗試都是如此。

使用repair命令來(lái)看,發(fā)現(xiàn)遲遲沒(méi)有返回,果斷停止。

肯定是哪里漏掉了,我重新翻過(guò)頭來(lái)梳理問(wèn)題。

查看日志發(fā)現(xiàn)之前有下面的一些輸出,看起來(lái)是磁盤(pán)空間的問(wèn)題。

161219 18:07:09 [Warning] Disk is full writing '.\distoon\pre_common_block.TMD' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space)
161219 18:07:09 [Warning] Retry in 60 secs. Message reprinted in 600 secs
161219 18:07:18 [ERROR] D:\websoft\mysql\bin\mysqld: Table '.\utestdb\test_forum_post' is marked as crashed and should be repaired

經(jīng)過(guò)確認(rèn)發(fā)現(xiàn)確實(shí)是磁盤(pán)空間導(dǎo)致,他們馬上清理預(yù)留出一些空間,然后讓我繼續(xù)幫忙修復(fù),再次嘗試就沒(méi)有問(wèn)題了。

先使用-of選項(xiàng)

D:\websoft\mysql\bin>myisamchk.exe -of ..\data\utestdb\test_forum_post.MYI
- recovering (with keycache) MyISAM-table '..\data\utestdb\test_forum_post.MYI'
Data records: 0
Data records: 55311

接著使用-r選項(xiàng)修復(fù)

D:\websoft\mysql\bin>myisamchk.exe -r ..\data\utestdb\test_forum_post.MYI
- recovering (with sort) MyISAM-table '..\data\utestdb\test_forum_post.MYI'
Data records: 55311
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4
- Fixing index 5
- Fixing index 6
- Fixing index 7
- Fixing index 8

最后匯總檢查

D:\websoft\mysql\bin>myisamchk.exe  ..\data\utestdb\test_forum_post.MYI
Checking MyISAM file: ..\data\utestdb\test_forum_post.MYI
Data records:   55311   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check data record references index: 4
- check data record references index: 5
- check data record references index: 6
- check data record references index: 7
- check data record references index: 8
- check record links再次查看問(wèn)題就不存在了。

當(dāng)然如果嘗試使用repair也是可行的,比如修復(fù)表pre_common_member,輸出如下:

mysql> repair table pre_common_member;
+----------------------------+--------+----------+----------+
| Table                      | Op     | Msg_type | Msg_text |
+----------------------------+--------+----------+----------+
| utestdb.pre_common_member | repair | status   | OK       |
+----------------------------+--------+----------+----------+
1 row in set (1.64 sec)

為了把問(wèn)題補(bǔ)充全面一些,我把問(wèn)題略微改動(dòng)下,即 使用myisamchk工具和check/repair命令有什么區(qū)別呢.

首先myisamchk和repair只能修復(fù)MyISAM表,相比來(lái)說(shuō),myisamchk的輸出信息要更詳細(xì)一些,優(yōu)化,分析表的信息都會(huì)輸出,repair則比較直接,repair無(wú)法修復(fù)InnoDB的表,否則會(huì)報(bào)出如下的錯(cuò)誤。

The storage engine for the table doesn't support repair

check則同時(shí)支持MyISAM表和InnoDB表

其次myisamchk操作myisam表時(shí)必須保證表不能被使用,check/repair則可以在線(xiàn)操作。

看完上述內(nèi)容,你們掌握如何進(jìn)行MySQL修復(fù)表的簡(jiǎn)單分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)頁(yè)名稱(chēng):如何進(jìn)行MySQL修復(fù)表的簡(jiǎn)單分析
文章來(lái)源:http://weahome.cn/article/jsgjih.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部