【发布时间】:2015-03-24 17:24:34
【问题描述】:
我正在使用 Centos 5 和 mysql 版本 5.5.30。一切正常,直到突然关闭。
正常启动时,它崩溃了 mysql 并收到以下错误(在 mysql 错误日志文件中)。如果我禁用 innodb(来自 my.cnf),它会毫无问题地启动 mysql,但仅支持 myisam。
150324 22:42:09 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
150324 22:42:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
150324 22:42:10 [Note] libgovernor.so not found
150324 22:42:10 [Warning] option 'max_allowed_packet': unsigned value 94371840000 adjusted to 1073741824
150324 22:42:10 [Note] Plugin 'FEDERATED' is disabled.
150324 22:42:10 InnoDB: The InnoDB memory heap is disabled
150324 22:42:10 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150324 22:42:10 InnoDB: Compressed tables use zlib 1.2.3
150324 22:42:10 InnoDB: Using Linux native AIO
150324 22:42:10 InnoDB: Initializing buffer pool, size = 128.0M
150324 22:42:10 InnoDB: Completed initialization of buffer pool
150324 22:42:10 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 254624508054
150324 22:42:10 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 254625886208
150324 22:42:56 InnoDB: Error: page 4 log sequence number 254626313846
InnoDB: is in the future! Current system log sequence number 254625886157.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
150324 22:42:56 InnoDB: Error: page 5 log sequence number 254631317961
InnoDB: is in the future! Current system log sequence number 254625886157.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
150324 22:42:56 InnoDB: Error: page 884737 log sequence number 254626106580
InnoDB: is in the future! Current system log sequence number 254625886157.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
150324 22:42:56 InnoDB: Error: page 901121 log sequence number 254628999816
InnoDB: is in the future! Current system log sequence number 254625886157.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
150324 22:42:57 InnoDB: Error: page 893070 log sequence number 254626307058
InnoDB: is in the future! Current system log sequence number 254625886157.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
150324 22:42:57 InnoDB: Error: page 900895 log sequence number 254626761099
InnoDB: is in the future! Current system log sequence number 254625886157.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
150324 22:42:58 InnoDB: Error: page 890447 log sequence number 254627421913
InnoDB: is in the future! Current system log sequence number 254625886157.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
InnoDB: Error: trying to access page number 4294054783 in space 0,
InnoDB: space name ./ibdata1,
InnoDB: which is outside the tablespace bounds.
InnoDB: Byte offset 0, len 16384, i/o type 10.
InnoDB: If you get this error at mysqld startup, please check that
InnoDB: your my.cnf matches the ibdata files that you have in the
InnoDB: MySQL server.
150324 22:42:58 InnoDB: Assertion failure in thread 47830133103776 in file fil0fil.c line 4493
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.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
17:12:58 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.
key_buffer_size=8388608
read_buffer_size=131072
max_used_connections=0
max_threads=151
thread_count=0
connection_count=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 338533 K bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
Thread pointer: 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...
stack_bottom = 0 thread_stack 0x40000
/usr/libexec/mysqld(my_print_stacktrace+0x2e)[0x7b865e]
/usr/libexec/mysqld(handle_fatal_signal+0x3e2)[0x6840d2]
/lib64/libpthread.so.0[0x305300eca0]
/lib64/libc.so.6(gsignal+0x35)[0x30520302c5]
/lib64/libc.so.6(abort+0x110)[0x3052031d70]
/usr/libexec/mysqld[0x86b338]
/usr/libexec/mysqld[0x84ab51]
/usr/libexec/mysqld[0x84b3ca]
/usr/libexec/mysqld[0x83b62b]
/usr/libexec/mysqld[0x80d3b4]
/usr/libexec/mysqld[0x80d5dc]
/usr/libexec/mysqld[0x80efae]
/usr/libexec/mysqld[0x7fcf88]
/usr/libexec/mysqld[0x7ca61a]
/usr/libexec/mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x47)[0x685ff7]
/usr/libexec/mysqld[0x58304a]
/usr/libexec/mysqld(_Z11plugin_initPiPPci+0xb61)[0x586471]
/usr/libexec/mysqld[0x507c04]
/usr/libexec/mysqld(_Z11mysqld_mainiPPc+0x868)[0x50ac28]
/lib64/libc.so.6(__libc_start_main+0xf4)[0x305201d9c4]
/usr/libexec/mysqld[0x501319]
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.
150324 22:42:58 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
为了恢复innodb数据库,需要mysql支持innodb。我如何让它工作?
【问题讨论】:
-
凝视从来都不是任何数据库的强项。猫更善于凝视。更严肃的一点是:检查您的系统时间。您似乎遇到了一些硬件问题。
-
根据我所在的时区,系统时间完全没问题。上述日志是在我运行命令“service mysqld start”后生成的,但它失败了。其次,如果我从 my.cnf 文件中禁用 Innodb 支持,它就可以正常启动,如果是硬件问题,那也不应该起作用。希望这是有道理的。
-
您有警告说日志中的数据是未来的数据。您的系统中的时间一定有问题。试一试:把你的时间放到未来(大约 24 小时),看看它是否想恢复。
-
@BK435 刚刚尝试过,它从过去 5 分钟开始运行,如果可行,请祈祷。
-
使用 innodb_force_recovery = 1 和 2 后出现同样的错误。
标签: mysql centos innodb crash-dumps