九个MySQL数据库经典错误( 四 )

大多数做 DBA 的同学 , 可能都会被开发人员告知 , 你们的数据库报了这个错误了 。赶紧看看是哪里的问题 。
这个问题是由两个参数影响的 , wait_timeout 和 interactive_timeout 。数据默认的配置时间是28800(8小时)意味着 , 超过这个时间之后 , MySQL 数据库为了节省资源 , 就会在数据库端断开这个连接 , Mysql服务器端将其断开了 , 但是我们的程序再次使用这个连接时没有做任何判断 , 所以就挂了 。
解决思路:
先要了解这两个参数的特性;这两个参数必须同时设置 , 而且必须要保证值一致才可以 。
我们可以适当加大这个值 , 8小时太长了 , 不适用于生产环境 。因为一个连接长时间不工作 , 还占用我们的连接数 , 会消耗我们的系统资源 。
解决方法:
可以适当在程序中做判断;强烈建议在操作结束时更改应用程序逻辑以正确关闭连接;然后设置一个比较合理的timeout的值(根据业务情况来判断)
Top 10 :can't open file (errno:24)
有的时候 , 数据库跑得好好的 , 突然报不能打开数据库文件的错误了 。
解决思路:
首先我们要先查看数据库的 error log 。然后判断是表损坏 , 还是权限问题 。还有可能磁盘空间不足导致的不能正常访问表;操作系统的限制也要关注下;用 perror 工具查看具体错误!
linux:/usr/local/mysql/bin # ./perror 24
OS error code 24: Too many open files
超出最大打开文件数限制!ulimit -n查看系统的最大打开文件数是65535 , 不可能超出!那必然是数据库的最大打开文件数超出限制!
在 MySQL 里查看最大打开文件数限制命令:show variables like 'open_files_limit';
发现该数值过小 , 改为2048 , 重启 MySQL , 应用正常
处理方法:
repair table ;
chown mysql 权限
清理磁盘中的垃圾数据
今后还会继续总结 MySQL 中的各种报错处理思路与方法 , 希望跟各位老铁们 , 同学们一起努力 。多沟通多交流!




推荐阅读