- 论坛徽章:
- 0
|
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语句不够优化.
|