场景:配置分库分表离线同步任务

DataWorks支持通过向导模式或脚本模式配置离线同步任务,您可以将分库分表数据同步至目标单表。本文以同步MySQL分库分表数据为例进行说明。

前提条件

已准备好要同步的多个数据源,详情请参见支持的数据源与读写插件

背景信息

  • 分库分表要求表结构一致,因此,配置同步任务时,字段映射将按照第一张表结构进行展示。

  • 支持MySQL(支持向导模式)、PolarDB(支持向导模式)、AnalyticDB(支持向导模式)、SQLServer、Oracle、PostgreSQL等类型的数据源,配置分库分表同步任务。

操作步骤

  1. 创建离线同步节点

  2. 配置分库分表同步任务。

    • 向导模式配置分库分表:在数据来源区域单击+编辑数据来源,添加对应的数据源。完整的任务配置步骤请参见通过向导模式配置离线同步任务

      image.png

      说明

      仅MySQL、PolarDB、AnalyticDB支持通过向导模式添加分库分表,其他数据库请切换至脚本模式配置分库分表同步。

    • 脚本模式配置分库分表:脚本示例如下,完整的任务配置步骤请参见通过脚本模式配置离线同步任务

      重要

      实际运行时,请删除下述代码中的注释。

      {
          "type":"job",
          "version":"2.0",
          "steps":[
              {
                  "stepType":"mysql",
                  "parameter":{
                      "envType":0,
                      "column":[
                          "id",
                          "name"
                      ],
                      "socketTimeout":3600000,
                      "tableComment":"",
                      "connection":[    //根据分库数配置connection
                          {
                              "datasource":"datasourceName1",  //分库分表的数据源1
                              "table":[           //分库分表的Table列表1
                                  "tb1"
                              ]
                          },
                          {
                              "datasource":"datasourceName2", //分库分表的数据源2
                              "table":[          //分库分表的Table列表2
                                  "tb2",
                                  "tb3"
                              ]
                          }
                      ],
                      "useSpecialSecret":true,//各个数据源使用各自的密码
                      "where":"",
                      "splitPk":"id",
                      "encoding":"UTF-8"
                      },
                  "name":"Reader",
                  "category":"reader"
                  },
              {
                  "stepType":"odps",
                  "parameter":{
                      "partition":"pt=${bizdate}",
                      "truncate":true,
                      "datasource":"odpsname",
                      "envType":0,
                      "isSupportThreeModel":false,
                      "column":[
                          "id",
                          "name"
                      ],
                      "emptyAsNull":false,
                      "tableComment":"",
                      "table":"t1",
                      "consistencyCommit":false
                      },
                  "name":"Writer",
                  "category":"writer"
                  }
          ],
          "setting":{
              "executeMode":null,
              "errorLimit":{
                  "record":""
                  },
              "speed":{
                  "concurrent":2,
                  "throttle":false
                  }
          },
          "order":{
              "hops":[
                  {
                      "from":"Reader",
                      "to":"Writer"
                      }
              ]
          }
      }
  3. 提交并发布任务