You have a typical rpm installation of mysql, and the process is crashing. Here are the basic steps needed to find out more info about a crash:
- Configure the OS to be able to create corefiles. (Redhat details), (Solaris details)
- Tell mysqld to create a corefile by adding the following options to my.cnf:
Usually the corefile will be created in the datadir with a name like core.2921 where 2921 was the pid of the running process. The location is configurable on most OS's.
[mysqld_safe]
core-file-size=unlimited
[mysqld]
core-file
You'll need the following to study the core file:
- exact mysqld binary that created the core file
- the core file
- the glibc version of the original system (rpm -qa|grep -i glibc)
- the debuginfo package corresponding to the original mysql rpms.
On my server I have installed MySQL-server-community-5.0.67-0.rhel5.x86_64.rpm and it's been crashing. I have a corefile called core.12345 which I've moved to a test system because I don't want to impact production while playing around with it.
On the production server we have glibc 2.3.4-2.36 installed. So to setup the test box to study the core I do this:
From dev.mysql.com download the MySQL-community-debuginfo-5.0.67-0.rhel5.x86_64.rpm
Download the glibc-2.3.4-2.36.x86_64.rpm from somewhere (in case test system isn't running same version). Next we extract the RPMS and launch gdb and tell it the path to load libraries and symbol files:
rpm2cpio MySQL-community-debuginfo-5.0.67-0.rhel5.x86_64.rpm | cpio -idvu
rpm2cpio glibc-2.3.4-2.36.x86_64.rpm | cpio -idvu
gdb ./mysqld --core ./core.12345
set solib-absolute-prefix .
file ./usr/lib/debug/usr/sbin/mysqld.debug
From here you should get reasonable output from GDB, such as "thread apply all bt" and "bt full" and continue to examine the corefile...
No comments:
Post a Comment