数据集成(Data Integration)是阿里巴巴集团提供的数据同步平台。该平台具备可跨异构数据存储系统、可靠、安全、低成本、可弹性扩展等特点,可为20多种数据源提供不同网络环境下的离线(全量/增量)数据进出通道。详情请参见 支持的数据源类型

本文将为您介绍如何通过数据集成在 HybridDB for PostgreSQL 中进行数据的 导入导出 操作。

应用场景

  • HybridDB for PostgreSQL 可以通过数据集成的同步任务将数据同步到到其他的数据源中,并对数据进行相应的处理。
  • 可以通过数据集成的同步任务将处理好的其他数据源数据同步到 HybridDB for PostgreSQL。

流程概述



  1. 数据源端新建表。
  2. 新增数据源。
  3. 向导模式或脚本模式配置同步任务。
  4. 运行同步任务,检查目标端的数据质量。

准备工作

  1. 开通阿里云主账号,并建好账号的访问秘钥,即 AccessKeys。
  2. 开通 MaxCompute,这样会自动产生一个默认的 MaxCompute 数据源,并使用主账号登录 DataWorks。
  3. 创建项目。您可以在项目中协作完成工作流,共同维护数据和任务等,因此使用 DataWorks 之前需要先创建一个项目。
    注意

    如果您想通过子账号创建数据集成任务,可以赋予其相应的权限。详情请参见 准备 RAM 子账号项目成员管理

HybridDB for PostgreSQL 准备工作

  1. 进行数据导入操作前,首先通过 PostgreSQL 客户端创建好 HybridDB for PostgreSQL 中需要迁入数据的目标数据库和表。
  2. 当需要迁出数据的源数据库为HybridDB for PostgreSQL时,请通过HybridDB for PostgreSQL的管理控制台进行 IP 白名单设置,详情请参见 添加白名单

    通过 HybridDB for PostgreSQL 的管理控制台进入白名单设置添加下列 IP 地址:

    10.152.69.0/24,10.153.136.0/24,10.143.32.0/24,120.27.160.26,10.46.67.156,120.27.160.81,10.46.64.81,121.43.110.160,10.117.39.238,121.43.112.137,10.117.28.203,118.178.84.74,10.27.63.41,118.178.56.228,10.27.63.60,118.178.59.233,10.27.63.38,118.178.142.154,10.27.63.15,100.64.0.0/8

    如下图所示:



    注意

    若使用自定义资源组调度 HybridDB for PostgreSQL 数据同步任务,必须把自定义资源组的机器 IP 也加到 HybridDB for PostgreSQL 的白名单中。

新增数据源

注意

只有项目管理员角色才能够新建数据源,其他角色的成员仅能查看数据源。

本文以添加 HybridDB for PostgreSQL 的数据源为例:

  1. 以开发者身份进入 DataWorks 管理控制台,单击对应项目操作栏中的 进入工作区

  2. 单击顶部菜单栏中的 数据集成,导航至 数据源 页面。

  3. 单击 新增数据源,弹出支持的数据源类型。如下图:

  4. 选择数据源类型为 PostgreSQL。
    图 1. 有公网IP


    配置项说明:

    • 数据源类型:有公网 IP。

    • 数据源名称:由英文字母、数字、下划线组成且需以字符或下划线开头,长度不超过 60 个字符。

    • 数据源描述:对数据源进行简单描述,不得超过 80 个字符。

    • JDBC URL:JDBC 连接信息,格式为:jdbc:postgresql://ServerIP:Port/Database

    • 用户名/密码:数据库对应的用户名和密码。

  5. 单击 测试连通性

  6. 测试连通性通过后,单击 确定

向导模式或脚本模式配置同步任务

通过数据集成向导模式导入数据

以向导模式将 MaxCompute(原 ODPS) 数据同步到 HybridDB for PostgreSQL 为例:

  1. 进入 数据集成 页面,新建同步任务,如下图所示:



    • 向导模式:向导模式是可视化界面配置同步任务,共五步:选择来源,选择目标,字段映射,通道控制,预览保存。在每个不同的数据源之间,这几步的界面可能有不同的内容,向导模式可以转换成脚本模式。

    • 脚本模式:进入脚本界面你可以选择相应的模板,此模板包含了同步任务的主要参数,将相关的信息填写完整,但是脚本模式不能转化成向导模式。

  2. 选择来源。

    选择odps数据源及源头表hpg,数据浏览默认是收起的,选择后单击 下一步,如下图所示:



  3. 选择目标。

    选择HybridDB for PostgreSQL数据源及目标表public.person,选择后单击下一步,如下图所示:



    • 导入前准备语句:执行数据同步任务之前率先执行的 SQL 语句,目前向导模式只允许执行一条 SQL 语句,脚本模式可以支持多条 SQL 语句,例如清除旧数据。

    • 导入后准备语句:执行数据同步任务之后执行的 SQL 语句,目前向导模式只允许执行一条 SQL 语句,脚本模式可以支持多条 SQL 语句,例如加上某一个时间戳。

    • 主键冲突insert into 指当主键/唯一性索引冲突,数据集成视为脏数据进行处理。

  4. 映射字段。

    单击 下一步,选择字段的映射关系。需对字段映射关系进行配置,左侧 源头表字段 和右侧 目标表字段 为一一对应的关系,如下图所示:



    映射字段数据源端 添加一行 的功能,如下所示:

    • 可以输入常量,输入的值需要使用英文单引号包括,如’abc’、’123’等。

    • 可以配合调度参数使用,如 ${bdp.system.bizdate} 等。

    • 可以输入关系数据库支持的函数,如now()、count(1)等。

    • 如果您输入的值无法解析,则类型显示为’-’。

    • 不支持配置 MaxCompute 函数。

  5. 通道控制。

    单击 下一步,配置作业速率上限和脏数据检查规则,如下图所示:



    • 作业速率上限:指数据同步作业可能达到的最高速率,其最终实际速率受网络环境、数据库配置等的影响。

    • 作业并发数:作业速率上限=作业并发数*单并发的传输速率。

      注意

      当作业速率上限已选定的情况下,应该如何选择作业并发数?

      • 如果你的数据源是线上的业务库,建议您不要将并发数设置过大,以防对线上库造成影响。

      • 如果您对数据同步速率特别在意,建议您选择最大作业速率上限和较大的作业并发数。

  6. 预览保存。

    完成上述配置后,上下滚动鼠标可查看任务配置,如若无误,单击 保存,如下图所示:



