大表更改字段问题

大表更改字段问题

故障描述:

客户端各处接口请求失败

故障过程

  • 晚上6点开始报警
  • 回滚access新上线代码, 继续报警
  • 发现数据库db02机器响应异常
  • 45分dba确认在该机器上业务的query 等待mdl (这个需要去了解一下是啥),kill掉sleep的query后服务恢复

故障分析

  • 6点的时候对歌曲表(一个4000w量级, 字段也很多的表进行了 该表操作, 新增了一个字段)
  • 该操作同步到从库02机器后, 被慢查block, 整个block链路, 慢查block了改表的mdl, mdl又block了其他的查询, 其他的查询又block住了tornado服务

因为为了快速恢复服务, dba kill掉sleep的query操作, 无法查找具体的慢查询sql

推测:

确认改表引起的mdl为表级锁, 所以慢查肯定是发生在mi_song表。 并且我们使用了miproxy(小米的连接数据库的一个代理) miproxy在路由请求时会把事务都路由在主库上, 所以这次慢查询时没有显氏开启事务的, 另外查询都是通过music_access项目创建出来的对象, 该对象默认时开启事务, 所以排除这个项目引起次忙查。 其他可能的忙查源自人工操作, 或者数据工厂
(感觉这个结论有问题)

你可能感兴趣的:(大表更改字段问题)