###簡介html
今天在使用innobackupex全量備份數據庫的時候發生了下面的錯誤mysql
190705 15:22:18 >> log scanned up to (258819807308) xtrabackup: Generating a list of tablespaces InnoDB: Allocated tablespace ID 565 for new/sgk, old maximum was 0 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 ./GroupData5/Group499.ibd: 'open' returned OS error 124. Cannot continue operation InnoDB: Cannot continue operation.
這個是指mysql進程超出了打開最多的文件數量,檢查下mysql數據文件data目錄下的文件總數。sql
[root@nbpi-centos-tpl backup]# find /data -type f|wc -l 2644
接着咱們查看mysql中innodb_open_files這個參數數據庫
登陸mysql,執行vim
show variables like '%open_files%';
centos
mysql> show variables like '%open_files%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | innodb_open_files | 2000 | | open_files_limit | 5000 | +-------------------+-------+ 2 rows in set (0.00 sec)
innodb_open_files的意思是限制Innodb能打開的表的數據。bash
這裏設置的是2000默認值,可是數據庫文件已經達到2644個了,因此報錯,咱們修改my.cnf中這個數值,以後重啓就行了,若是沒有,那就添加上服務器
vim /etc/my.cnf
spa
在[mysqld]
下加入innodb_open_files=5000
rest
以後重啓服務器
systemctl restart mysql
登陸數據庫查看驗證一下
show variables like '%open_files%';
以後從新備份就沒有這個錯誤了,若是還有那麼就是系統能夠打開的最大文件數目的問題了,執行
ulimit -a
查看系統open files這個值,以後使用
ulimit -n 5000
設置大就行了
歡迎關注Bboysoul的博客www.bboysoul.com Have Fun