предотвратить сбои MySQL таблицы MySQL - PullRequest
1 голос
/ 15 ноября 2010

У меня были проблемы с базой данных, неоднократно сбойные таблицы.К счастью, это достаточно легко исправить, восстановив разбитую таблицу, но вряд ли стоит следить за тем, чтобы таблица вылетела (или клиент сказал мне), а затем исправить ее.Сбои, как правило, происходят после внесения изменений в базу данных, к которой у клиента есть доступ через CMS.

Я заметил, что в последний раз, когда таблица терпела крах, она ссылалась на число - что-то вроде найдено89;который я тогда заметил в кардинальности для первичного ключа.Соединяя 2 и 2, я погуглил кардинальность и обнаружил, что оптимизация таблицы каким-то образом связана, и поэтому я подумал, что регулярная оптимизация таблицы, как после обновления, поможет предотвратить сбои.Это правда или мне удалось получить 73, а не 4?

Я могу отправлять функции MYSQL в базу данных, когда клиент вносит изменения через PHP, поэтому помощь с этой точки зрения была бы полезна.

Любая другая помощь со сбоями таблицы будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 09 октября 2015

Таблица MyISAM обычно повреждена по следующим причинам:

  • Ошибка в MySQL или внешние проблемы (сбой ОС, отключение питания из-за нехватки памяти), приводящий к аварийному завершению работы mysqld
  • Ошибка в механизме хранения MyISAM
  • Запуск двух экземпляров mysqld для одних и тех же данных одновременно
  • Аппаратная неисправность

Таким образом, лучшее, что вы можете сделать, чтобы избежать коррупции, - это иметь хороший ИБП, работать с наиболее стабильными версиями ОС и MySQL, убедиться, что ваше оборудование функционирует правильно, убедитесь, что у вас достаточно оперативной памяти (чтобы избежать убийств OOM, и чтобы не искушать дьявола в целом, ошибки часто встречаются в условиях нехватки памяти), и будьте хорошим мальчиком - не убивайте mysqld с сигналом 9, и при перезапуске убедитесь, что старый экземпляр mysqld был отключен до того, как Вы начинаете новый.

Вы также можете принять меры для борьбы с коррупцией. Регулярно создавайте резервные копии своих данных и держите таблицы достаточно маленькими, чтобы избежать длительного восстановления.

Использование InnoDB - еще один популярный вариант, поскольку он лучше согласуется с теорией баз данных, которой обучают в школах, но у него действительно есть свои проблемы, и он может создавать новые проблемы, если вы пытаетесь мигрировать - раздувание данных, снижение производительности, взаимоблокировки , повреждение данных (стиль InnoDB), более сложное - с большей вероятностью возникнет ошибка и сложнее устранить неполадки и т. д.

0 голосов
/ 15 ноября 2010

НЕ соответствует действительности, оптимизировать таблицу предотвратит сбой таблицы

фактически, U НЕ ДОЛЖЕН слишком часто запускать таблицу оптимизации (таблица блокируется), хотя она предназначена для сжатия свободных данных

попробуй mysqlcheck -C

или mysqlcheck -c

...