当前位置: 首页 > news >正文

线上mysql表字段加不了Fail to get MDL on replica during DDL synchronize,排查记录

某天接近业务高峰期想往表里加字段加不了,报错:Fail to get MDL on replica during DDL synchronize
遂等到业务空闲时操作、还是加不了,
最后怀疑是相关表被锁了,或者有事务一直进行(可能这俩是一个意思),
于是通过查看当前正在执行的线程和事务ID,kill掉遂解决问题
最后还有两个疑问没解决:
1.kill线程ID时只能由对应的sql执行者删除,让运维删都删不了,会显示没有该线程号;
2.kill掉的线程ID正在执行的sql里貌似没有包含我要操作的表,这样居然也会互相影响吗
另外,其他同事也给了我一些更改表结构但不会锁表的语句(对于我这个场景不适应),但还是备份下

查当前mysql的线程和事务信息

SHOW FULL PROCESSLIST 是一个用于查看MySQL服务器当前运行的所有线程和它们的状态的SQL命令。通过执行这个命令,你可以获取有关MySQL服务器上运行的所有连接和线程的详细信息,包括SQL语句、连接时间、执行时间等。以下是执行 SHOW FULL PROCESSLIST 命令后可能返回的一些信息字段:Id:线程的唯一ID。
User:连接的用户名。
Host:连接的主机名。
db:当前正在使用的数据库。
Command:线程正在执行的命令(例如,Sleep、Query、Connect)。
Time:线程运行的时间(秒)。
State:线程的当前状态。
Info:线程执行的SQL语句。-- 显示mysql正在运行的线程
SHOW FULL PROCESSLIST-- 查询当前事务的线程号、事务ID,执行状态,sql
SELECT
trx_mysql_thread_id,trx_id,trx_started AS start_time,trx_state AS state,trx_query AS query
FROMinformation_schema.innodb_trx;

加字段但不锁表

ALTER TABLE `user` ADD `age` int NOT NULL DEFAULT '0' COMMENT '年龄', 
ALGORITHM=Inplace, 
LOCK=NONE;
http://www.lryc.cn/news/186417.html

相关文章:

  • vue3使用element plus的时候组件显示的是英文
  • Matlab参数估计与假设检验(举例解释)
  • qt响应全局热键
  • android 代码设置静态Ip地址的方法
  • Elasticsearch安装访问
  • 面试题-React(十):setState为什么使用异步机制?
  • 入侵防御系统(IPS)网络安全设备介绍
  • 【Linux基础】Linux的基本指令使用(超详细解析,小白必看系列)
  • 【无标题】Test
  • 1576. 替换所有的问号
  • MySQL学习笔记(快速入门)
  • 使用DNS查询Web服务器IP地址
  • docker虚拟网桥和业务网段冲突处理
  • axios登录,登出接口的简单封装步骤详解!
  • 九大装修收纳空间的设计,收藏备用!福州中宅装饰,福州装修
  • 软件工程概论
  • 仅个人记录:复现dotspatialdemo、打包、
  • 华为云云耀云服务器L实例评测|Elasticsearch的springboot整合 Kibana进行全查询和模糊查询
  • C++统一初始化和初始化列表
  • 【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法)
  • C++算法:寻找两个正序数组的中位数
  • 2.1 关系数据结构及形式化定义
  • “揭秘淘宝店铺所有商品接口:一键获取海量热销宝贝信息!“
  • 跟着播客学英语-Why I use vim ? part two
  • 【网络通信三要素】TCP与UDP快速入门
  • k8s集群的简单搭建
  • 语义分割笔记(三):通过opencv对mask图片来画分割对象的外接椭圆
  • Nosql redis高可用和持久化
  • 软件工程(1、2;5~7小测参考答案)
  • 服务器存储面临的两大难题