错误 1067:进程意外终止 [InnoDB]

Error 1067: The process terminated unexpectedly [InnoDB]

昨晚数据库服务器意外关闭后,我尝试重新启动 MySQL 服务时遇到以下错误。

Could not start the MySQL service on Local Computer.
Error 1067: The process terminated unexpectedly.

当我查看 MySql 数据文件夹下的 .err 日志文件时,日志详细信息如下。


InnoDB: Log scan progressed past the checkpoint lsn 804 2135184621 150513 12:20:39 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 804 2136195241 150513 12:20:50 InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percents: 0 1 2 3 150513 12:20:50 InnoDB: Assertion failure in thread 2412 in file .\rem\rem0rec.c line 337
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.1/en/forcing-recovery.html
InnoDB: about forcing recovery.
150513 12:20:51 - mysqld got exception 0xc0000005 ;
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.

key_buffer_size=135266304
read_buffer_size=65536
max_used_connections=0
max_threads=400
threads_connected=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 262617 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

thd: 0x0
Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong...
InnoDB: Thread 164 stopped in file .\os\os0sync.c line 391
0070A1A8 mysqld.exe!rec_get_offsets_func()[rem0rec.c:337]
0071B498 mysqld.exe!page_cur_parse_insert_rec()[page0cur.c:798]
0071512F mysqld.exe!recv_parse_or_apply_log_rec_body()[log0recv.c:814]
00715CF1 mysqld.exe!recv_recover_page()[log0recv.c:1294]
006EBE0F mysqld.exe!buf_page_io_complete()[buf0buf.c:2033]
006E4472 mysqld.exe!fil_aio_wait()[fil0fil.c:4273]
006BCDCD mysqld.exe!io_handler_thread()[srv0start.c:437]
77E6482F kernel32.dll!GetModuleHandleA()
The manual page at http:// dev.mysql.com/doc/mysql/en/crashing.html contains information that should help you find out what is causing the crash.


事件查看器中显示错误日志:

An unhandled win32 exception occurred in mysqld.exe [1200]. Just-In-Time debugging this exception failed with the following error: Debugger could not be started because no user is logged on.


MySQL version: 5.1<br>
Table Type: InnoDB<br>
ibdata1 Size: 28GB

制作的表没有SQL个转储备份文件,只有SQL个物理数据文件。我迫切需要恢复这些数据并使网站恢复在线。

请帮忙。

显然这是 MySQL 5.1 中的一个已知错误,如下面的一些错误文档中所述。

http://bugs.mysql.com/bug.php?id=44416
http://bugs.mysql.com/bug.php?id=45844

我已经将MySQL版本更新到最新(5.1.73),然后在第6级强制恢复InnoDB(对于我的情况只能在这个级别启动)。之后,我可以继续使用 mysqldump。

设置文件my.ini 更改或添加设置

innodb_flush_method=正常

重启服务mysql