Open vaslatyshev opened 8 months ago
как безопасно делать альтеры?
Не игнорировать:
Попробуйте в сторонке. Если:
indextool --check
), то отправьте нам файлы таблицы - будем фиксить.
так же может быть полезным сделать indextool -c your.conf --check nds
перед началом выполнения ALTER чтобы убедиться, что индекс валидный
в вашем логе есть уже строчки
WARNING: table 'products': prealloc: attribute count mismatch (..., myattrs=134, inattrs=135)
те как будто у таблицы products диск чанк 3047 тоже не валидный.
Лучше проверить все индексы поочереди с indextool
чтобы убедится что у вас валидные данные
В следующий раз перед выполнением ALTER сделаем проверку индекса и я добавлю сюда детали. Сейчас данные не сохранились, как я написал выше - пересоздали индекс и наполнили заново.
так же может быть полезным сделать
indextool -c your.conf --check nds
перед началом выполнения ALTER чтобы убедиться, что индекс валидный
Появилась потребность произвести очердные альтеры. Если результат проверки покажет, что индекс невалидный, какие рекомендации по восстановлению индекса перед альтером?
выполнить truncate и вставить данные заново или проиндексировать данные в plain table и сделать ATTACH ... WITH TRUNCATE
Если вы сможете поймать последовательность действий, которая приводит к невалидному индексу, то мы сможет начать расследование и починить этот кейс.
выполнить truncate и вставить данные заново или проиндексировать данные в plain table и сделать
ATTACH ... WITH TRUNCATE
Если вы сможете поймать последовательность действий, которая приводит к невалидному индексу, то мы сможет начать расследование и починить этот кейс.
я правильно понимаю, что такое решение подразумевает простой (пока не наполнится индекс)? С минимальным простоем это решение через plain индекс?
да простой будет минимальный при индексации plain индекс и присоединении его
Конфиг manticore:
При альтре таблицы manticore перезагрузился и "убил" индекс. Запрос на ALTER:
Лог searchd manticore.log
После выполнения ALTER - индекс оказался сломан. Посмотреть добавилось ли новое поле или нет - не смогли. Пришлось пересоздать индекс, применить ALTER для пустой таблицы и заново его заполнить. В чем может быть проблема и как безопасно делать альтеры?