Мы уже дважды зависали в базе данных и пытались найти причину.
show processlist
Waiting for global read lock | INSERT INTO {myisam_table} ...
Здесь дисковое пространство было переполнено, поэтому мы подумали, что проблема закончилась после того, как мы дали ее еще немного, но на следующий день в полдень она снова зависла:
show processlist
Waiting for table level lock | UPDATE {myisam_table} ...
Что может быть причиной?
Mysql Двигатель по умолчанию: InnoDB.
База данных имеет смесь таблиц с движками MyISAM и InnoDB.
Журнал размещен здесь:
http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/
mysqldump
. Вы выполняли резервное копирование в то время?SHOW FULL PROCESSLIST
а неSHOW PROCESSLIST
чтобы мы могли видеть весь запрос для каждого потока ... но, как он сейчасMyISAM
выглядит , если есть таблицы, то похоже, что длительныйSELECT
запрос в 42686 блокируетUPDATE
запрос в 43506 что, в свою очередь, блокирует каждыйSELECT
следующий за ним запрос.Ответы:
НАЧАЛЬНЫЕ ЗАМЕЧАНИЯ
JOIN
,GROUP BY
илиORDER BY
РАБОЧАЯ ТЕОРИЯ
Если вам не хватило места на диске со списком процессов, который вы мне дали, то мы можем обвинить механизм хранения MyISAM. Почему?
В вашем конкретном случае это не одна из ваших таблиц. Если
JOIN
,GROUP BY
илиORDER BY
было выполняются и таблица температуры была записи на диск (на диске временных таблицы использовать механизм хранения MyISAM) для MySQL просто замерзает , когда из космоса. Откуда я это знаю?Согласно справочному руководству по сертификации MySQL 5.0
Страница 408 409, раздел 29.2, пункт 11:
Я обсуждал эту ситуацию раньше
Apr 05, 2013
: «Сайт отключен» MySQL-сервер не запускается и не останавливаетсяDec 17, 2012
: Как решить MySQL «Таблица заполнена» ошибка 1114 с Amazon RDS?Apr 25, 2012
: Очень большие файлы журналовMar 15, 2012
: Почему происходит сбой таблиц MySQL? Как мне это предотвратить?Что-то говорит мне, что у вас есть одна из этих двух ситуаций
/tmp
корневом разделе, ей не хватает местаSUGGESTIONS
Предложение №1: сопоставить tmpdir с другим диском
Предложение № 2: Создать RAM-диск
Запустите этот код, чтобы установить RAM-диск, который будет доступен при перезагрузке Linux.
Затем сопоставьте tmpdir с
/var/tmpfs
ДАЙТЕ ЭТО ПОПРОБУЙТЕ !!!
источник