全部产品
大数据开发套件

整库迁移概述

更新时间:2017-08-22 20:21:03   分享:   

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

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

任务生成规则

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

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

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

备注:

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

约束限制

由于数据库的表设计规范性的问题,整库上传具有一定的约束性,具体如下:

  • 目前仅提供 Mysql 数据源的整库上传到 MaxCompute,后续 Hadoop/Hive 数据源、Oracle 数据源功能会逐渐开放。

  • 仅提供每日增量、每日全量的上传方式

    • 如果您需要一次性同步历史数据,则此功能无法满足您的需求,故给出以下建议:

      • 建议您配置为每日任务,而非一次性同步历史数据。您可以通过调度提供的补数据,来对历史数据进行追溯,这样可避免全量同步历史数据后,还需要做临时的 SQL 任务来拆分数据。

      • 如果您需要一次性同步历史数据,可以在任务开发页面进行任务的配置,然后单击 运行,完成后通过 SQL 语句进行数据的转换,因为这两个操作均为一次性行为。

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

    • 数据库数据的增量上传有两种方式:通过 binlog(DTS 产品可提供)和数据库提供数据变更的日期字段来实现。目前数据集成支持的为后者,所以要求您的数据库有数据变更的日期字段,通过日期字段,系统会识别您的数据是否为业务日期当天变更,即可同步所有的变更数据。

    • 为了更方便地增量上传,建议您在创建所有数据库表的时候都有:gmt_create, gmt_modify 字段,同时为了效率更高,建议增加 id 为主键。

  • 整库上传提供分批和整批上传的方式

    分批上传为时间间隔。目前不提供数据源的连接池保护功能,此功能正在规划中。

    • 为了保障对数据库的压力负载,整库上传提供了分批上传的方式,您可以按照时间间隔把表拆分为几批运行,避免对数据库的负载过大,影响正常的业务能力。以下有两点建议:

      • 如果您有主、备库,建议同步任务全部同步备库数据。

      • 批量任务中每张表都会有 1 个数据库连接,上限速度为 1M/s。如果您同时运行 100 张表的同步任务,就会有 100 个数据库进行连接,建议您根据自己的业务情况谨慎选择并发数。

    • 如果您对任务传输效率有自己特定的要求,此功能无法实现您的需求。所有生成任务的上限速度均为 1M/s。
  • 仅提供整体的表名、字段名及字段类型映射

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

    注意:

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

本文导读目录
本文导读目录
以上内容是否对您有帮助?