2010-05-05 23:42:29 +02:00
|
|
|
Debugging mysqld crashes
|
|
|
|
========================
|
|
|
|
Author: Michal Marek <mmarek@suse.cz>
|
2014-12-06 14:56:41 +01:00
|
|
|
Last modified: 2014-11-21
|
2010-05-05 23:42:29 +02:00
|
|
|
|
|
|
|
Contents
|
|
|
|
--------
|
|
|
|
1) Query log
|
|
|
|
2) Coredumps and Backtraces
|
|
|
|
3) Trace files
|
|
|
|
|
|
|
|
In case your MySQL server crashes, here are some hints on what to
|
|
|
|
include in a bugreport at https://bugzilla.novell.com/ . Please report
|
|
|
|
there only bugs in the MySQL packages packaged by Novell/SUSE, bugs in
|
|
|
|
binaries / source provided by MySQL AB should be reported at
|
|
|
|
http://bugs.mysql.com/ .
|
|
|
|
|
|
|
|
1) Query log
|
|
|
|
------------
|
|
|
|
Note: Skip this chapter if you already have an exact query that
|
|
|
|
crashes the server
|
|
|
|
|
|
|
|
To find out which query possibly crashed the server, add the following
|
|
|
|
line to your /etc/my.cnf into section [mysqld]:
|
|
|
|
|
|
|
|
log=/var/lib/mysql/mysqld-query.log
|
|
|
|
|
|
|
|
Mysqld then will, at some performance cost, log all queries into this
|
|
|
|
file. After a server crash, you can examine the queries from the time it
|
|
|
|
crashed and try to reproduce the crash with single queries (this might
|
|
|
|
not allways work, eg. if the crash is caused by some race condition).
|
|
|
|
|
|
|
|
Note that this log file may become extremly large, so if you decide to
|
|
|
|
attach it whole to the bugzilla, don't forget to
|
|
|
|
|
2016-12-05 14:43:49 +01:00
|
|
|
xz -k9 /var/lib/mysql/mysqld-query.log
|
2010-05-05 23:42:29 +02:00
|
|
|
|
2016-12-05 14:43:49 +01:00
|
|
|
and attach the xzipped file instead.
|
2010-05-05 23:42:29 +02:00
|
|
|
|
|
|
|
2) Coredumps and Backtraces
|
|
|
|
---------------------------
|
|
|
|
Another valuable information for the developers is the backtrace. The
|
|
|
|
easies way to get one is to let mysqld produce a coredump. Add the
|
|
|
|
following line to your /etc/my.cnf into section [mysqld]:
|
|
|
|
|
|
|
|
core-file
|
|
|
|
|
|
|
|
The core file will be written to the /var/lib/mysql/ directory. I
|
|
|
|
suggest setting the kernel variable kernel.core_uses_pid to 1
|
|
|
|
|
|
|
|
sysctl -w kernel.core_uses_pid=1
|
|
|
|
|
|
|
|
so that the coredumps don't overwrite each other if you experience
|
|
|
|
multiple crashes.
|
|
|
|
|
|
|
|
After you got the core file, install the gdb and mysql-debuginfo
|
|
|
|
packages and run
|
|
|
|
|
2015-06-25 15:57:47 +02:00
|
|
|
gdb /usr/sbin/mysqld /var/lib/mysql/<core>
|
2010-05-05 23:42:29 +02:00
|
|
|
(gdb) bt
|
|
|
|
|
2015-06-25 15:57:47 +02:00
|
|
|
Replace the <core> with the actual name of the coredump.
|
2010-05-05 23:42:29 +02:00
|
|
|
|
|
|
|
3) Trace files
|
|
|
|
--------------
|
|
|
|
The trace file will contain various debug information and function
|
|
|
|
calls/returns and will become _extremly_ huge after a while, so don't
|
|
|
|
attach it to bugzilla unless requested.
|
|
|
|
|
2015-06-25 15:57:47 +02:00
|
|
|
Add the following line to your /etc/my.cnf into section [mysqld]:
|
|
|
|
|
|
|
|
stack-trace
|
|
|
|
|
2016-12-05 14:43:49 +01:00
|
|
|
The trace file will be then written to /var/lib/mysql directory.
|