当前位置: 首页> 财经> 金融 > xtrabackup 备份报错“too many open files“ 突然消失

xtrabackup 备份报错“too many open files“ 突然消失

时间:2025/7/12 4:52:14来源:https://blog.csdn.net/DBA_ChenJR/article/details/140210513 浏览次数:0次

问题描述

xtrabackup备份时候,一个有趣的问题,同样的环境同样的库,采用xtrabackup备份一直失败,而因为某次原因数据库重启过后,备份成功了。

模拟故障场景

准备环境

mysql 8.0.25
percona-xtrabackup-8.0.25
sysbench-1.0.20

使用sysbench 创建5000张表

sysbench  oltp_read_write --mysql-host=*.*.*.* --mysql-port=*** --mysql-user=** --mysql-password=** --mysql-db=test123 --tables=5000 --table-size=100  --threads=5 prepare

参数预置

/etc/security/limits.conf参数值

* soft nofile 100001
* hard nofile 100002
root soft nofile 100001
root hard nofile 100002
mysql soft nofile 1000
mysql hard nofile 1000
ulimit -n 
1000

my.cnf参数设置


table_open_cache=3000
open_files_limit=65535
innodb_open_files=65535

备份失败的情景

(1)使用mysql用户重启数据库

/bin/sh /usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my8.cnf --user=mysql &

(2)使用xtrabackup备份

xtrabackup --defaults-file=/etc/my8.cnf --user=** --password=** --host=*****  --port=***  --backup --parallel=10 --target-dir=/data/backup/full1 

报错


xtrabackup: open files limit requested 65535, set to 1000Operating system error number 24 in a file operation.
Error number 24 means 'Too many open files'
Refer to your operating system documentation for operating system error code information.
File ./test123/sbtest2588.ibd: 'open' returned OS error 124. Cannot continue operation
240705 15:02:32 [09]        ...done
Cannot continue operation.
xtrabackup: Can't create/write to file '/data/backup/full1/test123/sbtest3789.ibd' (OS errno 24 - Too many open files)[mysql@VM-20-8

报错显示
open files limit值不对,查看配置文件open_files_limit=65535,mysql操作系统用户的限制为1000

(3)登录数据库查看
open_files_limit | 1000

备份成功的情景

(1)使用root用户重启数据库

/bin/sh /usr/local/mysql8/bin/mysqld_safe --defaults-file=/etc/my8.cnf &

(2)使用xtrabackup备份


xtrabackup: open files limit requested 65535, set to 100001xtrabackup: Transaction log of lsn (494232950) to (494232960) was copied.
240705 15:19:31 completed OK!

(3)登录数据库查看

| open_files_limit           | 65535 |

问题总结

可以看到不同的用户启动数据库,导致open_files_limit的生效值不同。
open_files_limit : 如果是root账号启动 以my.cnf文件里面的值为准, 如果是mysql启动, 就可能是 ulimit -n 看到的那个值。

在my.cnf中配置open_files_limit=65535 ,当我们以mysql用户启动(mysql用户文件句柄数限制为1000),数据库中open_files_limit的生效值采用的事1000,疑问备份需要打开的表超过1000,因此备份失败;
而当我们以root用户启动数据,open_files_limit的生效值采用了my.cnf的值,该参数值大于备份需要打开的文件数,因此备份成功。

关键字:xtrabackup 备份报错“too many open files“ 突然消失

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: