關于mysql innodb啟動失敗無法重啟的處理方法講解

電腦在使用過程中死機,重啟后發現mysql沒有啟動成功,查看錯誤日志發現是innodb出現問題導致mysql啟動失敗。

錯誤日志

$?mysql.server?start Starting?MySQL .?ERROR!?The?server?quit?without?updating?PID?file?(/usr/local/var/mysql/fdipzonedeMacBook-Air.local.pid).22:08:37?mysqld_safe?Starting?mysqld?daemon?with?databases?from?/usr/local/var/mysql2016-04-23?22:08:38?0?[Warning]?TIMESTAMP?with?implicit?DEFAULT?value?is?deprecated.?Please?use?--explicit_defaults_for_timestamp?server?option?(see?documentation?for?more?details).2016-04-23?22:08:38?0?[Note]?/usr/local/Cellar/mysql/5.6.24/bin/mysqld?(mysqld?5.6.24)?starting?as?process?3604?...2016-04-23?22:08:38?3604?[Warning]?Setting?lower_case_table_names=2?because?file?system?for?/usr/local/var/mysql/?is?case?insensitive2016-04-23?22:08:38?3604?[Note]?Plugin?'FEDERATED'?is?disabled.2016-04-23?22:08:38?3604?[Note]?InnoDB:?Using?atomics?to?ref?count?buffer?pool?pages2016-04-23?22:08:38?3604?[Note]?InnoDB:?The?InnoDB?memory?heap?is?disabled2016-04-23?22:08:38?3604?[Note]?InnoDB:?Mutexes?and?rw_locks?use?GCC?atomic?builtins2016-04-23?22:08:38?3604?[Note]?InnoDB:?Memory?barrier?is?not?used2016-04-23?22:08:38?3604?[Note]?InnoDB:?Compressed?tables?use?zlib?1.2.32016-04-23?22:08:38?3604?[Note]?InnoDB:?Using?CPU?crc32?instructions2016-04-23?22:08:38?3604?[Note]?InnoDB:?Initializing?buffer?pool,?size?=?128.0M2016-04-23?22:08:38?3604?[Note]?InnoDB:?Completed?initialization?of?buffer?pool2016-04-23?22:08:38?3604?[Note]?InnoDB:?Highest?supported?file?format?is?Barracuda.2016-04-23?22:08:38?3604?[Note]?InnoDB:?Log?scan?progressed?past?the?checkpoint?lsn?689299334402016-04-23?22:08:38?3604?[Note]?InnoDB:?Database?was?not?shutdown?normally!2016-04-23?22:08:38?3604?[Note]?InnoDB:?Starting?crash?recovery.2016-04-23?22:08:38?3604?[Note]?InnoDB:?Reading?tablespace?information?from?the?.ibd?files...2016-04-23?22:08:38?3604?[ERROR]?InnoDB:?checksum?mismatch?in?tablespace?./test_user/user_recommend_code#P#pmax.ibd?(table?test_user/user_recommend_code#P#pmax)2016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:1024?Pages?to?analyze:642016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:?1024,?Possible?space_id?count:02016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:2048?Pages?to?analyze:482016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:?2048,?Possible?space_id?count:02016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:4096?Pages?to?analyze:242016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:?4096,?Possible?space_id?count:02016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:8192?Pages?to?analyze:122016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:?8192,?Possible?space_id?count:02016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:16384?Pages?to?analyze:62016-04-23?22:08:38?3604?[Note]?InnoDB:?VALID:?space:2947354?page_no:3?page_size:163842016-04-23?22:08:38?3604?[Note]?InnoDB:?Page?size:?16384,?Possible?space_id?count:12016-04-23?22:08:38?3604?[Note]?InnoDB:?space_id:2947354,?Number?of?pages?matched:?1/1?(16384)2016-04-23?22:08:38?3604?[Note]?InnoDB:?Chosen?space:29473542016-04-23?22:08:38?3604?[Note]?InnoDB:?Restoring?page?0?of?tablespace?29473542016-04-23?22:08:38?3604?[Warning]?InnoDB:?Doublewrite?does?not?have?page_no=0?of?space:?29473542016-04-23?22:08:38?7fff79b9e300??InnoDB:?Operating?system?error?number?2?in?a?file?operation. InnoDB:?The?error?means?the?system?cannot?find?the?path?specified. InnoDB:?If?you?are?installing?InnoDB,?remember?that?you?must?create InnoDB:?directories?yourself,?InnoDB?does?not?create?them. InnoDB:?Error:?could?not?open?single-table?tablespace?file?./test_user/user_recommend_code#P#pmax.ibdInnoDB:?We?do?not?continue?the?crash?recovery,?because?the?table?may?become InnoDB:?corrupt?if?we?cannot?apply?the?log?records?in?the?InnoDB?log?to?it. InnoDB:?To?fix?the?problem?and?start?mysqld: InnoDB:?1)?If?there?is?a?permission?problem?in?the?file?and?mysqld?cannot InnoDB:?open?the?file,?you?should?modify?the?permissions. InnoDB:?2)?If?the?table?is?not?needed,?or?you?can?restore?it?from?a?backup, InnoDB:?then?you?can?remove?the?.ibd?file,?and?InnoDB?will?do?a?normal InnoDB:?crash?recovery?and?ignore?that?table. InnoDB:?3)?If?the?file?system?or?the?disk?is?broken,?and?you?cannot?remove InnoDB:?the?.ibd?file,?you?can?set?innodb_force_recovery?>?0?in?my.cnf InnoDB:?and?force?InnoDB?to?continue?crash?recovery?here.

解決方法

1.如果數據不重要或已經有備份,只需要恢復mysql啟動

進入mysql目錄,一般是:/usr/local/var/mysql/
刪除ib_logfile*
刪除ibdata*
刪除所有數據庫物理目錄(例如數據庫為test_db,則執行rm -rf test_db)
重啟動mysql
重新建立數據庫或使用備份覆蓋

2.如果數據很重要且沒有備份

可以使用innodb_force_recovery參數,使mysqld跳過恢復步驟,啟動mysqld,將數據導出然后重建數據庫。

innodb_force_recovery 可以設置為1-6,大的數字包含前面所有數字的影響

  1. (SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁。

  2. (SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程需要執行full purge操作,會導致crash。

  3. (SRV_FORCE_NO_TRX_UNDO):不執行事務回滾操作。

  4. (SRV_FORCE_NO_IBUF_MERGE):不執行插入緩沖的合并操作。

  5. (SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日志,InnoDB存儲引擎會將未提交的事務視為已提交。

  6. (SRV_FORCE_NO_LOG_REDO):不執行前滾的操作。

在my.cnf(windows是my.ini)中加入
innodb_force_recovery = 6
innodb_purge_thread = 0

重啟mysql

這時只可以執行select,create,drop操作,但不能執行insert,update,delete操作
執行邏輯導出,完成后將innodb_force_recovery=0,innodb_purge_threads=1,然后重建數據庫,最后把導出的數據重新導入

本文講解了關于mysql innodb啟動失敗無法重啟的處理方法講解,更多相關內容請關注php中文網。

相關推薦:

講解php獲取指定日期的相關內容

講解php獲取指定日期的相關內容

講解php獲取指定日期的相關內容

以上就是關于

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享