产线事故:删除创建mysql索引

单表数据量:670W;

删除一个老的索引,新建一个新的索引。

事故原因:

先删除索引,应用访问量大,没有索引自然慢,数据库CPU飚到100%;新索引创建失败。

直接造成交易打烊。

日志:

------[2019-03-26 19:39:48]------
检查Threads_running(运行中的线程数量),它在一定程度上代表了当前数据库的负荷。
[Threads_running : 28 ] 正常。

------[2019-03-26 19:39:48]------
set lock_wait_timeout=10

------[2019-03-26 19:39:48]------
开始执行SQL...

------[2019-03-26 19:39:59]------
Lock wait timeout exceeded; try restarting transaction

------[2019-03-26 19:39:59]------
重试执行第1次...

------[2019-03-26 19:39:59]------
检查Threads_running(运行中的线程数量),它在一定程度上代表了当前数据库的负荷。

------[2019-03-26 19:39:59]------
[Threads_running : 142 ]当前数据库繁忙。暂停5S后将执行第1次重试,请等待...

------[2019-03-26 19:40:04]------
开始重试检查Threads_running。

------[2019-03-26 19:40:04]------
[Threads_running : 143 ]当前数据库繁忙。暂停5S后将执行第2次重试,请等待...

------[2019-03-26 19:40:09]------
开始重试检查Threads_running。

------[2019-03-26 19:40:09]------
[Threads_running : 143 ]当前数据库繁忙。暂停5S后将执行第3次重试,请等待...

------[2019-03-26 19:40:14]------
开始重试检查Threads_running。

------[2019-03-26 19:40:14]------
[Threads_running : 143 ]当前数据库繁忙。暂停5S后将执行第4次重试,请等待...

------[2019-03-26 19:40:19]------
开始重试检查Threads_running。

------[2019-03-26 19:40:19]------
[Threads_running : 143 ]当前数据库繁忙。暂停5S后将执行第5次重试,请等待...

------[2019-03-26 19:40:24]------
开始重试检查Threads_running。

------[2019-03-26 19:40:24]------
[Threads_running : 143 ] 当前数据库繁忙!任务取消执行,请稍后数据库空闲后重试!

处理方案:

下线应用,kill掉CPU链接,等CPU降下来手工创建索引。启动应用,正常。

经验教训:

1、加强DDL语句审核

2、先建索引,再删索引,顺序一定要对,尤其产线。

猜你喜欢

转载自www.cnblogs.com/huahua035/p/10603225.html