ITPub博客

首页 > 数据库 > MySQL > Mysql 从库如果有未提交的事务主库ddl操作导致主从延迟

Mysql 从库如果有未提交的事务主库ddl操作导致主从延迟

原创 MySQL 作者:kakaxi9521 时间:2022-01-24 17:10:02 0 删除 编辑

情况描述:

  1. 从库出现延迟,使用select * from information_schema.innodb_trx order by trx_started desc\G;  查看当前从库中的事务, 发现有一条1周前的事务未提交记录。

  2. 有waiting for table metadata lock 的等待事件,且session 中有一条表结构变更的ddl操作,也是处于waiting for table metadata lock。

  3. 主从有延迟。


处理过程:

     1.  1周前的那条事务记录时间太长, 觉得有问题, kill 掉,waiting for table metadata lock 等待事件消失,主从延迟追平。


事情处理过后回顾,猜测,未验证:

    从库如果有未提交的事务,如果主库中有对未提交事务中的表做ddl 的操作在备库会有waiting for table metadata lock 等事件,会导致主从延迟。 要么kill 未提交的事务,要么kill ddl 操作。


1月26日实验验证上面猜测:

主库,创建表t1:

备库, 表t1:

备库4个线程:

备库开启事务:

主库对表t1加一个字段:

查看备库状态,在生产上一般会话会非常多,此处的12线程是从库的sql_thread ,处于waiting for table metadata lock:

备库延迟:

备库上查看未提交的transaction, 未提交的transaction 线程18,kill 掉线程18备库延迟恢复正常。





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

请登录后发表评论 登录
全部评论

注册时间:2009-04-13

  • 博文量
    136
  • 访问量
    178932