免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8129 | 回复: 7
打印 上一主题 下一主题

/usr/libexec/mysqld: Incorrect key file for table [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-20 15:34 |只看该作者 |倒序浏览
5可用积分
最近,MYSQL经常报“/usr/libexec/mysqld: Incorrect key file for table '/var/mysql/tmp/#sql_***.MYI'; try to repair it”的错误。网上很多都是因为磁盘不足影响的,但我看了下
[root@test01 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_test01-lv_root
                       50G  4.8G   42G  11% /
tmpfs                 2.0G  236K  2.0G   1% /dev/shm
/dev/sda1             485M   37M  423M   8% /boot
/dev/mapper/vg_test01-lv_home
                      404G  199M  383G   1% /home

所以感觉不是磁盘大小问题。只要出现上面的报错,不久。CPU和内存就会急升,最后tomcat会挂掉,mysql某些表会访问不了。

[root@test01 ~]# mysql --version
mysql  Ver 14.14 Distrib 5.1.52, for redhat-linux-gnu (x86_64) using readline 5.1
[root@test01 ~]# uname -a
Linux test01.abc.com 2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@test01 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3925       1460       2464          0        120        308
-/+ buffers/cache:       1031       2894
Swap:         5983         57       5926
1个2核CPU

以下是我的my.conf文件:
[client]
default-character-set=utf8
loose-default-character-set     = utf8

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server = utf8
#default-character-set=utf8
lower_case_table_names=1
default-storage-engine=INNODB
skip-name-resolve
log-bin=log-bin
log_bin_trust_function_creators=1

table_open_cache=1024
sort_buffer_size=2M
join_buffer_size=1M
read_rnd_buffer_size=1M
query_cache_size=128M
thread_cache_size=8
max_connections=2000
#
#tmp_table_size=64M
#max_heap_table_size=128M
#
innodb_buffer_pool_size=256M
innodb_log_buffer_size=128M
innodb_open_files=3000

tmpdir=/var/mysql/tmp

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
tmpdir=/var/mysql/tmp

这个问题是在我添加了红色部分参数之后就经常出现,我使用的是innodb,为什么会出*.myi的错误,*.myi是myisam的索引文件。请问,是什么原因造成的?3天了,完全没头绪。

最佳答案

查看完整内容

@a6447不知道楼主解决没有,你的问题治标的方法就是限制连接数,限制tmp_table_size=10M左右,限制最大连接数=100个左右。治根本在于sql语句优化,而不在于配置,你的错误确实是磁盘空间不足导致,磁盘空间不足的原因是产生了大量的临时表,产生临时表的原因是sql语句不够优化.

论坛徽章:
8
CU大牛徽章
日期:2013-09-18 15:20:48CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:17天秤座
日期:2013-10-30 14:01:03摩羯座
日期:2013-11-29 18:02:31luobin
日期:2016-06-17 17:46:36
2 [报告]
发表于 2013-11-20 15:34 |只看该作者
@a6447
不知道楼主解决没有,你的问题治标的方法就是限制连接数,限制tmp_table_size=10M左右,限制最大连接数=100个左右。
治根本在于sql语句优化,而不在于配置,你的错误确实是磁盘空间不足导致,磁盘空间不足的原因是产生了大量的临时表,产生临时表的原因是sql语句不够优化.

论坛徽章:
2
酉鸡
日期:2014-02-19 09:11:08摩羯座
日期:2014-05-23 10:16:16
3 [报告]
发表于 2013-11-20 17:04 |只看该作者
'/var/mysql/tmp/
你这里面是什么东西,去查看下呢

论坛徽章:
0
4 [报告]
发表于 2013-11-20 18:13 |只看该作者
类似
-rw-rw---- 1 mysql mysql 8.9K Nov 20 17:50 #sql185f_588_0.frm
-rw-rw---- 1 mysql mysql 8.5K Nov 20 17:50 #sql185f_588_1.frm
-rw-rw---- 1 mysql mysql 8.4K Nov 20 17:50 #sql185f_588_2.frm
-rw-rw---- 1 mysql mysql 8.9K Nov 20 17:50 #sql185f_588_3.frm
-rw-rw---- 1 mysql mysql 8.5K Nov 20 17:50 #sql185f_588_4.frm
-rw-rw---- 1 mysql mysql 8.9K Nov 20 17:45 #sql185f_58a_0.frm
-rw-rw---- 1 mysql mysql 8.5K Nov 20 17:45 #sql185f_58a_1.frm
-rw-rw---- 1 mysql mysql 8.4K Nov 20 17:45 #sql185f_58a_2.frm
-rw-rw---- 1 mysql mysql 8.9K Nov 20 17:45 #sql185f_58a_3.frm
-rw-rw---- 1 mysql mysql 8.5K Nov 20 17:45 #sql185f_58a_4.frm
-rw-rw---- 1 mysql mysql 8.9K Nov 20 15:25 #sql185f_5a_0.frm
-rw-rw---- 1 mysql mysql 8.5K Nov 20 15:25 #sql185f_5a_1.frm
-rw-rw---- 1 mysql mysql 8.4K Nov 20 15:25 #sql185f_5a_2.frm
-rw-rw---- 1 mysql mysql 8.9K Nov 20 15:25 #sql185f_5a_3.frm
-rw-rw---- 1 mysql mysql 8.5K Nov 20 15:25 #sql185f_5a_4.frm
回复 2# tiankafeiwu


   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
5 [报告]
发表于 2013-11-22 09:20 |只看该作者
楼上附的都是临时表的信息,看来应该要跟你注释掉的这个参数tmp_table_size=64M有关系?把临时表的大小限制放大些看看效果?

论坛徽章:
0
6 [报告]
发表于 2013-11-22 10:22 |只看该作者
#tmp_table_size=64M
#max_heap_table_size=128M
把这两个的注释去掉呢。。
tmp_table_size=64M
max_heap_table_size=128M


此外,你可以把tmpdir和datadir设置在一个目录下,尽量避免tmpdir目录不够用的情况
tmpdir=/var/lib/mysql

之前我们线上也是遇到这个问题,就是这样解决的。

论坛徽章:
0
7 [报告]
发表于 2013-12-11 18:19 |只看该作者
嗯。问题得到初步解决,让开发修改了语句。3Q回复 6# chinafenghao


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP