本文将为您介绍整库迁移的任务生成规则和约束限制。

整库迁移是帮助提升用户效率、降低用户使用成本的一种快捷工具,它可以快速把一个MySQL数据库内所有表一并上传到MaxCompute的工作,节省大量初始化数据上云的批量任务创建时间。

假设数据库内有100张表,您原本可能需要配置100次数据同步任务,但有了整库迁移便可以一次性完成。同时,由于数据库的表设计规范性的问题,此工具并无法保证一定可以一次性完成所有表按照业务需求进行同步的工作,即它有一定的约束性。

任务生成规则

完成配置后,根据选择的需要同步的表,依次创建MaxCompute表,生成数据同步任务。

MaxCompute表的表名、字段名和字段类型根据高级配置生成,如果没有填写高级配置,则与MySQL表的结构完全相同。表的分区为pt,格式为yyyymmdd。

生成的数据同步任务是按天调度的周期任务,会在第二天凌晨自动运行,传输速率为1M/s,它在细节上会因为同步的方式、并发配置等有所不同,您可以在同步任务目录树的clone_database > 数据源名称 > mysql2odps_表名中找到生成的任务,然后对其进行更加个性化的编辑操作。

说明 建议您当天对数据同步任务进行冒烟测试,相关任务节点可以在运维中心 > 任务管理中的project_etl_start > 整库迁移 > 数据源名称 下找到所有此数据源生成的同步任务,然后右键单击,测试相应的节点即可。

约束限制

由于数据库的表设计规范性的问题,整库迁移具有一定的约束性。
  • 目前仅提供MySQL和Oracle数据源的整库迁移至MaxCompute,后续Hadoop、Hive数据源功能会逐渐开放。
  • 仅提供每日增量、每日全量的上传方式。
    如果您需要一次性同步历史数据,则此功能无法满足您的需求,建议如下:
    • 建议您配置为每日任务,而非一次性同步历史数据。您可以通过调度提供的补数据,来对历史数据进行追溯,这样可避免全量同步历史数据后,还需要做临时的SQL任务来拆分数据。
    • 如果您需要一次性同步历史数据,可以在任务开发页面进行任务的配置,然后单击运行。完成后通过SQL语句进行数据的转换,因为这两个操作均为一次性行为。

    如果您每日增量上传有特殊业务逻辑,而非一个单纯的日期字段可以标识增量,则此功能无法满足您的需求,建议如下:

    • 数据库数据的增量上传有两种方式:通过binlog(DTS产品可提供)和数据库提供数据变更的日期字段来实现。

      目前数据集成支持的为后者,所以要求您的数据库有数据变更的日期字段,通过日期字段,系统会识别您的数据是否为业务日期当天变更,即可同步所有的变更数据。

    • 为了更方便地增量上传,建议您在创建所有数据库表的时候都有gmt_create和gmt_modify字段,同时为了效率更高,建议增加id为主键。
  • 整库迁移提供分批和整批迁移的方式
    分批上传为时间间隔,目前不提供数据源的连接池保护功能,此功能正在规划中。
    • 为了保障对数据库的压力负载,整库迁移提供了分批迁移的方式,您可以按照时间间隔把表拆分为几批运行,避免对数据库的负载过大,影响正常的业务能力。建议如下:
      • 如果您有主、备库,建议同步任务全部同步备库数据。
      • 批量任务中每张表都会有1个数据库连接,上限速度为1M/s。如果您同时运行100张表的同步任务,就会有100个数据库进行连接,建议您根据自己的业务情况谨慎选择并发数。
    • 如果您对任务传输效率有自己特定的要求,此功能无法实现您的需求。所有生成任务的上限速度均为1M/s。
  • 仅提供整体的表名、字段名和字段类型映射

    整库迁移会自动创建MaxCompute表,分区字段为pt,类型为字符串String,格式为yyyymmdd。

    说明 选择表时必须同步所有字段,它不能对字段进行编辑。