/usr/sbin/mysqld: Can't open file: '/database/table.frm'(errno: 24)

MYSQL数据库出现错误,从错误日志中发现以下类似的提示,

/usr/sbin/mysqld: Can’t open file: ‘/database/table.frm'(errno: 24)

查看了对应表文件的权限及拥有组,确信没有问题。

根据错误代码errno:24 得知,该错误是指数据库打开了大量的文件,已超出系统本身允许打开的文件数量限制,因此导致被锁定。

通过登录

mysql -uroot -p密码

执行以下SQL命令

SHOW VARIABLES LIKE 'open%';

发现允许MYSQL可能允许的open_files_limit 数为1024,该值为默认值。

而事实上,我们通过ulimit -n命令,能发现系统本身允许打开的文件数量的值也是1024

 

 

解决方法

我们需要更改两项内容,来完成设置允许打开的文件数量大小的值的更改,并且,系统允许打开的文件数量的值起到先决作用,因为mysql允许打开的文件数量的值是不能大于系统的,而只能是小于或等于。

1:更改系统句柄

vi /etc/security/limits.conf

在对应处加上例如

* - nofile 10000

该值为系统允许的文件句柄打开数量总开关,因此该值的大小决定了例如php-fpm,apache,nginx,mysql等其它服务能够同时打开句柄的数量值。

本项修改需要重新登录SSH,再执行以下命令,才能看到是否生效。

ulimit -n

 
2: 更改MYSQL允许打开的文件数量值
 
打开vi /etc/my.cnf文件,在[mysqld]标签段中添加一行:

open_files_limit = 10000

然后重启mysql

 

点赞

发表评论