濮阳杆衣贸易有限公司

主頁 > 知識庫 > mysql innodb 異常修復經驗分享

mysql innodb 異常修復經驗分享

熱門標簽:智能電銷機器人靠譜么 昆明智能外呼系統(tǒng)中心 手機用地圖標注工具 南宋地圖標注黃河華山 地圖標注培訓 電銷機器人說明書 長安區(qū)違法建房地圖標注 電銷機器人公眾號推送 安國在哪里辦理400電話

一套測試用的mysql庫,之前用的centos6默認源里的mysql 5.1.71的版本 。后來想試用下Percona server 5.7,由于這套庫里沒有什么重要數據 。所以操作前也未進行備份,配置好源后,直接就進行了安裝。數據文件也存放在默認位置,安裝完成后,直接啟動mysql,發(fā)現啟動失敗,發(fā)現無法啟動正常啟動。

一、回退重新裝mysql

為避免再從其他地方導入這個數據的麻煩,先對當前庫的數據庫文件做了個備份(/var/lib/mysql/位置)。接下來將Percona server 5.7包進行了卸載,重新安裝原先老的5.1.71的包,啟動mysql服務,提示Unknown/unsupported table type: innodb,無法正常啟動。

110509 12:04:27 InnoDB: Initializing buffer pool, size = 384.0M
110509 12:04:27 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 157286400 bytes!
110509 12:04:27 [ERROR] Plugin 'InnoDB' init function returned error.
110509 12:04:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
110509 12:04:27 [ERROR] Unknown/unsupported table type: innodb
110509 12:04:27 [ERROR] Aborting
110509 12:04:27 [Note] /usr/sbin/mysqld: Shutdown complete

刪除/var/lib/mysql/目錄,重新啟動數據庫服務,并初始化,發(fā)現正常,show engines能發(fā)現有innodb引擎。再將數據庫停掉,將之前備份的/var/lib/mysql/目錄的內容覆蓋當前位置的內容,重啟。又發(fā)現不能進行啟動,報錯內容和剛剛一樣。

/var/lib/mysql目錄內容的結構如下:

-rw-rw---- 1 mysql mysql 10485760 2月  26 18:10 ibdata1
-rw-rw---- 1 mysql mysql 5242880 2月  26 18:10 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 2月  26 17:20 ib_logfile1
drwx------ 2 mysql mysql   4096 2月  26 17:20 mysql
drwx------ 2 mysql mysql   4096 2月 26 17:24 wiki

wiki目錄是測試數據的庫,ibdata1文件為數據文件,ib開頭的兩個文件為日志文件,mysql 目錄下為系統(tǒng)庫相關的東西 。再次使用初始化的數據,并將wiki目錄和ibdata1文件覆蓋到/var/lib/mysql 目錄下,可以正常啟動,也可以正常登錄。

二、innodb模塊重裝

不過在通過mysqldump備份時,又提示unknow table engine "Innodb" 。登錄后,查看當前所有的引擎類型,發(fā)現其中果然不存在innodb類型:

通過alter命令修改其中一個表的類型為MyISAM ,發(fā)現仍然報錯。

通過 find 查找發(fā)現/usr/lib64/mysql/plugin/目錄下有ha_innodb_plugin.so文件。印象中mysql5以后的版本支持在線插件安裝 。通過下面查看確認,果然支持:

使用如下命令加載時,發(fā)現不成功:

install plugin innodb soname 'ha_innodb.so';

三、備份

在/etc/my.cnf中增加如下配置:

plugin-load=innodb=ha_innodb_plugin.so
plugin_dir=/usr/lib64/mysql/plugin/
default-storage-engine=InnoDB 

發(fā)現仍啟動失敗。查看mysql-error.log發(fā)現有如下內容:

InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 7.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html

打開forcing-innodb-recovery官方頁面,發(fā)現可以通過指定innodb_force_recovery參數,進行強制啟動和恢復。在/etc/my.cnf中增加如下內容:

innodb_force_recovery=6

重新啟動成功了。通過mysqldump備份也沒有問題,將備份數據導入其他主機發(fā)現也正常可以測試。

這下就好搞了,將mysql徹底刪除,重新安裝Percona server 5.7,安裝完后,建庫,還原數據,程序重新連接,一切OK。

總結:

由于mysql innodb數據文件的特性,可以在出現問題,無法正常啟動時,先將./ib_logfile0 和 ./ib_logfile1 兩個日志文件先移走,再啟動,如果還不成功,可以用innodb_force_recovery參數進行強制恢復。除此之外,日志也很重啟,有問題先看日志。

您可能感興趣的文章:
  • MySQL 查看鏈接及殺掉異常鏈接的方法
  • MySQL手動注冊binlog文件造成主從異常的原因
  • MySQL數據庫連接異常匯總(值得收藏)
  • mysql5.7.21啟動異常的修復方法
  • MySQL定義異常和異常處理詳解
  • MySQL存儲過程中一些基本的異常處理教程
  • 分析一個MySQL的異常查詢的案例
  • MySQL異常處理淺析
  • 分析MySQL拋出異常的幾種常見解決方式

標簽:東莞 合肥 潛江 長沙 江門 南昌 吉安 武漢

巨人網絡通訊聲明:本文標題《mysql innodb 異常修復經驗分享》,本文關鍵詞  mysql,innodb,異常,修復,經驗,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql innodb 異常修復經驗分享》相關的同類信息!
  • 本頁收集關于mysql innodb 異常修復經驗分享的相關信息資訊供網民參考!
  • 推薦文章
    上饶县| 洛南县| 读书| 德格县| 玛纳斯县| 乌苏市| 靖远县| 濉溪县| 高唐县| 江山市| 天柱县| 塔河县| 若羌县| 汉沽区| 定襄县| 喀喇沁旗| 凤凰县| 达孜县| 福海县| 潢川县| 南郑县| 松阳县| 遵化市| 稻城县| 永寿县| 谢通门县| 称多县| 延寿县| 家居| 惠安县| 瑞安市| 专栏| 原阳县| 富锦市| 突泉县| 白城市| 乡城县| 门源| 渝北区| 永年县| 大安市|