起因
业务部门反馈测试环境进不去了,查了一下日志报错,inesrt log表的时候Mysql gone away,
1.show process_list
查看一下是否有死锁的进程,发现 state 字段下大量的
waitting for table level lock
,出现了表级锁等待的场景,我们的数据库是InnoDB引擎,大概率猜测一下问题原因可能是大量的事物排队待读,同时这时候我们出现写表操作,就会出现这种问题,但是测试库的一个log表示不会出现这么高并发读的场景的
2.后来发现是某个同事在mysqldump表,dump表的时候会导致数据库出现标所,这时候我们进入后台的时候,会往log表里面写日志,这时候就会出现等待的场景,等待超时以后,mysql gone away断开了链接。
解决
1.使用 mysqldump 备份数据库时避免锁表 --single-transaction
2.备份尽量选择晚上或者凌晨,降低对系统的影响吧