Mysql: errno: 24 – Too many open files) (1018)

Автор | 10.12.2015

При создании бекапа выскочина ошибка

mysqldump: Couldn't execute 'SHOW TRIGGERS LIKE 'logs'': Can't read dir of './mydatabase/' (errno: 24 - Too many open files) (1018)

Хотя в limits.conf указано значение 30000 и в my.cnf

open-files-limit = 20000

И процесс запущен с правильными параметрами

/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/error.log --open-files-limit=20000 --pid-file=/var/run/mysql.run  --port=3306

su mysql
bash-4.2$ ulimit -Hn -Sn
open files                      (-n) 102400
open files                      (-n) 102400

Або

su - mysql -c 'ulimit -aHS' -s '/bin/bash'

Сам mysql тоже говорит, что все ок

mysq> show variables like 'open_files_limit'

| open_files_limit | 30000 |

Но оказалось, что systemd в Centos 7 плевал на все эти настройки и сам решает какие лимиты устанавливать

cat /proc/17070/limits
Limit                     Soft Limit           Hard Limit           Units
........
Max open files            1024                1024                files

Чтоб задать лимиты для mysql нужно делать теперь так
Создаем файл limits.conf в /usr/lib/systemd/system/mysqld.service.d
С таким содержимым:

[Service]
LimitNOFILE=20000

После чего применяем настройки systemd

systemctl --system daemon-reload

И рестартуем mysql

service mysql restart

Залишити відповідь