- 接力上节
上篇文章参考:https://yq.aliyun.com/articles/749360?spm=a2c4e.11155435.0.0.1df03312nyZXw1
- 治疗方案无效
根据上述连接解决方案,确实是可以解决常规的一些卡住问题,并且在当时调整以后确实任务也可以完整跑完成功;
但是再一次进行完整迁移测试还是出现了卡住的情况发生,查看数据迁移情况发现还是相同的表在相同的位置;
但是经过排查max_allowed_packet参数还是2G的大小设置,虽然dts后端可以通过调整batch来绕过这个问题,但是还是需要确认是什么大记录数据导致的该问题;
经过抓包发现,有一条大记录在通过dts同步到drds上的时候,drds解析失败报错;
怀疑是这条sql的记录被截断导致parse failed入库失败,导致dts任务卡住;
经过和客户应用同学沟通,客户反馈有这样的一条数据记录异常过大;
而通过dts同步到目标drds的最大只有4411305
- 拔毒疗伤
客户反馈这条数据是有问题的,可以删除掉,故而删除以后重启dts任务正常迁移完成,问题解决;
究其原因,客户反馈是大促活动会有很多1-2元的促销券,每次都会有10000多张,所以对应的字段就会很大;所以对于目前现有的主表增量,还是无法控制出现大的报文存在;
- 经验总结
对于如上出现的存在大字段text,blob的log表,在创建dts任务的时候,如果出现卡住的情况发生,可以通过调整max_allowed_packet参数,调整batch降低单次提交写入数据并重启任务,减少写入数据大小解决由于记录内容过大导致在drds层出现parse failed,导致数据写入失败的情况发生;还有就是如果存在有异常的大字段可以考虑规避,比如删除或者备份等;