ITPub博客

首页 > 数据库 > MySQL > Mysqldump 在备库进行备份时会阻塞备库的sql_thread

Mysqldump 在备库进行备份时会阻塞备库的sql_thread

原创 MySQL 作者:kakaxi9521 时间:2022-01-24 16:36:32 0 删除 编辑

情况描述:

  1. 读写分离环境,Mysql 主库正常。

  2. 备库存在大查询持续了7个小时之久。

  3. 夜间10点备份启动出现waiting for table flush 等待事件。

  4. 备份后面进来的会话出现积压且前台应用被阻塞。


处理过程:

  1. 收到报警后检查主从延迟情况,show slave status\G;

    有延迟。 

  2. select * from information_schema.processlist order by time desc; 检查当前session 的执行情况。

    看到有4个session 执行了28000s 未执行完成, 有会话处于waiting for table flush 状态。此4个会话从堡垒机终端过来确定不是应用中的session。

  3. 将此4个session kill 掉, show processlist 查看会话状态, 恢复正常, 主从延迟追平。


故障处理过后回想什么原因导致会话积压,前台应用被阻塞。

  1. 大查询未结束。

  2. mysqldump 在备份时会进行flush table 操作出现等待。

  3. flush table 操作无法完成后面的session 被阻塞。


测试环境复现场景中发现的现象:

    1.  使用mysqldump 在备库进行备份,备份sql中不加--single-transaction 时,主库中对表进行update 操作从库的sql_thread 线程会被mdl 锁阻塞,出现主从延迟。


需要掌握的知识点:

mysqldump 备份的整个过程:

https://www.cnblogs.com/digdeep/p/12455757.html


MDL 锁:

https://www.cnblogs.com/zengkefu/p/5690385.html



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2853824/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle虚拟索引
请登录后发表评论 登录
全部评论

注册时间:2009-04-13

  • 博文量
    136
  • 访问量
    178935