离线同步日志分析

本文为您介绍如何查看离线同步任务执行过程中的日志详情。

进入日志详情页

您可以在运维中心或DataStudio界面查看任务运行日志。

模块

描述

运维中心

您可以进入周期实例测试实例补数据实例等页面,通过筛选条件过滤出需要查询的实例,进入对应实例的日志详情页。运行日志入口详情请参见查看周期实例执行补数据并查看补数据实例执行测试并查看测试实例

DataStudio界面

您可以在运行历史页面查看任务3天内的执行日志。

查看离线同步日志

下图为任务的执行过程中的简单日志信息。您也可以单击图中区域①或⑤的链接查看各阶段执行过程的详细日志信息。日志

区域

参数

说明

提交实例(区域①)

SUBMIT: 同步任务已经从调度系统向数据集成任务执行资源组提交同步任务的状态。代表同步任务已经渲染完成。

调度系统会将任务下发至数据集成资源组上执行,您可在区域①查看当前任务运行使用的数据集成资源组。不同类型资源组日志打印不同:

  • 任务运行在默认的资源组上,日志中会出现如下信息。

    running in Pipeline[basecommon_ group_xxxxxxxxx]

  • 任务运行在独享数据集成资源上,日志中会出现如下信息。

    running in Pipeline[basecommon_S_res_group_xxx]

  • 任务运行在数据集成自定义资源组上,日志中会出现如下信息。

    running in Pipeline[basecommon_xxxxxxxxx]

说明

您也可以在此区域单击Detail log url查看各阶段执行过程的详细日志信息。

申请资源(区域②)

WAIT:同步任务处于等待数据集成任务执行资源的状态。

当任务长时间处于等待数据集成任务执行资源的状态时,可能是其他任务运行占用该资源组上的资源导致当前任务无资源执行而处于等待状态,您可以通过以下方案解决此类问题:

  • 待占用该数据集成资源组的任务(即运行在该资源组上的任务)执行成功,将资源释放后启动运行。定位占用该资源的任务,详情请参见数据同步慢的场景及解决方案

  • 您也可以找到占用该资源的任务列表及责任人,与其协调降低任务并发数。

  • 您还可以减少当前同步任务的并发数并重新提交发布任务。

  • 还支持您对任务执行资源组进行扩容。详情请参见:扩缩容操作

开始同步(区域③)

RUN: 同步任务处于同步中的状态。

离线同步任务执行过程分为4个阶段:

  1. 前置准备

    系统将根据您的配置,将前置SQL下发至数据库执行,但并非所有任务都存在前置准备。

    • 以MySQL Writer为例,若您的任务配置了PreSQL,即存在执行数据同步任务之前先执行的SQL语句时,该SQL将在此阶段下发至数据库执行。

    • 以MySQL Reader为例,若您的任务配置querySql数据过滤(where),这些SQL将在此阶段下发至数据库执行。

    • 以写入MaxCompute为例,任务配置了写入前清空已有数据

    说明

    建议过滤条件使用索引字段进行过滤,避免SQL在数据库执行时间过长导致同步整体耗时过长,或在数据库执行超时导致同步任务被迫中断退出。

  2. 切分(拆分)任务

    此阶段将源端待同步数据切分为多个task,以便并发、分批进行读取数据,切分规则如下:

    • 关系型数据库:按照您在界面配置时指定的切分键splitPk,作为切分依据,将待同步数据切分为多个task,通过并发分批读取切分的task。若未设置切分键,将通过单并发同步任务。

    • LogHub/DataHub/Mongodb:按照shard数进行切分,任务并发上限不超过shard数。

    • 半结构化存储:按照文件数或文件数据量进行切分。例如,OSS任务并发上限不超过文件数。

  3. 同步数据

    此阶段将按照切分逻辑将切分出来的task,基于您配置的并发数进行分批同步。关系型数据库将按照上述切分键,切分为多个取数SQL,分别向数据库请求数据。

    说明
    • 实际执行过程中,您设置的并发数并非为实际执行的并发数。

    • 基于切分键切分产生的取数SQL,可能会由于切分键设置不合理,导致取数SQL在数据库执行时间过长导致同步整体耗时过长,或在数据库执行超时导致同步任务被迫中断退出。

    • 如果数据库当前负载过高,也可能会导致任务执行变慢。

  4. 后置准备

    系统将根据您的配置,将后置SQL下发数据库执行,但并非所有任务都存在后置准备:

    • 以MySQL Writer为例,若您任务的配置了PostSQL,即配置了数据同步执行后需要执行的SQL语句时,该SQL将在此阶段下发至数据库执行。

    • PostSQL在数据库的执行时长同样会影响整个同步任务的执行耗时。

执行完成(区域④)

执行完成有两种状态:

  • FAIL:同步任务运行失败。

  • SUCCESS:同步任务执行成功。

  • 任务运行失败时,将会在日志打印导致任务运行失败的关键报错信息,您可以在区域⑤的链接查看各阶段的详细执行过程。

  • 任务执行成功时,将会在日志打印同步数据总数、平均同步速度等信息。

说明
  • 若同步过程产生脏数据,将在日志出现Dirty data: xxR字样,脏数据不会写入目标端。

  • 若同步过程产生大量脏数据,将会影响数据同步的同步速度。若您对同步速度有要求,建议您先处理脏数据问题。脏数据介绍详情请参见离线同步任务配置相关能力

  • 您可以通过配置脏数据容忍条数控制同步产生的脏数据是否影响任务正常执行。离线同步任务默认允许脏数据,您可在任务配置界面进行修改。向导模式配置任务请参见通过向导模式配置离线同步任务。脚本模式配置任务请参见通过脚本模式配置离线同步任务

详细日志链接(区域⑤)

详细日志的链接。

您可以单击详细日志链接,查看各阶段执行过程的详细日志信息。

附录:关系型数据库切分键配置

  • 推荐splitPk用户使用表主键,因为表主键通常情况下比较均匀,因此切分出来的分片也不容易出现数据热点。

  • splitPk仅支持切分整型数据,不支持切分字符串、浮点和日期等其他类型数据。如果配置splitPk切分不支持的数据类型,则DataWorks会忽略splitPk功能,使用单通道进行数据同步。

  • 如果不填写splitPk,包括不提供splitPk或者splitPk值为空,数据同步视作使用单通道同步该表数据 。