zoukankan      html  css  js  c++  java
  • 【原创】MySQL复制slave服务器死锁案例

    MySQL复制刚刚触发了一个bug,该bug的触发条件是slave上Xtrabackup备份的时候执行flushs tables with read lock和show slave status有可能和SQL Thread形成死锁。

    该bug在MySQL5.6.23上已修复, https://bugs.mysql.com/bug.php?id=70307

    15:24分开始收到报警,这台slave上发生阻塞,并发线程升高,下面描述下死锁和阻塞是如何形成的

    1、slave上sql thread执行SQL,还未提交

    这是当时抓取到的事务信息,63就是sql thread,活动的事务运行了479S,可以计算出这个事务开始的时间约在2018-06-08 15:15:42

     

     2、Xtrabackup进程执行flush tables with read lock

     

    3、sql thread执行commit,被blocked,Waiting for commit lock (holding rli->data_lock, waiting for MDL_COMMIT)

    4、Xtrabackup进程执行show slave status被block (holding LOCK_active_mi and mi->data_lock, waiting for rli->data_lock),形成死锁

     

    5、其他大部分事务都在等待Waiting for global read lock,形成阻塞,并发线程数升高

    6、kill掉sql thread后,阻塞消失

     

  • 相关阅读:
    mysql存储过程的优点
    MySQL复制
    优化数据库的方法
    MySQL表分区
    Http请求
    memcache和redis的区别
    触发器实现原理
    PHP常见数组函数与实例
    git 打包指定提交过的代码
    发送HTTP请求方法
  • 原文地址:https://www.cnblogs.com/wangdong/p/9243027.html
Copyright © 2011-2022 走看看