故障原因
下午15:11左右出现mysql服务器的cpu飙升到100%
处理过程
阿里云查看性能趋势,发现在15:11:39cpu飙升到100%
排查思路:
一般引起cpu飙升的原因很可能是扫描行数骤增
查看15:12:00之前的扫描行数,发现15:11:24的时候有一句sql执行delete操作过程中出现了全表扫描
该sql花了接近10分钟的时间执行完
当前处理方案为联系志成做了一次数据库主备切换,定位该sql的运行场景为清理数据请求,对invoice_audit_log表增加ent_code索引
暴露的问题
本次出现故障的原因主要是sql运行过程中出现了全表扫描,从目前的情况来看,代码中可能还隐藏着类似的情况
改进措施
对于全表扫描的sql语句,目前在遇到的情况下可以增加合适的索引
后续需要对xxx-pro做一些改造,支持多数据源连接,并能支持不同数据源之间的切换,可以将实时性要求较低的慢查询迁移到只读实例上执行