Справочное руководство по MySQL
Когда таблицы оказываются поврежденными или mysqld всегда дает сбой после
некоторых команд, то можно провести испытания (если данный сбой
воспроизводим). Для этого нужно выполнить следующие действия:
-
Остановите демон MySQL (с помощью команды mysqladmin shutdown).
-
Сделайте резервную копию таблиц (в качестве меры предосторожности на
случай, если процесс исправления таблиц пройдет некорректно, хотя это
и маловероятно).
-
Проверьте все таблицы с помощью команды myisamchk -s database/*.MYI.
Исправьте некорректные таблицы с помощью команды
myisamchk -r database/table.MYI.
-
Создайте еще раз резервные копии этих таблиц.
-
Переместите (или удалите совсем) все старые журнальные файлы из
каталога данных MySQL, если нужно освободить больше места.
-
Запустите mysqld с --log-bin (see section 4.9.4 Бинарный журнал обновлений).
Если вы хотите найти запрос, который приводит к сбою mysqld, то
следует использовать --log --log-bin.
-
Когда таблица с искажениями будет получена, остановите сервер mysqld.
-
Восстановите систему из резервной копии.
-
Перезапустите сервер mysqld без --log-bin.
-
Выполните заново команды mysqlbinlog update-log-file | mysql.
Обновленная запись в журнале сохраняется в каталоге баз данных MySQL с
именем 'hostname-bin.#'.
-
Если в результате вышеприведенной команды таблицы опять окажутся
поврежденными или вы можете получить сбой в работе mysqld, то, значит,
вы нашли повторяющуюся ошибку, которую можно исправить! Загрузите
эти таблицы и запись из двоичного журнала по адресу
ftp://support.mysql.com/pub/mysql/secret/ и пошлите письмо с описанием
данной проблемы на bugs@lists.mysql.com или (если вы являетесь
коммерческим пользователем) на support@mysql.com - и команда
разработчиков MySQL устранит ошибку настолько быстро, насколько это
возможно.
Для локализации проблемы можно также использовать скрипт mysql_find_rows,
чтобы просто выполнить ряд обновляющих команд.
|