Mysql: errno: 24 – Too many open files) (1018)
При создании бекапа выскочина ошибка
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 |