Ошибка mysql или mariaDB — Can’t open file (errno: 24 — Too many open files)

mariaDB-MySQL
MariaDB MySQL: [ERROR] /usr/sbin/mysqld: Can’t open file: ‘./database/table.frm’ (errno: 24 — Too many open files)
При использовании большого количества баз и/или таблиц в MySQL или MariaDB может вылазить ошибка:

 Can’t open file: ‘./mysql/user.frm’ (errno: 24)

или

[ERROR] /usr/sbin/mysqld: Can’t open file: ‘./database/table.frm’ (errno: 24 — Too many open files)

errno: 24 — Too many open files дословно переводится, как открыто слишком много файлов.

Обычно проблема кроется в ограничении количества одновременно открытых файлов сервером. Решение данной проблемы простое. Состоит из нескольких шагов.

1. В консоли сервера вбиваем: lsof -u mysql | wc -l

В результате мы узнаем сколько сейчас mysql открыла файлов.

2. Увеличиваем количество одновременно открытых файлов. Для этого идем /etc/my.cnf. В секции [mysqld] ищем параметр open_files_limit и увеличиваем его. Если такого параметра нет, то создаем его. Например, open_files_limit = 20000 . Значение параметра должно быть больше значения из пункта 1.

Далее выполняем перезагрузку базы данных MySQL или MariaDB. Из консоли из PhpMyAdmin заходим в базу и вводим запрос:

SHOW VARIABLES LIKE ‘open_files_limit’;

В большинстве случаев будет написано:

Variable_name       Value

open_files_limit    1024

Кому-то будет достаточно этих шагов. А кому-то придется выполнить остальные шаги.

3. Увеличим количество файловых дескрипторов пользователю с правами mysql, которые разрешено открывать. Обычно это пользователь с именем mysql. Идем /etc/security/limits.d/mysql.conf

Пишем в открытом файле или редактируем: mysql  —  nofile  20000

Цифра 20000 — это количество файлов, которое можно будет открывать пользователю с правами mysql.

4. Идем в каталог /etc/systemd/system/multi-user.target.wants/ . Редактируем файл mysql.service.

В файле ищем секцию [Service]. В нее дописываем или редактируем параметр LimitNOFILE=20000, 5. Далее перезапускаем демона в командной строке: systemctl daemon-reload .

6. Перезапускаем MySQL: systemctl restart mysql

7. Радуемся результату.

 

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
Ошибка mysql или mariaDB - Can't open file (errno: 24 - Too many open files), 5.0 out of 5 based on 1 rating

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*