日期:2014-05-16  浏览次数:20911 次

mysqldump导致centos假死
本帖最后由 booou 于 2013-10-20 09:44:45 编辑

在执行mysqldump的时候,有时候能正常执行,但大多时候执行不完,并导致系统假死,约2分钟内连不上ssh。这个问题在昨天之前没遇到过,昨天也没更改过系统设置。

VPS(OpenVZ) 系统配置:
CentOS 6.4 32bit
mysql:5.5.32 (启用MyISAM, 禁用INNODB)
空闲空间:24G
CPU 信息:
model name : Intel(R) Xeon(R) CPU  E5620  @ 2.40GHz
cpu MHz : 600.020
cpu cores : 4

top 命令显示:
Cpu(s):  0.5%us,  0.3%sy,  0.0%ni, 99.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    524288k total,   321572k used,   202716k free,        0k buffers
Swap:   524288k total,        0k used,   524288k free,   259808k cached



测试命令:
mysqldump --default-character-set=utf8 -h 127.0.0.1 -u bakUser -pPASSWORD -P1230 MYDBNAME > /tmp/test.sql

情况:
1、在putty中执行以上命令后,很可能过2秒之后就发现SSH动不了了,然后可能要等2分钟才能再重新登录SSH,在这期间网站也访问不了,2分钟之后又正常了。
虽然出了问题,但还是在/tmp目录中生成了test.sql,不过大小只有1M多(在出错的情况下此值也变化不定),正常生成的sql大小是2.4M。
此时,在进程列表中会有这样一行:mysqldump --default-character-set=utf8 -h 127.0.0.1 -u bakUser -px xxxxxxxxxxx -P1230 MYDBNAME

2、另外,也试过先创建一个screen,然后执行以上命令,但情况同样。并且在等待2分钟之后,再次进入那个screen时,发现mysqldump还没执行完(正常来说应该1秒就应该完成了)。
由此估计是系统假死了。

3、在mysql的错误日志中,发现好多条类似的记录(数字“22820”有变化):
[Warning] Aborted connection 22820 to db: 'MYDBNAME' user: 'bakUser' host: '127.0.0.1' (Got an error writing communication packets)
估计是系统假死导致。


请问有没有解决方法呀?
先谢谢了!


------解决方案--------------------
官方说这是MySQL的一个Bug。Bug存在版本:MySQL 5.5 to 5.5.32 and 5.5.33
建议更换数据库版本,5.5我使用的是5.5.29,没有这种情况。

http://bugs.mysql.com/bug.php?id=69791
http://stackoverflow.com/questions/9923203/got-an-error-reading-communication-packets-in-mysql