Search the MySQL manual:

A.4.1 What To Do If MySQL Keeps Crashing

All MySQL versions are tested on many platforms before they are released. This doesn't mean that there aren't any bugs in MySQL, but it means if there are bugs, they are very few and can be hard to find. If you have a problem, it will always help if you try to find out exactly what crashes your system, as you will have a much better chance of getting this fixed quickly.

First, you should try to find out whether the problem is that the mysqld daemon dies or whether your problem has to do with your client. You can check how long your mysqld server has been up by executing mysqladmin version. If mysqld has died, you may find the reason for this in the file `mysql-data-directory/`hostname`.err'. See section 4.9.1 The Error Log.

On some systems you can find in this file a stack trace of where mysqld died that you can resolve with resolve_back_stack. See section E.1.4 Using a Stack Trace. Note that the variable values written in the .err file may not always be 100 percent correct.

Many crashes of MySQL are caused by corrupted index files or datafiles. MySQL will update the data on disk, with the write() system call, after every SQL statement and before the client is notified about the result. (This is not true if you are running with delay_key_write, in which case only the data is written.) This means that the data is safe even if mysqld crashes, as the OS will ensure that the not flushed data is written to disk. You can force MySQL to sync everything to disk after every SQL command by starting mysqld with --flush.

The above means that normally you shouldn't get corrupted tables unless:

Because it is very difficult to know why something is crashing, first try to check whether things that work for others crash for you. Please try the following things:

User Comments

Posted by Scott Marlowe on Monday March 24 2003, @1:29pm[Delete] [Edit]

Any time your database is acting strangely, you should suspect, and subsequently prove the operation of, your hardware. A single bad block on a hard drive or single bad bit in memory can cause all kinds of problems.

http://www.memtest86.com/ is an excellent memory tester for x86 based hardware. For SCSI hard drives a low level (controller initiated) format can often map out all bad blocks and restore reliability. IDE drives can also be reformatted low level, but I've found a few that still had bad blocks after a remapping. In linux you can use the badblocks program or call it from mke2fs with the -c switch. It's not comprehensive, but it will find blocks that have hard errors in them.

Add your own comment.