Перед официальным выпуском все версии MySQL тестируются на многих платформах. Это не означает, что в MySQL совсем нет ошибок, но если они и есть, то мало, и их не так просто отыскать. В любом случае, столкнувшись с какой-либо проблемой, всегда полезно попытаться точно определить, что вызывает аварию системы, - тогда шансы, что проблема будет устранена в скором времени, станут значительно выше.
Сначала надо попробовать
локализовать проблему. Определите,
что происходит: то ли демон
mysqld прекращает работу,
то ли проблема связана с клиентом.
Узнать, сколько времени сервер
mysqld уже работает, можно,
выполнив mysqladmin version. Если
mysqld прекратил
выполнение, то для выяснения
причин можно изучить файл
mysql-data-directory/`hostname`.err (see
Раздел 4.9.1, «Журнал ошибок»).
Причиной многих аварий MySQL
являются поврежденные индексные
файлы или файлы данных. MySQL
обновляет данные на диске,
используя системный вызов
write(), после каждой
команды SQL и до того, как клиент
будет уведомлен о результате
(однако при выполнении с
delay_key_write это не так:
записываются только данные).
Отсюда следует, что данные не
пострадают даже в случае
аварийного завершения
mysqld, поскольку ОС
позаботится о том, чтобы те данные,
которые не сброшены, были записаны
на диск. Можно заставить MySQL
сбрасывать все на диск после
каждой SQL-команды, запустив
mysqld с --flush.
Все это означает, что обычно таблицы не должны повреждаться; исключение составляют следующие случаи:
Кто-нибудь/что-нибудь убьет
процесс mysqld или
выключит машину посреди
операции обновления.
Проявила себя ошибка в
mysqld, вызывающая
прекращение его выполнения
посреди операции обновления.
Кто-нибудь работает с файлами
данных или индексными файлами
вне
