文档首页/ 数据复制服务 DRS/ 常见问题/ 时延相关/ DRS增量阶段时延增高可能原因
更新时间:2023-11-30 GMT+08:00

DRS增量阶段时延增高可能原因

问题现象

DRS在进行增量迁移或同步时,任务出现延迟高的现象。

可能原因

  • 原因1:全量阶段刚结束,增量迁移延迟高。全量迁移过程中,源库增量数据还在不断地写入,DRS需要在全量结束之后,将这部分增量数据同步到目标端去,因此时延较高。
  • 原因2:源库有大批量数据变更(导入、更新、删除)。大事务写入在源库执行时间本来就很长,而DRS把数据同步到目标库也需要一段时间,所以此时延迟会慢慢增加,如果此大事务的表没有主键或者索引,恢复时间会相应拉长。
  • 原因3:源库存在大批量DDL操作,DDL执行比较慢,同步到目标导致时延增高。
  • 原因4:DRS任务规格限制。DRS不同规格对应的性能上限不同,详细可参考规格说明,当源库数据写入量过大达到瓶颈时,就会导致任务出现延迟。
  • 原因5:目标库规格受限,达到写入瓶颈。以目标实例为RDS for MySQL为例,用户可以在RDS控制台查看数据库性能指标。
  • 原因6:可能存在热点更新。无主键表的写入会导致热点更新,源库对单一表或单一行的高频更新也会导致热点更新,从而导致时延增大。以RDS for MySQL为例,可以通过RDS的审计日志进行确认,详情可参考RDS审计日志
  • 原因7:网络不稳定导致的时延增大。

解决方法

  • 解决方法1:针对这种情况,DRS会自动追平时延,无需处理,用户可观察增量时延是否降低。
  • 解决方法2:存在大事务写入的情况时,等待更新完毕,或者从业务上考虑尽量避免大事务写入的情况。用户可查看源库执行历史,看是否有大事务的写入,同时可以在目标库查看DRS数据回放情况。以MySQL为例,可执行show processlist查看。
  • 解决方法3:源库应尽量避免执行批量DDL,如果必须执行DDL,请尽量在业务低峰期执行。
  • 解决方法4:重新创建任务,选择较大规格提升同步性能(目前,DRS同步仅支持任务类型为单AZ的同步任务升级实例规格,不支持降低规格,具体操作及约束限制可参考同步规格变更)。
  • 解决方法5:升级目标库的实例规格,提高目标库实例写入性能。以目标实例为RDS for MySQL为例,参考变更规格,升级实例配置。
  • 解决方法6:如果存在热点更新,需要等待热点更新完毕,或者从业务上尽量避免热点更新。
  • 解决方法7:网络延迟无法避免,用户可以通过专线网络接入源库和目标库实例减少延迟。