В течение последних 4 дней у меня были серьезные проблемы с моими ночными обновлениями, за исключением 1 ночи, все было в порядке между этими 4 днями.
Во время этих обновлений я обновляю пару полнотекстовых индексов. Я делаю это таким образом.
- Падение полнотекстового индекса
- Обновить полнотекстовую таблицу
- Добавить индекс полного текста
Это работает идеально подходит более 2 лет. Обычное время обновления составляло около 3-4 часов, что было нормальным для количества данных, которые обновляются каждую ночь. Но с пятницы действительно время обновления было между 9-12 часов!
Вчера вечером сервер неожиданно разбился на двигатель, это было в журнале ошибок
InnoDB: предупреждение: долгое семафорное ожидание: --Thread 8676 ждал в строке dict0boot.ic 36 в течение 241.00 секунд семафор: Mutex при 0000000053B0C1E8 создал файл dict0dict.cc строка 887, lock var 1 флаг официантов 1 InnoDB: ###### Запуск InnoDB Монитор в течение 30 секунд для печати диагностической информации: InnoDB: Ожидающие предварительные 0, pwrites 0
InnoDB: ###### Диагностическая информация, напечатанная в стандартном потоке ошибок InnoDB: Ошибка: ожидание семафора длилось > 600 секунд. InnoDB: Мы намеренно сбой сервера, потому что он, кажется, висит. 2014-07-21 05:20:54 1384 InnoDB: ошибка утверждения в потоке 4996 в файл srv0srv.cc строка 1748
InnoDB: Мы намеренно генерируем ловушку памяти. InnoDB: Отправить подробный отчет об ошибках http://bugs.mysql.com. InnoDB: Если вы получаете повторные ошибки утверждения или сбои, даже InnoDB: сразу после при запуске mysqld может быть InnoDB: коррупция в InnoDB табличного пространства. Пожалуйста, обратитесь к InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.htmlInnoDB: о принудительном восстановлении.
Ive только что перезапустил сервер, и все прошло нормально, так что теперь я жду, чтобы опубликовать полный отчет об ошибке в файле bugs.mysql.com
Я обнаружил что-то на этой странице, и это похоже на ту же проблему, но никаких дальнейших сообщений tho.
Я не знаю, куда идти отсюда, я не знаю, почему это происходит внезапно.
Какие подробности я могу предоставить здесь?
- Версия сервера Mysql: 5.6.13
- sort_buffer_size = 2M
- innodb_buffer_pool_size = 53G
- innodb_log_buffer_size = 4M
- innodb_flush_log_at_trx_commit = 0
- innodb_log_file_size = 25G
ИЗМЕНИТЬ
После чтения this, в нем говорится, что
"Архитектурные изменения в MySQL 5.6 и выше делают больше рабочих нагрузок подходит для отключения адаптивного хеш-индекса, чем в предыдущем релизы, хотя по-прежнему он включен по умолчанию."
Я отключил адаптивный хеш-индекс, используя
SET GLOBAL innodb_adaptive_hash_index=0
и теперь я пытаюсь проверить, исправлена ли проблема. Ситуация точно так же как и ночью.
Ночное обновление:
Обновление прошло отлично. Менее 6 часов. Не было никаких проблем с обновлением полного текста, однако я все же нашел, что простой запрос на обновление с JOIN
был медленным. (40000 записей в 8
секунды, что обычно выполнялось менее чем 1
).
Будет продолжаться и сегодня, чтобы попытаться настроить его.