mysqldump数据库备份无法进行操作只能查询 --single-transaction
前因 :线上部署的项目客户反馈总是登录不上程序,提示链接超时,项目是前后端分离的 前端一直等待后端返回,等待超过10分钟前端就给出提示链接超时。
一、先把线程堵塞看一下
使用jstack 导出无法登录堵塞的地方 先搜代码里面调用的方法名 根据方法名找执行到哪一步 发现是卡到了数据库这块,可是代码里面的查询登录名是否存在都没问题,一到修改account表中当前登录人IP的时候就卡住了 感觉很奇怪
二、看一下数据库整在执行的sql
执行sql select * from information_schema.
PROCESSLIST
where info is not null;
发现 状态都是 Waiting for table metadata lock
感觉是某个东西把表锁住了 导致sql无法执行成功 程序就在等待,发现是一个本地执行的程序把表锁住了导致线程堵塞。
在网上搜了一下执行的sql (LOCK TABLES
account
READ )
发现是本地的一个数据备份执行的脚本
找到了 备份的地方 发现有些备份是8点才执行完 是和客户反馈后 我重启服务时间一致 大概就是这个原因了
三、修改mysqldump 备份
查了一下相关资料发