2016-11-09 9 views
1

У меня проблема с повреждением индекса на MariaDB/InnoDB. Сегодня я получилMariaDB/InnoDB: индексная коррупция - почему?

InnoDB: Error: Flagged corruption of <index> in <table> in CHECK TABLE; Wrong count 

для двух индексов, а также после сбоя БД путем попытки ВСТАВИТЬ в одну из этих таблиц. Я исправил это, сбросив и воссоздавая индекс, но его второй раз (в последний раз пострадали 6 индексов), поэтому я хочу знать: почему мои индексы повреждены?

Моя единственная отправная точка теперь, что оба раза я обновил MariaDB на 1 или 2 часа раньше (через apt-get). Но прежде чем я открою вопрос о MariaDB, я предпочитаю проверять другие возможные причины.

# mysql -V 
mysql Ver 15.1 Distrib 10.1.19-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 

EDIT: Happend снова. На этот раз не после обновления, но после долгого запроса (DROP PRIMARY KEY на большой таблице занимает 79 секунд). Но как длинный запрос в таблице A может вызвать повреждение индекса в таблице B? Является ли мой дефект на жестком диске? Это проблема MariaDB-/InnoDB? Или ...?

ответ

0

Если вы используете MyISAM, переключитесь на InnoDB.

Это еще один способ «ремонта» стол:

ALTER TABLE tbl ENGINE=InnoDB; 

который будет копировать таблицу снова и восстановить все индексы.

DROP PRIMARY KEY - это «плохая» вещь, которую нужно делать в InnoDB. Можете ли вы рассказать о том, почему вы это делаете?

+0

Im allready используя InnoDB. Падение ПК было одноразовым действием, я не делал этого регулярно. – Heiko

+0

При изменении PK лучше всего делать «DROP» и «ADD» в одном «ALTER», иначе он должен сделать в два раза больше работы. –