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

mysql BUG 导致 show processlist 有大量的show slave stauts 处于init状态

一、详细报错信息:

1、执行show slave status\G 卡住 && stop slave也卡住

在这里插入图片描述

2、show processlist 发现 Waiting for commit lock NULL 锁

在这里插入图片描述

3、错误日志报错主备同步用户认证失败

在这里插入图片描述

二、报错原因(分析过程):

1、排查备库日志发现报错用户认证失败

在这里插入图片描述

2、在备考上通过mysql -u mysqlbuckup -pxxx -hxxx -P3306 远程连接主库能连接上(排除用户名密码问题)
3、登陆数据库执行show slave status\G 卡住 && stop slave也卡住

在这里插入图片描述

4、执行show processlist; 发现system用户等待锁提交。(系统用户等待锁这个现象比较明显)

在这里插入图片描述

5、执行查看innodb_trx事务表发现仅有一条事务,并且是事务id是2

在这里插入图片描述

三、结论

查看官方网站发现在5.6.23版本之前有这样一个bug。

Bug#19843808
MySQL :: MySQL Community Server 5.6.23 已发布

 * Replication: If a client thread on a slave executed FLUSH
   TABLES WITH READ LOCK while the master executed a DML,
   executing SHOW SLAVE STATUS in the same client became
   blocked, causing a deadlock. The fix ensures that the
   read lock is only held during the period that the relay
   log is being updated and the deadlock is avoided. (Bug
   #19843808)

大概意思是 :

备库(备份的时候或者其他逻辑)会执行 FLUSH TABLES WITH READ LOCK 同时sql线程执行DML语句,如果这个时候在执行show slave status 会导致死锁。

四、解决方法:

可在线操作

1、临时解决方案
1)、数据库kill掉阻塞的事务(此问题的事务ID为2,其他环境可能不一样,注意修改)

kill 2

2)、执行show slave status\G(发现有报错)

在这里插入图片描述

3)、stop slave; && start slave && show slave status(发现主备状态恢复)

在这里插入图片描述

4)、检查发现没有大量等待 show slave status\G命令

在这里插入图片描述

二、永久解决方案升级数据库版本到5.6.23及以上版本。


http://www.kler.cn/a/543860.html

相关文章:

  • C#综合知识点面试集锦
  • ffmpeg -muxers
  • 小红书八股面经一份(JAVA开发)
  • PT8042 双触控双输出触摸 IC
  • 物联网(IoT)如何与人工智能(AI)的结合
  • 直接调字典控制器传字典名称和字典Value查具体的字典Label
  • Java调用C++动态库、入参为对象
  • websocketpp库使用:快速搭建一个websocket服务端
  • 【学习】如何高效通过CCRC信息安全服务资质认证
  • 介绍下SpringBoot在分布式架构中,如何实现读写分离
  • 晶闸管主要参数分析与损耗计算
  • 【Web安全测试】Burp中NEW_xp_CAPTCHA插件(含4.1和4.2)的下载安装和导入
  • 网络安全设备异构要求 网络安全设备硬件
  • 伺服报警的含义
  • PostgreSQL插件-pg_stat_statements-安装和使用
  • Unity-Mirror网络框架-从入门到精通之Multiple Additive Scenes示例
  • .NET Core中使用HttpClient模拟form-data格式数据提交
  • Spring Cloud 04 - 负载均衡和外部服务访问
  • 《LSTM与HMM:序列建模领域的双雄对决》
  • 什么手机卡最便宜 怎么办手机卡最便宜
  • AI前端开发对团队协作能力的影响:机遇与挑战并存
  • 从零开始认识大语言模型(LLM)
  • 读 DeepSeek-R1 论文笔记
  • 使用 Go 语言调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件。
  • NLP_[2]-认识文本预处理
  • jenkins自动化部署,环境搭建,应用部署