解决xtrabackup 报错innodb too many file问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决xtrabackup 报错innodb too many file问题相关的知识,希望对你有一定的参考价值。

软件版本:
centos 7.5-64
mysql 5.7
xtrabackup 2.4

按照相关文档和资料在centos7上安装了xtrabackup,然后依照命令进行备份报错:

[root@host7 ~]#innobackupex --default-file=/etc/my.cnf --user=root --password=111111 --host=localhost /Data/bak_db/

……
……
InnoDB: Operating system error number 24 in a file operation.
InnoDB: Error number 24 means ‘Too many open files‘.

操作系统,防止系统压力过大或者资源不足,对用户可以打开的文件数或进程数等做了相应的限制。
既然上面的命令报错,就想到了可能是系统限制导致的错误。

解决办法:

在redhat相关的Linux系统中,在?/etc/security/limits.conf ??配置(限制)每个用户的资源。

格式:
#<domain> <type> <item> <value>
# soft core 0
#
hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4

打开limits.conf文件,在最后添加一下内容:

  • soft nproc 2047
  • hard nproc 16384
  • soft nofile 65536
  • hard nofile 65536

添加后不是立即生效,需要重启

如果不方便重启,可以使用命令设置,下次重启后即失效:
?[root@host7 ~]# ulimit -n 65535

我是因为在自己虚拟机,直接重启系统后即可。
再次运行备份命令
[root@host7 ~]#innobackupex --default-file=/etc/my.cnf --user=root --password=111111 --host=localhost /Data/bak_db/
……
……
181207 14:14:53 [00] Copying ib_buffer_pool to /Data/bak_db/2018-12-07_14-13-51/ib_buffer_pool
181207 14:14:53 [00] ...done
181207 14:14:53 Backup created in directory ‘/Data/bak_db/2018-12-07_14-13-51/‘
MySQL binlog position: filename ‘mysql_3306.000009‘, position ‘154‘
181207 14:14:53 [00] Writing /Data/bak_db/2018-12-07_14-13-51/backup-my.cnf
181207 14:14:53 [00] ...done
181207 14:14:53 [00] Writing /Data/bak_db/2018-12-07_14-13-51/xtrabackup_info
181207 14:14:53 [00] ...done
xtrabackup: Transaction log of lsn (1063990393) to (1063990402) was copied.
181207 14:14:53 completed OK!

到相应目录查看也有了备份文件。

以上是关于解决xtrabackup 报错innodb too many file问题的主要内容,如果未能解决你的问题,请参考以下文章

报错问题:InnoDB: Error: log file ./ib_logfile0 is of different size

xtrabackup能同时备份myisam和innodb吗

XtraBackup的备份原理与应用示例

使用xtrabackup备份innodb引擎的数据库

使用xtrabackup备份innodb引擎的数据库

使用xtrabackup备份innodb引擎的数据库