MySQL 打开文件失败问题的解决

MySQL 打开文件失败相关的错误主要有如下 3 种:

shell> perror 23
OS error code  23:  File table overflow
shell> perror 24
OS error code  24:  Too many open files
shell> perror 11
OS error code  11:  Resource temporarily unavailable

这些错误通常是因为不能为 MySQL 分配足够多的文件描述符造成的。
在 MySQL 数据库里统计已经打开的文件数可以查看状态参数 Open_table_definitions 和 Open_tables ,在 MySQL 8 之后,因为没有 frm 文件,只看 Open_tables 状态参数。具体打开了哪些表可以用 show open tables; 命令进行查看。
在 OS 层查看已经打开的文件数可以用下面的命令:

 ls -l /proc/`pidof mysqld`/fd|wc

要解决这些问题通常有两种方法,一种是减少 MySQL 同时打开的文件数量,例如减少参数 table_open_cache 或/和 max_connections 。
另一种方法是增加 MySQL 可以打开的文件数量。增加 MySQL 的参数 open_files_limit ,这个参数比较绕, MySQL 启动时这个参数起作用,在运行的时候系统会自动调整,会根据下面两个公式选择其中一个大的数:

10 + max_connections + (table_open_cache * 2)
max_connections * 5

到 MySQL 8.0.19 版本之后就直接用操作系统的限制了,具体的设置方法要根据操作系统定,linux 是由文件 /etc/security/limits.conf 定。
检查方法是:

cat /proc/`pidof mysqld`/limits |grep "Max open files"
姚远ACE CSDN认证博客专家 ACE 华为云 MVP
Oracle ACE,华为云 MVP,Oracle10g,12c OCM; MySQL 5.6,5.7,8.0 OCP;CCNA; EMC Certified; IBM P Certified; RHCE; SQLServer 764; DB2 Certified; TOEIC 890;获得过两次国家部级科技进步奖;发明过两项计算机专利。微信:yaoyuanace 邮箱:yaoyuanace(at)qq.com
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页