Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>mysql mariadb percona errors}} ====== Ошибки MySql/MariaDB ====== ===== Deadlock found when trying to get lock ===== <code> SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction The SQL being executed was: UPDATE tbl_point SET location = POINTFROMTEXT(CONCAT('POINT(55.683452 37.526923)')) </code> Для выяснения причины ошибки, необходимо запустить **SHOW ENGINE INNODB STATUS;** ===== No such file or directory ===== <code> SQLSTATE[HY000] [2002] No such file or directory </code> Ошибка появляется при неверном указании сокета для драйвера PDO **pdo_mysql.default_socket** ===== Got error 28 from storage engin ===== <code>Got error 28 from storage engine</code> * Got error 28 from storage engine - Закончилось место на диске * MySQL Error: Out of resources when opening file './db_name/table_name.MYD' (Errcode: 24) ===== Checking for corrupt, not cleanly closed and upgrade needing tables ===== <code>Checking for corrupt, not cleanly closed and upgrade needing tables</code> * mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p * mysql_upgrade --force -u root -p ===== Too many open files ===== <code>Can't read dir of '.' (errno: 24 "Too many open files")</code> Превышение одновременно открытых дескрипторов ==== Анализ состояния ==== * Сколько разрешено открывать файловых дескрипторов пользователю mysql (системные ограничения) * <code sh># cat /etc/security/limits.conf | grep -vP '^#'</code> * Сколько разрешено открывать файловых дескрипторов (конфигурация) * <code sh>cat /etc/mysql/my.cnf|grep open_files_limit</code> * Сколько занято дескрипторов * <code>lsof -u mysql | wc -l</code> * Cколько дескрипторов разрешено в MySQL * <code># mysql -se "show variables like 'open_files_limit'" -uroot -p Variable_name Value open_files_limit 1024</code> ==== Исправление ==== * nano /etc/security/limits.conf * Воставляем число файловых дескрипторов (для пользователя mysql) * <code sh> mysql hard nofile 102400 mysql soft nofile 102400</code> * Временно увеличиваем число открытых дескрипторов файлов\\ (настройки сохраняются до перезагрузки машины)<code bash>$ ulimit -n 102400</code> * Проверить настройки можно <code bash>$ ulimit -a</code> * nano /etc/mysql/my.cnf * Выставляем число одновременно открытых файлов в конфигурации * <code>open_files_limit 8192</code> или * Выставляем число дескрипторов в разрешенных * <code>echo 'mysql - nofile 8192' > /etc/security/limits.d/mysql.conf</code> * Перезапускаем сервер * <code sh># service mysql restart</code> === PAM (Аунтификация) === Если после перезапуска mysql не применил новые ограничения, значит PAM это запретил. Тогда добавляем разрешение в PAM. * Проверяем ограничения PAM * <code sh>grep -r limits /etc/pam.*</code> * Снимаем ограничение (Debian) * <code sh>$ echo 'session required pam_limits.so' >> /etc/pam.d/common-session</code> * <code sh>$ echo 'session required pam_limits.so' >> /etc/pam.d/common-session-noninteractive</code> === systemd (Менеджер загрузки) === * Сбрасываем ограничения в systemd * <code sh>echo " [Service] LimitNOFILE=infinity LimitMEMLOCK=infinity" > /etc/systemd/system/mysqld.service </code> * Перезагружаем настройки демона systemd * <code sh>systemctl reload mariadb.service</code> СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal