MySQL數據庫innodb啟動掉敗沒法重啟的處理辦法。本站提示廣大學習愛好者:(MySQL數據庫innodb啟動掉敗沒法重啟的處理辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是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/mysql 2016-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 insensitive 2016-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 pages 2016-04-23 22:08:38 3604 [Note] InnoDB: The InnoDB memory heap is disabled 2016-04-23 22:08:38 3604 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2016-04-23 22:08:38 3604 [Note] InnoDB: Memory barrier is not used 2016-04-23 22:08:38 3604 [Note] InnoDB: Compressed tables use zlib 1.2.3 2016-04-23 22:08:38 3604 [Note] InnoDB: Using CPU crc32 instructions 2016-04-23 22:08:38 3604 [Note] InnoDB: Initializing buffer pool, size = 128.0M 2016-04-23 22:08:38 3604 [Note] InnoDB: Completed initialization of buffer pool 2016-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 68929933440 2016-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:64 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 1024, Possible space_id count:0 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:2048 Pages to analyze:48 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 2048, Possible space_id count:0 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:4096 Pages to analyze:24 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 4096, Possible space_id count:0 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:8192 Pages to analyze:12 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 8192, Possible space_id count:0 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:16384 Pages to analyze:6 2016-04-23 22:08:38 3604 [Note] InnoDB: VALID: space:2947354 page_no:3 page_size:16384 2016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 16384, Possible space_id count:1 2016-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:2947354 2016-04-23 22:08:38 3604 [Note] InnoDB: Restoring page 0 of tablespace 2947354 2016-04-23 22:08:38 3604 [Warning] InnoDB: Doublewrite does not have page_no=0 of space: 2947354 2016-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.ibd InnoDB: 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的時刻有所贊助,假如有疑問年夜家可以留言交換,感謝年夜家對的支撐。