脚本模式配置导入同步任务

{
  "configuration": {
    "reader": {
      "plugin": "odps",
      "parameter": {
        "partition": "pt=${bdp.system.bizdate}",//分区信息
        "datasource": "odps_first",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
        "column": [
          "id",
          "name",
          "year",
          "birthdate",
          "ismarried",
          "interest",
          "salary"
        ],
        "table": "hpg"//源端表名
      }
    },
    "writer": {
      "plugin": "postgresql",
      "parameter": {
        "postSql": [],//导入后准备语句
        "datasource": "l_PostGreSql",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
        "column": [
          "id",
          "name",
          "year",
          "birthdate",
          "ismarried",
          "interest",
          "salary"
        ],
        "table": "public.person",//目标表名
        "preSql": []//导入前准备语句
      }
    },
    "setting": {
      "speed": {
        "concurrent": 7,//并发数
        "mbps": 7//数率最高上限
      }
    }
  },
  "type": "job",
  "version": "1.0"

通过数据集成向导模式导出数据

以向导模式配置 HybridDB for PostgreSQL 同步到 MaxCompute 为例:

  1. 进入 数据集成 页面,新建同步任务,如下图所示:

  2. 选择来源。

    选择HybridDB for PostgreSQL数据源及源头表public.person,数据浏览默认是收起的,选择后单击下一步,如下图所示:



    • 数据过滤:PostgreSQLReader 根据指定的 column、table、where 条件拼接 SQL,并根据这个 SQL 进行数据抽取。例如在做测试时,可以根据实际业务场景指定where,往往会选择当天的数据进行同步,可以将 where 条件指定为 id > 2 and sex = 1。

      where 条件可以有效地进行业务增量同步。where条件不配置或者为空,视作全表同步数据。

    • 切分键:PostgreSQL Reader 进行数据抽取时,如果指定 splitPk,表示您希望使用 splitPk 代表的字段进行数据分片,数据同步因此会启动并发任务进行数据同步,这样可以大大提供数据同步的效能。

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

      • 目前 splitPk 仅支持整型数据切分,不支持字符串、浮点、日期等其他类型。如果您指定其他非支持类型,忽略 plitPk 功能,使用单通道进行同步。

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

  3. 选择目标。

    选择odps数据源及目标表hpg,选择后单击下一步,如下图所示:



  4. 映射字段。

    单击 下一步,选择字段的映射关系。需对字段映射关系进行配置,左侧 源头表字段 和右侧 目标表字段 为一一对应的关系,如下图所示:



  5. 通道控制。

    单击 下一步,配置作业速率上限和脏数据检查规则,如下图所示:



  6. 预览保存。

    完成上述配置后,上下滚动鼠标可查看任务配置,如若无误,单击 保存

脚本模式配置导出同步任务

{
  "configuration": {
    "reader": {
      "plugin": "postgresql",
      "parameter": {
        "datasource": "l_PostGreSql",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
        "table": "public.person",//源端表名
        "where": "",//过滤条件
        "column": [
          "id",
          "name",
          "year",
          "birthdate",
          "ismarried",
          "interest",
          "salary"
        ],
        "splitPk": ""//切分键
      }
    },
    "writer": {
      "plugin": "odps",
      "parameter": {
        "datasource": "odps_first",//数据源名,建议数据源都先添加数据源后再配置同步任务,此配置项填写的内容必须要与添加的数据源名称保持一致
        "column": [
          "id",
          "name",
          "year",
          "birthdate",
          "ismarried",
          "interest",
          "salary"
        ],
        "table": "hpg",//目标表名
        "truncate": true,
        "partition": "pt=${bdp.system.bizdate}"//分区信息
      }
    },
    "setting": {
      "speed": {
        "mbps": 5,//数率最高上限
        "concurrent": 5//并发数
      }
    }
  },
  "type": "job",
  "version": "1.0"
}

运行同步任务,检查目标端的数据质量

运行结果,如下图所示:



注意

同步任务保存后,直接单击 运行,任务会立刻运行或单击右边的 提交,将同步任务提交到调度系统中,调度系统会按照配置属性在从第二天开始自动定时执行,相关调度的配置请参见 调度配置介绍

参考信息

其他的配置同步任务详细信息请参见下述文档: