MySQL 死锁的恢复

MySQL 死锁的恢复

  1. 死锁产生的原因
    • 怎么产生的死锁其实是一个复杂的问题, 但归根结底就是不同的事务锁住了不同的资源, 不能释放, 又在请求其他的资源, 其他的资源被另一个事务占用, 又在等待该事务释放资源, 互相等待, 互相又无法释放资源给其他事物, 造成死锁.
  2. 死锁的恢复
    • 重启服务器
      这个方法很直接, 但如果是线上环境就不好办了, 重启很麻烦.
    • 断开服务器与数据库的所有连接
    select replace(group_concat(concat('KILL ',id,';')), ',', '') from information_schema.processlist
            where user='card' and db = 'card' order by 1;
    
    -- 找到 card 数据库 card 用户的所有连接, 然后把这个 id 和 kill 连起来, 然后得到一个 SQL语句, 再次执行这个新生成SQL, 会把当前用户的所有连接杀掉, 死锁会恢复, 不用重启服务器.
posted on 2020-11-24 18:48  好好学习呀)  阅读(302)  评论(0编辑  收藏  举报