MySQL資料庫innodb啟動失敗無法重啟的解決方案_Mysql

來源:互聯網
上載者:User

問題介紹

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

錯誤記錄檔

$ mysql.server startStarting 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 createInnoDB: 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 becomeInnoDB: 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 cannotInnoDB: 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 normalInnoDB: crash recovery and ignore that table.InnoDB: 3) If the file system or the disk is broken, and you cannot removeInnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnfInnoDB: 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=0innodb_purge_threads=1,然後重建資料庫,最後把匯出的資料重新匯入

總結

以上就是這篇文章的全部內容,希望能對大家學習或者使用mysql的時候有所協助,如果有疑問大家可以留言交流,謝謝大家對雲棲社區的支援。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.