解決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!

到相應目錄查看也有了備份文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章