|
本帖最后由 lujinke 于 2014-6-23 00:21 编辑
幕南风 发表于 2014-6-22 21:34 ![]()
1. 确定【lost connnection during query】这个错误和备份有关吗?
官方文档给出了该错误的三种原因: ...
其实我一直有怀疑,就算备份负载高,MySQL也不会拒绝链接或者丢失链接
后来上周五发现这个lost connection是程序部分的后台线程主动kill掉的,后台线程会主动kill掉
执行时间超过20s的sql,为什么一个query会20s还没有返回呢,通过程序日志发现lost connectiion的那些查询都不会是慢查询,他们都是对主键关键字进行查询的语句,后来结合另外一个帖子里面的备份锁表的场景,发现是我备份参数设置出现了问题,我并发对DB服务器上的每个DB进行备份并且使用了--single-transaction --master-data=2的选项,因为该选项会发出flush tables with read lock语句,造成全局读锁,这样一并发就会有问题了,实际上如果使用上面的选项,并发备份其实就变成串行备份了,因为单另一个线程在备份时,其他线程的flush tables with read lock会阻塞,后续所有的更新语句都会阻塞,所以导致了很多更新语句超过20s被暴力kill,现在我暂时使用了--skip-lock-tables来进行并发备份以避免备份期间更新丢失的问题, |
|