Percona XtraBackup: Ошибка "Too many open files"
Исправляем ошибку нехватки файловых дескрипторов при выполнении резервного копирования с помощью Percona XtraBackup
При использовании Percona Xtrabackup 2.4.5 и младше необходимо иметь достаточную возможность по количеству открытых файлов в системе, чтобы открыть каждое табличное пространство InnoDB в инстансе для резервного копирования. Если вы используете innodb_file_per_table = 1
и имеете большое количество таблиц, то скорее всего получите ошибку следующего вида:
InnoDB: Operating system error number 24 in a file operation. InnoDB: Error number 24 means 'Too many open files' InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html InnoDB: File ./perconatst/perconatst154734.ibd: 'open' returned OS error 124. Cannot continue operation InnoDB: Cannot continue operation. |
Уточним какое количество файлов нам необходимо.
# find /var/lib/mysql/ -name "*.ibd" | wc -l 4753866 |
Проверим текущее максимальное значение открытых файлов
Для того, чтобы временно изменить количество одновременно открытых файлов (до перезагрузки), выполняем команду:
# sysctl -w fs.file-max=5000000
Для установки значения на постоянную основу добавим параметр в конфигурационный файл ядра /etc/sysctl.conf
и применим изменения “на лету”.
# echo "fs.file-max=5000000">> /etc/sysctl.conf sysctl -p /etc/sysctl.conf
Проверим текущее количество открытых файлов:
# cat /proc/sys/fs/nr_open 1048576
Увеличим ограничение ресурсов для сервиса MySQL, для этого добавим в конец файла /etc/security/limits.conf
следующие строки:
mysql hard nofile 2000000 mysql soft nofile 200000 |
Одновременно с этим добавим параметр в конфигурационный файл ядра /etc/sysctl.conf
и применим изменения “на лету”:
# echo "fs.nr_open=2000000">> /etc/sysctl.conf |
Альтернативные способы
Можно увеличить параметр в конфигурационном файле MySQL, но потребуется перезагрузка сервиса:
# echo "ulimit -n 2000000">> ~/.bashrc |