首頁  >  文章  >  資料庫  >  詳細介紹解決mysql啟動後隨即關閉的問題(ibdata1檔案損壞導致)

詳細介紹解決mysql啟動後隨即關閉的問題(ibdata1檔案損壞導致)

黄舟
黄舟原創
2017-03-27 13:18:032160瀏覽

下面小編就為大家帶來一篇完美解決mysql啟動後隨即關閉的問題(ibdata1檔案損壞導致)。 mysql運行一段時間了,突然出現了一個很奇怪的現象:

重啟後無法恢復了! ##查看mysql錯誤日誌如下:

160920 22:41:41 mysqld_safe Starting mysqld daemon with databases from /home/MysqlData/
2016-09-20 22:41:41 0 [Note] /Data/app/mysql5.6.25/bin/mysqld (mysqld 5.6.25-log) starting as process 32372 ...
2016-09-20 22:41:42 32372 [Note] 
Plugin 'FEDERATED' is disabled.
2016-09-20 22:41:42 32372 
[Warning] option 'innodb-write-io-threads': unsigned value 1000 adjusted to 64
2016-09-20 22:41:42 32372
 [Warning] option 'innodb-read-io-threads': unsigned value 1000 adjusted to 64
2016-09-20 22:41:42 32372 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-09-20 22:41:42 32372 [Note] InnoDB: The InnoDB memory heap is disabled
2016-09-20 22:41:42 32372 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-09-20 22:41:42 32372 [Note] InnoDB: Memory barrier is not used
2016-09-20 22:41:42 32372 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-09-20 22:41:42 32372 [Note] InnoDB: Using CPU crc32 instructions
2016-09-20 22:41:42 32372 [Note] InnoDB: Initializing buffer pool, size = 1.0G
2016-09-20 22:41:42 32372 [Note] InnoDB: Completed initialization of buffer pool
2016-09-20 22:41:42 32372 [Note] InnoDB: Highest supported file format is Barracuda.
2016-09-20 22:41:42 32372 [Note] InnoDB: Log scan progressed past the checkpoint lsn 20293587957
2016-09-20 22:41:42 32372 [Note] InnoDB: 
Database was not shutdown normally!
2016-09-20 22:41:42 32372 [Note] InnoDB: Starting crash recovery.
2016-09-20 22:41:42 32372 [Note] InnoDB: Reading tablespace information from the .ibd files...
2016-09-20 22:41:42 32372 [Note] InnoDB: Restoring possible half-written data pages 
2016-09-20 22:41:42 32372 [Note] InnoDB: from the doublewrite buffer...

InnoDB: Doing recovery: scanned up to log sequence number 20293596130

2016-09-20 22:41:42 32372 [Note] InnoDB: Starting an apply batch of log rec
ord
s to the database...
InnoDB: Progress in percent: 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 
90 91 92 93 94 95 96 97 98 99 
InnoDB: Apply batch completed
InnoDB: Last MySQL binlog file 
position
 0 136254, file name mysql-bin.00
001
3
2016-09-20 22:41:43 32372 [Note] InnoDB: 128 rollback segment(s) are active.
2016-09-20 22:41:43 32372 [Note] InnoDB: Waiting for purge to start
2016-09-20 22:41:43 7f77a9edd700 InnoDB: Assertion failure in thread 140151928772352 in file trx0purge.cc line 699

InnoDB: Failing assertion: purge_sys->iter.trx_no aed35fad5efef22ef3ddda2955186ec0rseg->last_trx_no

#

InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
02:41:43 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed, 
something is definitely wrong and this may fail.

#後發現,資料庫無法重新啟動記錄的原因是因為ibdata1檔案損壞,重新啟動後無法正常復原。

需要跳過恢復步驟,修改my.cnf文件,在my.cnf中的[mysqld]中加入:

innodb_force_recovery = 6

innodb_purge_threads = 1
解釋:

##innodb_force_recovery可以設定為1-6,大的數字包含前面所有數字的影響。 --(SRVFORCEIGNORECORRUPT):忽略檢查到的corrupt頁。 ----(SRVFORCENOTRXUNDO):不執行交易回滾操作。查看重做日誌,InnoDB儲存引擎會將未提交的交易視為已提交。 6-----(SRVFORCENOLOG_REDO):不執行前滾的操作。
再次啟動mysql就ok了~

如果還無法啟動,則需要刪除資料目錄datafile下的 ibdata1,ib_logfile*等檔案。
啟動後匯出MySQL資料庫,重新復原即可。

以上是詳細介紹解決mysql啟動後隨即關閉的問題(ibdata1檔案損壞導致)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn