业务场景:
秒级数据同步要求的容灾场景,通过阿里云数据库同步工具DTS实时将阿里云上RDS的数据实时同步至自建MySQL数据库
故障现象:
DTS同步延时高达2小时,造成主备数据不一致,无法满足业务的容灾需求
排查经过:
首先,在阿里云控制台提交问题工单,工单同学反馈,目标数据库RT(响应时间)过高。即,MySQL数据库无法及时处理RDS同步过来的数据,猜测可能是由于主机资源不足导致
接下来,使用top命名查看MySQL宿主机CPU使用情况,发现主机整体CPU消耗并不高,说明主主机资源关系不大,但MySQL进程占单CPU线程超过100%,问题出在MySQL数据库程序本身
接着,通过 SHOW PROCESSLIST命令查看MySQL的进程列表,发现部分SQL语句执行耗时超过180S,且事务比较密集
再接着,EXPLAIN对应SQL语句,发现使用了全表扫描(50多万行),未引用索引
又接着,用SHOW CREATE TABLE命令查看,无索引
问题基本定位,联系开发人员为该表创建索引,DTS恢复毫秒级同步延时,故障解决
经验总结:
容灾场景,两端资源应一致,以确保业务运行体验一致