校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 解決MySQL數據庫意外崩潰導致表數據文件損壞無法啟動的問題

解決MySQL數據庫意外崩潰導致表數據文件損壞無法啟動的問題

熱門標簽:地圖標注客戶付款 臨沂做地圖標注 宜賓全自動外呼系統廠家 石家莊400電話辦理公司 新鄉智能外呼系統好處 申請400電話電話價格 廣東400企業電話申請流程 咸陽防封電銷卡 許昌外呼增值業務線路

問題故障:

MySQL數據庫意外崩潰,一直無法啟動數據庫。

報錯日志:

啟動報錯:service mysqld restart

ERROR! MySQL server PID file could not be found!
Starting MySQL. ERROR! The server quit without updating PID file (/www/wdlinux/mysql/var/iZ2358oz5deZ.pid).

數據庫error日志:

200719 22:07:43 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 840 of name './ob_wp/ob_termmeta.ibd'
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 840 of name './dev_nss/dg_queue.ibd' already exists in the tablespace
InnoDB: memory cache!
200719 22:07:43 mysqld_safe mysqld from pid file /www/wdlinux/mysql/var/iZ2358oz5deZ.pid ended

提示:數據庫啟動時讀取表空間信息時,ob-wp庫中的表ob_users.ibd表數據文件已存在于表空間中。

拓展:

存儲引擎是myisam, 在數據庫目錄下會看到3類文件:.frm、.myi、.myd
(a) *.frm--表定義,是描述表結構的文件。
(b) *.MYD--"D"數據信息文件,是表的數據文件。
(c) *.MYI--"I"索引信息文件,是表數據文件中任何索引的數據樹
存儲引擎是InnoDB, 在data目錄下會看到2類文件:.frm、.ibd
(a) *.frm--表結構的文件。
(b) *.ibd--表數據文件

出處:https://www.cnblogs.com/liucx/

方法一:

根據提示信息判定該InnoDB表損壞,于是嘗試將dev_nss庫目錄中的表結構和表數據文件備份
mv ob_termmeta.ibd ob_termmeta.ibd,bak
mv ob_termmeta.frm ob_termmeta.frm.bak
然后重啟了下mysql,發現還是無法啟動,提示其他表數據文件已存在,連續3次將已損壞的文件備份,還是無法啟動。故放棄此方法。

方法二:

1.查閱官網文檔,在mysql配置文件中/etc/my.cnf添加配置,成功啟動
[mysqld]
innodb_force_recovery = 1

2.備份數據庫
mysqldump -h172.168.2.100 -uroot -p -A > mysql_all_bak.sql
如遇報表不存在,mysqldump可以添加參數:--force ,跳過錯誤

3.刪除數據庫
drop database hxdb; 或者將數據庫數據庫目錄 mv hxdb hxdb_bak (保險)

4.去掉參數 innodb_force_recovery
將之前設置的參數去掉后,重新啟動數據庫

5.導入數據
mysql -uroot -p mysql_all_bak.sql
Warning: Using a password on the command line interface can be insecure.
ERROR 1050 (42S01) at line 25: Table '`hxdb`.`tb_info`' already exists

如果提示表已經存在,這是因為將innodb_force_recovery參數去掉后,數據庫會進行回滾操作,會生成相應的ibd文件,所以需要將該文件刪除掉,刪除后重新導入
mysql -uroot -p mysql_all_bak.sql

注:

innodb_force_recovery參數解釋:崩潰恢復模式,通常只有在嚴重故障排除情況下才會改變。可以的值是從0到6。

只有在緊急情況下才將這個變量設置為大于0的值,這樣你才能啟動InnoDB并轉儲你的表。作為一種安全措施,當innodb_force_recovery大于0時,InnoDB可以防止插入、更新或刪除操作。
在5.6.15,innodb_force_recovery設置為4或更大,將InnoDB設置為只讀模式。由于relay_log_info_repository=TABLE和master_info_repository=TABLE在InnoDB表中存儲信息,這些限制可能導致復制管理命令失敗并出現錯誤。

