MySQL · 挖坑 · LOCK_active_mi/LOCK_msp_map 优化思路

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

MySQL · 挖坑 · LOCK_active_mi/LOCK_msp_map 优化思路

db匠 2017-03-08 10:52:58 浏览1732
展开阅读全文

背景

在MySQL中Slave相关操作一直存在一把大锁——LOCK_active_mi (5.5及之前版本,以及MariaDB),或LOCK_msp_map(5.6及之后的版本)。
在Slave操作中大家可能经常会遇到如下懵逼的操作:

  1. 线程1:STOP SLAVE;有事务要回滚,一直不结束,然后LOCK_active_mi一直被这个线程持有
  2. 线程2:SHOW SLAVE STATUS;拿不到LOCK_active_mi,无法执行。

SHOW SLAVE STATUS 经常作为监控脚本的语句被自动执行,然后就不停地被卡住,线程堆积,直到 too many connections。

等到了5.6引入了多源复制之后,这个问题就更严重了,LOCK_msr_map需要在访问任何通道时都被持有,因此操作两个不同的通道也可能冲突。

Percona曾经推出了

网友评论

登录后评论
0/500
评论