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