innodb_force_recovery默認情況下為0(正常啟動而不強制恢復)。允許的非零值 innodb_force_recovery是1到6。較大的值包括較小值的功能。例如,值3包含值1和2的所有功能。
如果能夠轉儲 innodb_force_recovery值為3或更小的表,則相對安全的是,僅丟失損壞的單個頁面上的某些數據。4或更大的值被認為是危險的,因為數據文件可能會永久損壞。值6被認為是過分的,因為數據庫頁面處于過時狀態,這反過來可能會使B樹 和其他數據庫結構遭受更多破壞。

為了安全起見,請InnoDB防止 INSERT, UPDATE或 DELETE在innodb_force_recovery大于0 時進行操作 。從MySQL 5.6.15開始, 在只讀模式下innodb_force_recovery設置4個或更多位置InnoDB。
1 (SRV_FORCE_IGNORE_CORRUPT)
讓服務器運行,即使它檢測到一個損壞的頁面。嘗試讓SELECT * FROM tbl_name跳過損壞的索引記錄和頁面,這有助于轉儲表。
2 (SRV_FORCE_NO_BACKGROUND)
阻止主線程和任何清除線程運行。如果在清除操作期間發生崩潰,則此恢復值將防止崩潰。
3 (SRV_FORCE_NO_TRX_UNDO)
在崩潰恢復后不運行事務回滾。
4 (SRV_FORCE_NO_IBUF_MERGE)
防止插入緩沖區合并操作。如果它們會導致崩潰,就不要做。不計算表統計信息。此值可能永久損壞數據文件。使用此值后,準備刪除并重新創建所有二級索引。在MySQL 5.6.15中,將InnoDB設置為只讀。
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
啟動數據庫時不要查看撤銷日志:InnoDB甚至會將未完成的事務視為已提交。此值可能永久損壞數據文件。在MySQL 5.6.15中,將InnoDB設置為只讀。
6 (SRV_FORCE_NO_LOG_REDO)
在恢復時不執行重做日志前滾。此值可能永久損壞數據文件。使數據庫頁面處于過時狀態,這反過來可能會給b -樹和其他數據庫結構帶來更多損壞。在MySQL 5.6.15中,將InnoDB設置為只讀。

出處:https://www.cnblogs.com/liucx/

參閱官網:
https://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_force_load_corrupted

希望能幫到你

到此這篇關于MySQL數據庫意外崩潰導致表數據文件損壞無法啟動的問題解決的文章就介紹到這了,更多相關MySQL數據庫意外崩潰導致表數據文件損壞無法啟動的問題解決內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL 利用frm文件和ibd文件恢復表數據
  • MySQL之導出整個及單個表數據的操作
  • MySQL Delete 刪數據后磁盤空間未釋放的原因
  • ubuntu下磁盤空間不足導致mysql無法啟動的解決方法
  • Mysql存儲引擎MyISAM的常見問題(表損壞、無法訪問、磁盤空間不足)
  • lnmp下如何關閉Mysql日志保護磁盤空間
  • 幾個縮減MySQL以節省磁盤空間的建議
  • Mysql InnoDB刪除數據后釋放磁盤空間的方法
  • 為什么MySQL 刪除表數據 磁盤空間還一直被占用

標簽:鎮江 臺灣 日照 鷹潭 貴州 合肥 阜新 北京

巨人網絡通訊聲明:本文標題《解決MySQL數據庫意外崩潰導致表數據文件損壞無法啟動的問題》,本文關鍵詞  解決,MySQL,數據庫,意外,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決MySQL數據庫意外崩潰導致表數據文件損壞無法啟動的問題》相關的同類信息!
  • 本頁收集關于解決MySQL數據庫意外崩潰導致表數據文件損壞無法啟動的問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 织金县| 永宁县| 徐闻县| 航空| 东海县| 黄大仙区| 长丰县| 巴彦淖尔市| 昌都县| 昌邑市| 长顺县| 来安县| 图片| 太原市| 保靖县| 南通市| 东光县| 房产| 平定县| 云安县| 遂溪县| 丹凤县| 易门县| 炉霍县| 崇义县| 女性| 开化县| 靖州| 揭西县| 富锦市| 灵台县| 沙洋县| 黔南| 朝阳市| 西充县| 宁南县| 德安县| 崇州市| 庄浪县| 金昌市| 绥江县|