====== 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
|
|