mysql5.7.10 出现waiting for table metadata lock
来源:互联网 发布:什么软件可以打电话 编辑:程序博客网 时间:2024/05/16 12:53
遇到个innodb表被锁住的问题,表的任何操作都不可以正常进行,
>show processlist;
发现多个该表的查询进程的状态为waiting for table metadata lock,巧的发现表被锁的同时正在对表进行DDL操作,所以当下的猜测是DDL操作的同时有人改表数据啦各种猜测,猜来猜去还是得逐个排查,其中有个说法是如果存在对该表的任何操作的事务没有commit会出现上述情况,顺着这条线查,
首先查找没有提交的事务(一直处于RUNNING状态的)
>SELECT * FROM information_schema.INNODB_TRX(INNODB_LOCKS|INNODB_LOCK_WAITS)
还真发现两条正在RUNNING的事物,根据结果返回的trx_mysql_thread_id , 根据这个ID去show processlist结果中去查找对应的ID字段和trx_mysql_thread_id是相同的进程,获取该连接的host及用户信息,从而锁定导致表锁定的使用者是谁。到这一步问题仍未解决,查看mysql日志,发现很多连接中断的信息及 Got an error reading communication packets提示:
将错误提示信息Got an error reading communication packets, 在mysql的参考手册中去查找相关结果(搜索关键字自己视情况而定)
在结果页面中找到同时包含 Aborted connection和communication error关键字的内容,连接为https://dev.mysql.com/doc/refman/5.7/en/communication-errors.html
注意到手册中提到的其中一个原因:
再根据之前找出的造成死锁的用户,将导致死锁的一直在的事物的线程手动kill掉,让刚才的登录用户继续跑其应用,这时候发现又出现一直在RUNNNING状态的事物,让其检查发现咩有调用mysql_close相关的,加上mysql_close调用后,不会出现一直没有提交的事物。到此以为,以为问题全部定位。但是注意到了另一个会造成的原因,
也就是说当连接没有断开时,sleep的时间大于wait_timeout和interactive_timeou设置的值时也会导致日志中问题的出现(默认值28800s=8小时)。于是重新开启没有调用close的应用,发现即使存在咩有提交的事物也可以对表进行其他正常查询写入操作,又对比了下之前事物的开始时间,从开始到现在存在时间并未超过8小时, 而且事物开始RUNNING前一段时间是没有出现metatable lock的情况。此时联想到了表死锁是发生在DDL操作的时候的,再一搜:
总算是彻底找到原因,其实如果之前就具备这样的只是储备,查到
>SELECT * FROM information_schema.INNODB_TRX结果时就可以完全定位问题了,不过周折一圈后也倒是收获不少,遗憾的事白天的例子咩有截图,有时间完整重现下案例。意识到自己知识的储备太欠缺了,后续赶上。
- mysql5.7.10 出现waiting for table metadata lock
- 故障案例--mysql5.5 myisam引擎出现Waiting for table metadata lock
- Waiting for table metadata lock
- Waiting for table metadata lock
- Waiting for table metadata lock
- Waiting for table metadata lock
- MySQL出现Waiting for table metadata lock的场景浅析
- MySQL出现Waiting for table metadata lock的场景浅析
- mysql ALTER TBALE出现waiting for table metadata lock错误
- mysql-之Waiting for table metadata lock
- 记一次Waiting for table metadata lock
- mysql Waiting for table metadata lock
- mysql出现Waiting for table metadata lock的原因及解决方案
- mysql出现Waiting for table metadata lock的原因及解决方案
- drop、delete、truncate、alter表时show processlist出现Waiting for table metadata lock状态
- drop、delete、truncate、alter表时show processlist出现Waiting for table metadata lock状态
- MySQL出现Waiting for table metadata lock的原因以及解决方法
- MySQL出现Waiting for table metadata lock的原因以及解决方法
- IntelliJ IDEA 学习笔记
- shell命令技巧小记
- 备受争议的ROS系统 ,在工业机器人领域不受宠竟然是因为…
- hibernate外键关联————一个小错,弄一下午
- Android AndroidManifest.xml文件属性全面解析
- mysql5.7.10 出现waiting for table metadata lock
- CSDN博客积分规则,快速获取csdn积分方法
- Shell 数组
- jconsole监控远程linux tomcat运行情况的配置
- PIL、Pillow安装使用方法
- Java基础笔记
- 阿里云快速搭建一个静态网站
- java 静态内部类
- gradle配置国内镜像