日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

解决数据库 Table 'content_tags' is marked as crashed and should be repaired 表损坏问题

發(fā)布時(shí)間:2024/4/17 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决数据库 Table 'content_tags' is marked as crashed and should be repaired 表损坏问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ?今天突然網(wǎng)站TAG頁(yè)面打不開了,打開debug,發(fā)現(xiàn)提示
??

Table 'content_tags' is marked as crashed and should be repaired

? 這樣的錯(cuò)誤

?

?問(wèn)題分析:

? ? ? 出現(xiàn)這個(gè)提示,說(shuō)明 ‘%s ’ 表?yè)p壞,可能是非正常關(guān)機(jī)造成的,需要修復(fù)一下就可以了。

解決方法:

REPAIR TABLE `content_tags`


也可以用myisamchk 來(lái)修復(fù)。
初步估計(jì)可能是索引重建的時(shí)候除了問(wèn)題,
至此,問(wèn)題解決!

PS:一些其他問(wèn)題收集

階段1 :檢查你的表



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


如果mysqld 服務(wù)器處于宕機(jī)狀態(tài),應(yīng)使用--update-state 選項(xiàng)來(lái)告訴myisamchk 將表標(biāo)記為' 檢查過(guò)的' 。


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


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


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



注釋:如果想更快地進(jìn)行修復(fù),當(dāng)運(yùn)行myisamchk 時(shí),你應(yīng)將sort_buffer_size 和Key_buffer_size 變量的值設(shè)置為可用內(nèi)存的大約25% 。


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


在繼續(xù)前對(duì)數(shù)據(jù)文件進(jìn)行備份。


使用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 :困難的修復(fù)



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


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


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


shell> mysql db_name


mysql> SET AUTOCOMMIT=1;


mysql> TRUNCATE TABLE tbl_name;


mysql> quit


如果你的MySQL 版本沒有TRUNCATE TABLE ,則使用DELETE FROM tbl_name 。


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


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


你還可以使用REPAIR TABLE tbl_name USE_FRM ,將自動(dòng)執(zhí)行整個(gè)程序。


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



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


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


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


InnoDB 表可以采用下面的方法修復(fù):



如果數(shù)據(jù)庫(kù)頁(yè)被破壞,你可能想要用SELECT INTO OUTFILE 從從數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)你的表,通常以這種方法獲取的大多數(shù)數(shù)據(jù)是完好的。即使這樣,損壞可能導(dǎo)致SELECT * FROM tbl_name 或者InnoDB 后臺(tái)操作崩潰或斷言,或者甚至使得InnoDB 前滾恢復(fù)崩潰。 盡管如此,你可以用它來(lái)強(qiáng)制InnoDB 存儲(chǔ)引擎啟動(dòng)同時(shí)阻止后臺(tái)操作運(yùn)行,以便你能轉(zhuǎn)儲(chǔ)你的表。例如:你可以在重啟服務(wù)器之前,在選項(xiàng)文件的[mysqld] 節(jié)添加如下的行:?
? ? [mysqld]innodb_force_recovery = 4innodb_force_recovery 被允許的非零值如下。一個(gè)更大的數(shù)字包含所有更小數(shù)字的預(yù)防措施。如果你能夠用一個(gè)多數(shù)是4 的選項(xiàng)值來(lái)轉(zhuǎn)儲(chǔ)你的表,那么你是比較安全的,只有一些在損壞的單獨(dú)頁(yè)面上的數(shù)據(jù)會(huì)丟失。一個(gè)為6 的值更夸張,因?yàn)閿?shù)據(jù)庫(kù)頁(yè)被留在一個(gè)陳舊的狀態(tài),這個(gè)狀態(tài)反過(guò)來(lái)可以引發(fā)對(duì)B 樹和其它數(shù)據(jù)庫(kù)結(jié)構(gòu)的更多破壞。?
? ? 1 (SRV_FORCE_IGNORE_CORRUPT)?
即使服務(wù)器檢測(cè)到一個(gè)損壞的頁(yè),也讓服務(wù)器運(yùn)行著;試著讓SELECT * FROM tbl_name 跳過(guò)損壞的索引記錄和頁(yè),這樣有助于轉(zhuǎn)儲(chǔ)表。


2 (SRV_FORCE_NO_BACKGROUND)?
阻止主線程運(yùn)行,如果崩潰可能在凈化操作過(guò)程中發(fā)生,這將阻止它。?
? ? 3 (SRV_FORCE_NO_TRX_UNDO)?
恢復(fù)后不運(yùn)行事務(wù)回滾。?
? ? 4 (SRV_FORCE_NO_IBUF_MERGE)?
也阻止插入緩沖合并操作。如果你可能會(huì)導(dǎo)致一個(gè)崩潰。最好不要做這些操作,不要計(jì)算表統(tǒng)計(jì)表。?
? ? 5 (SRV_FORCE_NO_UNDO_LOG_SCAN)?
啟動(dòng)數(shù)據(jù)庫(kù)之時(shí)不查看未完成日志:InnoDB 把未完成的事務(wù)視為已提交的。?
? ? 6 (SRV_FORCE_NO_LOG_REDO)?
不要在恢復(fù)連接中做日志前滾。?
? ? 數(shù)據(jù)庫(kù)不能另外地帶著這些選項(xiàng)中被允許的選項(xiàng)來(lái)使用。作為一個(gè)安全措施,當(dāng)innodb_force_recovery 被設(shè)置為大于0 的值時(shí),InnoDB 阻止用戶執(zhí)行INSERT, UPDATE 或DELETE 操作.?
? ? 即使強(qiáng)制恢復(fù)被使用,你也可以DROP 或CREATE 表。如果你知道一個(gè)給定的表正在導(dǎo)致回滾崩潰,你可以移除它。你也可以用這個(gè)來(lái)停止由失敗的大宗導(dǎo)入或失敗的ALTER TABLE 導(dǎo)致的失控回滾。你可以殺掉mysqld 進(jìn)程,然后設(shè)置innodb_force_recovery 為3 ,使得數(shù)據(jù)庫(kù)被掛起而不需要回滾,然后舍棄導(dǎo)致失控回滾的表。

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/dyllove98/p/3241632.html

總結(jié)

以上是生活随笔為你收集整理的解决数据库 Table 'content_tags' is marked as crashed and should be repaired 表损坏问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。