Quantcast
Channel: Библиотека знаний
Viewing all articles
Browse latest Browse all 1318

Ошибки MySql/MariaDB

$
0
0

Ошибки MySql/MariaDB

Deadlock found when trying to get lock

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)'))

Для выяснения причины ошибки, необходимо запустить SHOW ENGINE INNODB STATUS;

No such file or directory

SQLSTATE[HY000] [2002] No such file or directory

Ошибка появляется при неверном указании сокета для драйвера PDO pdo_mysql.default_socket

Got error 28 from storage engin

Got error 28 from storage engine
  • 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

Checking for corrupt, not cleanly closed and upgrade needing tables
  • mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p
  • mysql_upgrade --force -u root -p

Too many open files

Too many open files

Превышение одновременно открытых дескрипторов

Анализ состояния

  • Сколько разрешено открывать файловых дескрипторов пользователю mysql (системные ограничения)
  • # cat /etc/security/limits.conf | grep -vP '^#'

  • Сколько разрешено открывать файловых дескрипторов (конфигурация)
  • cat /etc/mysql/my.cnf|grep open_files_limit

  • Сколько занято дескрипторов
  • lsof -u mysql | wc -l

  • Cколько дескрипторов разрешено в MySQL
  • # mysql -se "show variables like 'open_files_limit'" -uroot -p
    Variable_name       Value
    open_files_limit    1024

Исправление

  • nano /etc/security/limits.conf
  • Воставляем число файловых дескрипторов (для пользователя mysql)
  • mysql           hard    nofile          102400
    mysql           soft    nofile          102400

  • Временно увеличиваем число открытых дескрипторов файлов
    (настройки сохраняются до перезагрузки машины)
    $ ulimit-n102400

  • Проверить настройки можно
    $ ulimit-a

  • nano /etc/mysql/my.cnf
  • Выставляем число одновременно открытых файлов в конфигурации
  • open_files_limit 8192

или

  • Выставляем число дескрипторов в разрешенных
  • echo 'mysql  -  nofile  8192' > /etc/security/limits.d/mysql.conf

  • Перезапускаем сервер
  • # service mysql restart

PAM (Аунтификация)

Если после перезапуска mysql не применил новые ограничения, значит PAM это запретил. Тогда добавляем разрешение в PAM.

  • Проверяем ограничения PAM
  • grep -r limits /etc/pam.*

  • Снимаем ограничение (Debian)
  • $ echo 'session required pam_limits.so' >> /etc/pam.d/common-session

  • $ echo 'session required pam_limits.so' >> /etc/pam.d/common-session-noninteractive

systemd (Менеджер загрузки)

  • Сбрасываем ограничения в systemd
  • echo "
    [Service]
    LimitNOFILE=infinity
    LimitMEMLOCK=infinity" > /etc/systemd/system/mysqld.service

  • Перезагружаем настройки демона systemd
  • systemctl reload mariadb.service

Viewing all articles
Browse latest Browse all 1318