Каждый раз так часто я получаю сообщение об ошибке, когда одна из моих таблиц "помечена как разбитая и должна быть восстановлена". Затем я делаю REPAIR TABLE и исправляю его. Что заставляет их отмечать как разбитые и как я могу это предотвратить? Я использую таблицы MyISAM с MySQL 5.0.45.
Что заставляет таблицы ремонтироваться?
Ответ 1
Существует несколько причин, по которым таблицы повреждаются, это подробно обсуждается в руководстве.
Для борьбы с ним лучше всего работают следующие вещи:
- Удостоверьтесь, что вы всегда корректно завершаете MySQL
- Рассмотрите возможность использования опции -myisam-recover для автоматической проверки/восстановления ваших таблиц в случае, если выключение было выполнено неправильно
- Убедитесь, что вы используете самые последние версии, так как известные ошибки коррупции обычно фиксируются как можно скорее.
- Дважды проверьте свое оборудование с тестом, чтобы узнать, не вызывает ли проблем. Инструменты, такие как sysbench и memtest86 часто могут помочь убедитесь, что все работает так, как должно.
- Удостоверьтесь, что ничего не трогало каталог данных извне, например, проверки на вирусы, программы резервного копирования и т.д.
Ответ 2
Обычно это происходит, когда база данных не закрывается должным образом, например, сбой системы или аппаратная проблема.
Ответ 3
Я использовал для получения ошибок из mysql, как и вы.
Я решил свои проблемы таким образом
- Преобразуйте все таблицы myisam в InnoDB (вы можете искать "myisam vs InnoDB" в stackoverflow.com и поисковых системах, чтобы узнать, почему)
- Для получения наилучшей производительности от MySQL используйте стороннюю программу MONYOG (MySQL Monitor and Advisor) и проверьте рекомендации по производительности.
Эти два шага спасли меня. Надеюсь, они тоже помогут вам.
Ответ 4
Это может быть много, но Блог производительности MySQL упоминает ошибки в памяти, OS или MySQL, которые может вызвать скрытую коррупцию. Кроме того, что и в другой статье упоминают несколько вещей, которые следует учитывать при восстановлении после сбоя.