• pt-online-schema-change导致锁等待Waiting for table metadata lock 引发线上小事故(异常)


    #####################################

    背景:

       业务对mysql集群的一个从库实例的dashboard_scheduled_history表发起了一个慢查询,有多慢呢?已经执行了一个半小时还没执行完,这个表是个大表,有4000多万行,然后我就执行了pt-online-schema-change对这个表添加索引,再然后就去上了个厕所。

    问题:

    慢查询导致pt-online-schema-change工具一直无法获得元数据锁,该工具一直处于Waiting for table metadata lock状态,导致该从库实例主从延迟越来越大,业务写入的数据,在该从库上查不到从而导致业务异常。

    临时解决:

    1)踢掉该从库实例的流量;
    
    2)kill掉业务慢查询;
    
    3)执行pt-online-schema-change进行修改表结构;
    
    4)当该从库实例追上主库后,再将流量打到该从库实例;

    如何永久性解决这个问题呢?

    1)dba执行ddl的时候,还是不能大意,需要关注执行状况,发现一直没动静,估计就是拿不到元数据锁了,需要先kill掉慢查询或未提交的事务
    
    2)执行pt-online-schema-change工具后,应该自动化跟踪该工具的执行状态,一旦发现该工具处于Waiting for table metadata lock状态,就kill掉这个工具的进程,直接返回

       

    ########################################

    igoodful@qq.com
  • 相关阅读:
    pycharm中以pytest的方式运行测试用例
    jmeter 固定吞吐量控制器 Constant Throughput Timer
    jmeter 循环控制器使用
    jmeter 24个常用函数
    jmeter 参数化取唯一值
    jmeter之json提取器
    【转】Jmeter如何把响应数据的结果保存到本地的一个文件
    jmeter测试并发
    jmeter参数为Excel表格
    jmeter接口调用
  • 原文地址:https://www.cnblogs.com/igoodful/p/15244186.html
Copyright © 2020-2023  润新知