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