更新时间:2024-09-23 GMT+08:00
分享

查询同步进度

实时同步进度展示了同步过程中,各同步对象的同步进度,DRS通过流式进度展示,可以帮助您实时了解同步完成的情况。

  • 在全量同步过程中,DRS展示进度总览,您可以查看结构、数据、索引迁移的进度。同步进度是根据同步对象的数量来统计百分比进行展示,当显示为100%时,表示该项同步完成。同步过程中,数据和索引的同步相对较慢。
  • 在全量同步过程中,DRS展示同步进度和明细,您可以查看具体同步对象的进度,当“对象数目”“已迁移数目”相等时,表示该对象已经同步完成,可通过“查看详情”查看每个对象的同步进度。增量同步中,“进度明细”将不再显示,您可以使用“同步对比”页签查看一致性情况。
  • 在增量同步过程中,DRS展示增量时延,可通过时延大小判断源和目标同步情况,时延为0代表源和目标瞬时一致,无新的事务需要同步。

前提条件

已登录数据复制服务控制台。

操作步骤

  1. 实时同步管理”界面,选中指定同步任务,单击任务名称,进入“基本信息”页面。
  2. 单击“同步进度”页签,查看表同步进度

    • 查看同步的百分比进度。
      • 当全量同步完成时,显示全量已完成100%。
      • 当全量同步完成后,开始进行增量同步,可在“同步进度”页签下,查看增量同步时延。
      • 增量时延也可在“实时同步管理”界面查看,当增量时延超过用户设置或系统默认的时延阈值时,任务管理界面增量时延显示为红色。
      • 当时延为0s时,说明源数据库和目标数据库的数据是实时同步的。

      时延 = 源库当前系统时间 - 成功同步到目标库的最新一个事务在源库的提交成功时间。

      一个事务同步的完整过程如下:

      1. 源端数据库的抽取;
      2. 经过网络的传输;
      3. 由DRS进行日志解析;
      4. 最终在目标数据库上的执行完成。

      这样完成了事务从源到目标的同步,时延为该事务最后在目标数据库上执行完成时的源库当前系统时间(current_time)与该事务在源库的提交成功时间(committed_time)的时间差,时延为0代表源和目标瞬时一致,无新的事务需要同步。

      长时间未提交事务和频繁DDL操作均可以造成高时延。

    • 查看同步对象的进度。在“进度明细”下,单击同步对象“详细信息”列的“查看详情”,查看对象的同步进度。

      同步进度明细只是全量阶段同步数据和跳过结构的展示,不支持更新。在进入增量同步后,进度明细数据将不再显示,您可以使用“同步对比”页签,进行一致性对比。

      图1 同步进度明细

    • 跳过同步对象。在同步对象“详细信息”列的“查看详情”中,可以单击对象操作列的“跳过并重启”跳过同步对象。
      • 目前实时同步支持MySQL、MariaDB、GaussDB(for MySQL)、TiDB为源链路在全量同步阶段跳过同步对象。
      • 支持跳过类型包含database、function、procedure、table_indexs、table_structure、view。
      • 跳过操作会使任务重启续传,如果任务处于暂停或异常状态,确认跳过后,任务将被会重新启动。
      • 如果任务处于全量同步状态,可能出现跳过前已完成对象同步的场景,此时的跳过操作将会失效。
      • 跳过对象成功后,如果后续同步过程中仍有关联该对象的操作,可能出现对象不存在导致任务失败情况。例如跳过table_structure后,在同步该表的索引和数据时,会出现对象不存在导致任务失败情况。
      • 跳过对象成功后,会导致对比结果不一致。
      • 跳过无主键表的table_structure会导致数据不一致,还可能出现表不存在导致任务失败的情况,请确认后再进行操作。
      • 跳过无主键表后出现表不存在导致DRS任务失败时,请先联系目标库运维工程师根据源数据库表结构和日志报错信息在目标库创建对应的表,然后单击任务对应操作列的“续传”,重新提交任务。

  3. 针对MySQL的同步场景,您可以在“同步进度”页签中查看源位点和已消费位点的信息。

    展示的位点信息刷新频率为每10s一次。

    图2 同步位点信息

  4. 针对Oracle为源、MySQL->Kafka、GaussDB->Kafka的同步场景,您可以在“同步进度”页签的“链路监控”表中,查看该同步任务执行过程中对源库分别做DML操作(Insert、Delete、Update)的次数。在“链路监控”列表的右上角,单击刷新列表,可查看到最新的监控数据。

    图3 链路监控
    1. 需要在源库进行DML操作并执行Commit后,该次操作数据才能够生效并统计到“链路监控”表中。
    2. DRS 根据重做日志的信息统计操作次数。
    3. Oracle 对于含 LOB 类型的表进行 INSERT、UPDATE 操作时会记录更多的重做日志信息:先基于非 LOB 的普通字段进行 INSERT、UPDATE操作, 再基于 LOB 类型的字段执行 。但 DRS 仅根据重做日志产生的操作信息进行统计,因此在链路监控操作审计时可能产生与实际影响行数不符的操作次数。
    4. Oracle 的 MERGE 语句作为一种方言化的 DML,在重做日志层面转化为 INSERT,UPDATE,DELETE 三种操作。DRS 会根据重做日志的信息将 MERGE 影响的行数归并到 INSERT,UPDATE,DELETE 三种操作的统计中。

  1. 针对Oracle->GaussDB主备版和分布式、GaussDB主备版->MySQL、GaussDB分布式版->MySQL、Oracle->MySQL(单增量)、Oracle->GaussDB(DWS)(单增量)的同步场景,您可以在“同步进度”页签中搜索查看详细的同步对象信息,对象搜索区分大小写。

    图4 同步信息

相关文档