0

MySQL sudently stop working, when start manually mysqld with `mysqld`` command:

# mysqld
160805 11:34:10 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
160805 11:34:10 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160805 11:34:10 [Note] Plugin 'FEDERATED' is disabled.
160805 11:34:10 InnoDB: The InnoDB memory heap is disabled
160805 11:34:10 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160805 11:34:10 InnoDB: Compressed tables use zlib 1.2.7
160805 11:34:10 InnoDB: Using Linux native AIO
160805 11:34:10 InnoDB: Initializing buffer pool, size = 128.0M
160805 11:34:10 InnoDB: Completed initialization of buffer pool
160805 11:34:10 InnoDB: highest supported file format is Barracuda.
InnoDB: Error: trying to access page number 46616 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.
160805 11:34:10  InnoDB: Assertion failure in thread 140324139591456 in file fil0fil.c line 4578
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.
09:34:10 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=16777216
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 = 346700 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 0x30000
mysqld(my_print_stacktrace+0x29)[0x7f9fc2d3f0b9]
mysqld(handle_fatal_signal+0x3d8)[0x7f9fc2c26418]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xf0a0)[0x7f9fc23d40a0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35)[0x7f9fc0c65165]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x180)[0x7f9fc0c683e0]
mysqld(+0x5f3333)[0x7f9fc2df6333]
mysqld(+0x5cee49)[0x7f9fc2dd1e49]
mysqld(+0x5cf7ec)[0x7f9fc2dd27ec]
mysqld(+0x5c02c8)[0x7f9fc2dc32c8]
mysqld(+0x59d55f)[0x7f9fc2da055f]
mysqld(+0x592d44)[0x7f9fc2d95d44]
mysqld(+0x593aac)[0x7f9fc2d96aac]
mysqld(+0x59541a)[0x7f9fc2d9841a]
mysqld(+0x582b23)[0x7f9fc2d85b23]
mysqld(+0x54f0ff)[0x7f9fc2d520ff]
mysqld(_Z24ha_initialize_handlertonP13st_plugin_int+0x41)[0x7f9fc2c287a1]
mysqld(+0x3329d7)[0x7f9fc2b359d7]
mysqld(_Z11plugin_initPiPPci+0xa73)[0x7f9fc2b38a53]
mysqld(+0x2b9155)[0x7f9fc2abc155]
mysqld(_Z11mysqld_mainiPPc+0x45b)[0x7f9fc2abcdcb]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd)[0x7f9fc0c51ead]
mysqld(+0x2b0f59)[0x7f9fc2ab3f59]
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.

Tryied in my.cnf

[mysqld]
innodb_force_recovery = 1

without change. Where can i investiguate ?

1

As the log indicates, you might have changed the values of the following parameters:

  • key_buffer_size
  • read_buffer_size
  • sort_buffer_size
  • max_threads

If you have changed one of these values, try to revert the change and start the MySQL server again.

If you have not changed the values, calculate the memory usage by:

key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads

If you find the system installed memory is sufficient, you need to check if there is a corrupted table in your databases:

[mysqld]
innodb_force_recovery = 6

Then, to find out which database table is corrupted:

# mysqlcheck --all-databases

Write down all the tables listed as corrupted, you have to export the corrupted tables by:

# mysqldump -u{username} -p{password} {database_name} {table_name} > table_backup.sql

After that, you can drop the table in Mysql console:

Mysql> drop table {corrupted_table_name};

Then, we have to change back the Mysql configuration:

[mysqld]
innodb_force_recovery = 0

The MySQL server should be able to start up with normal operation mode.

Next, we have to import the data of corrupted tables:

# mysql -u{username} -p{password} {database_name} < table_backup.sql

If everything runs fine, you should have your table data back and working Mysql Server.

Reference: InnoDB table recovery step-by-step-guide

  • At step mysqlcheck, got a list of table as 'OK', then: "mysqlcheck: Got error: 2013: Lost connection to MySQL server during query when executing 'CHECK TABLE ... '" without database/table name. How to know wich is corrupted ? – bux Aug 6 '16 at 9:34
  • Please check your current value of wait_timeout under my.ini configuration file and increase the value to higher value, e.g. 28800 to see whether the check can be finished – Simon MC. Cheng Aug 6 '16 at 14:03
  • Same behaviour with wait_timeout set to 28800 under [wait_timeout] in /etc/mysql/my.cnf. – bux Aug 6 '16 at 21:09
  • Then I think a better solution is to do a system restore for all your databases mysqldump -u{username} -p{password} --all-databases > database_backup.sql, then drop all your databases one by one except mysql, information_schema, then restart the server by setting to innodb_force_recovery = 0, if it is able to start, run mysql -u{username} -p{password} < database_backup.sql to recover your data – Simon MC. Cheng Aug 7 '16 at 11:00
  • When drop a database, got "ERROR 2013 (HY000): Lost connection to MySQL server during query". Drop query work for one other database. – bux Aug 17 '16 at 13:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy