MYSQL完美解决生产环境改表结构锁表问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL完美解决生产环境改表结构锁表问题相关的知识,希望对你有一定的参考价值。

参考技术A 有时候,会很不小心,在业务运行中执行了一条锁表语句。这时候该怎么办?

例如:修改元数据。

SHOW FULL PROCESSLIST 查看一下:

发现修改之后,锁表了。这时候怎么办? 杀死它 KILL 4623660

然后一切又恢复正常了。

一般对于数据量较大的表,需要修改表结构,或者做一些耗时比较久的锁表操作,建议在晚上(业务闲时)执行。这个时候可以配合使用任务处理一下。

如:修改一个表的字段长度,和添加索引

名词解释:

接着回家睡觉,第二天回来检查结果就好了。

附:添加唯一索引示例
mysql存储过程结合任务处理耗时操作

查看Mysql锁表语句

大早上的刷数据,大量的改表结构alter语句,就把表锁了。


数据库的使用过程中可能遇到锁表的情况,导致其他进程访问同样的表时出现超时的情况,如果是生产还会看到大量的pool 跪了,如果你在刷sql,你应该立即就会明白什么情况了。


show full processlist;


显示哪些线程正在运行,查看锁表语句等:

技术分享


锁表的情况如上图:waiting for table metadata lock,如果不是和其他事物冲突的情况下,它会自己好,也可以停掉自己刷的sql它就会释放锁,和其他事物冲突的情况下可以杀掉,kill 2292。


查看正在被锁定的的表,注意:这条在发生事故时我没执行过,不知道结果,每次都忘了。


show OPEN TABLES where In_use > 0;


查看正在锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;


查看等待锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;



本文出自 “蚂蚁” 博客,请务必保留此出处http://215687833.blog.51cto.com/6724358/1923549

以上是关于MYSQL完美解决生产环境改表结构锁表问题的主要内容,如果未能解决你的问题,请参考以下文章

查看Mysql锁表语句

Python 生产环境MySQL数据库增量备份脚本

企业生产环境shell脚本案例分享

锁_rac环境kill锁表会话后出现killed状态(解决)

vue打包后,接口请求404的完美解决方案

MySQL 系列 生产标准线上环境安装配置案例及棘手问题解决