22.4.1 Debugging a MySQL Server

22.4.1.1 Compiling MySQL for Debugging
22.4.1.2 Creating Trace Files
22.4.1.3 Using pdb to create a Windows crashdump
22.4.1.4 Debugging mysqld under gdb
22.4.1.5 Using a Stack Trace
22.4.1.6 Using Server Logs to Find Causes of Errors in mysqld
22.4.1.7 Making a Test Case If You Experience Table Corruption

If you are using some functionality that is very new in MySQL, you can try to run mysqld with the --skip-new (which disables all new, potentially unsafe functionality). See Section B.5.4.2, “What to Do If MySQL Keeps Crashing”.

Binary distributions of MySQL server from Oracle include a specific debug binary, mysqld-debug. This is a build including the debugging information and is built in the same way as the debug build format described in Section 22.4.1.1, “Compiling MySQL for Debugging”. You should use this build when debugging the MySQL server.

If mysqld doesn't want to start, you should verify that you don't have any my.cnf files that interfere with your setup! You can check your my.cnf arguments with mysqld --print-defaults and avoid using them by starting with mysqld --no-defaults ....

If mysqld starts to eat up CPU or memory or if it hangs, you can use mysqladmin processlist status to find out if someone is executing a query that takes a long time. It may be a good idea to run mysqladmin -i10 processlist status in some window if you are experiencing performance problems or problems when new clients can't connect.

The command mysqladmin debug dumps some information about locks in use, used memory and query usage to the MySQL log file. This may help solve some problems. This command also provides some useful information even if you haven't compiled MySQL for debugging!

If the problem is that some tables are getting slower and slower you should try to optimize the table with OPTIMIZE TABLE or myisamchk. See Chapter 5, MySQL Server Administration. You should also check the slow queries with EXPLAIN.

You should also read the OS-specific section in this manual for problems that may be unique to your environment. See Section 2.1, “General Installation Guidance”.