You need to enable JavaScript to run this app.
导航

实时分库分表

最近更新时间2024.04.11 10:47:40

首次发布时间2023.09.28 18:11:11

1 CDC 概述

CDC(Change Data Capture) 是变更数据获取的简称。可以基于增量日志,以极低的侵入性来完成增量数据捕获的工作。
核心思想是,监测并捕获数据库的变动,包括数据或数据表的插入、更新以及删除等,将这些变更按发生的顺序完整记录下来,可以直接写入到消息中间件中以供其他服务进行订阅及消费,也可以直接对接其他数据源做业务或者数据分析&应用。
与批量同步相比,变更数据的捕获通常具有以下三项基本优势:

  • CDC 通过仅发送增量的变更,来降低通过网络传输数据的成本;
  • CDC 可以帮助用户根据最新的数据做出更快、更准确的决策。例如,CDC 会将事务直接传输到专供分析的应用上;
  • CDC 最大限度地减少了对于生产环境网络流量的干扰。

2 方案简介

2.1 方案介绍

实时同步解决方案目前支持以下两种方案:

方案类型

说明

实时分库分表方案概述

  1. 支持将 Schema 相同的多个实例中多个数据库下的多个分表,一键同步到目标端的一个表中。方案中会先创建离线同步任务,然后进行实时同步,适用于分库分表场景。
  2. 支持自动建目标表。
  3. 当前来源端支持 MySQL、VeDB、PostgreSQL、SQLServer、Oracle、Mongo,目标端支持写入 Doris、StarRocks、LAS、Elasticsearch、ByteHouse 云数仓版(ByteHouse CDW)、ByteHouse 企业版(ByteHouse CE)。
  4. 支持直连数据库同步,也支持通过中间缓存到 Kafka 后再同步。

实时整库方案概述

  1. 支持将一个数据库下的多张 Schema 不同的表在一个解决方案中分别同步到目标端的不同表中。方案中会先创建离线同步任务,然后进行实时同步。
  2. 支持自动建目标表。
  3. 当前来源端支持 MySQL、VeDB、PostgreSQL、SQLServer、Mongo、Oracle,目标端支持写入 Doris、StarRocks、LAS、Elasticsearch、ByteHouse CDW、ByteHouse CE。
  4. 支持直连数据库同步,也支持通过中间缓存到 Kafka 后再同步。

本文将为您介绍通过 DataSail 创建分库分表实时同步解决方案,实现多个数据库实例下的多个相同 Schema 分表,同步到目标端数据源的一个表中。

2.2 方案架构

图片

3 前置操作和注意事项

3.1 前置操作

  1. 已开通并创建 DataLeap 项目,创建的全量增量任务均会同步到该项目下。详见新建项目
  2. 已开通全域数据集成(DataSail)产品。详见服务开通
  3. 已创建合适资源规格的独享数据集成资源组,并将其绑定至创建成功的 DataLeap 项目下。购买操作详见资源组管理,项目绑定操作详见数据集成资源组
  4. 已完成来源端和目标端的数据源准备工作。创建数据源操作详见配置数据源

3.2 注意事项

  1. 实时分库分表同步解决方案同时支持选择的源表数量目前上限为 2000 张,但建议先以 100 张以下表数量来试用。
  2. 支持自动创建目标端数据表,不支持自动建库,数据库需要在同步解决方案创建前在目标端提前建好。

4 创建方案操作步骤

4.1 数据源配置

在配置实时分库分表同步解决方案前,您需在数据源管理界面中,配置来源端和目标端相应的数据源。详见配置数据源

  • 独享数据集成资源组所在的 VPC 需要和来源端、目标端数据库实例所在的 VPC 保持一致,火山引擎 RDS 数据库类型需要将 VPC 中的 IPv4 CIDR 地址,加入到 RDS 数据库的白名单下,保证资源组与数据源之间的网络互通;
    图片
  • 若资源组和数据源实例不在同一 VPC 环境时,您可通过公网或者通过专线形式进行互通。网络配置详见网络连通解决方案

4.2 新建方案

数据源配置操作准备完成后,您可开始进行实时分库分表同步方案配置:

  1. 登录 DataSail 控制台
  2. 在左侧导航栏中选择数据同步方案,进入同步方案配置界面。
  3. 单击目录树中项目选择入口,选择已创建的 DataLeap 项目。
  4. 方案列表界面,单击右上角新建数据同步解决方案按钮,下拉选择实时分库分表同步按钮,进入方案配置界面。按照以下步骤配置,完成方案新建。
    进入配置界面后,按照步骤,完成方案的基本配置、数据来源配置、数据缓存配置、数据目标配置、DDL 策略配置、运行配置等六个流程配置。
    图片

4.3 基本配置

基本配置参数说明如下表所示。
其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

配置项

说明

基本信息

*方案名称

输入实时分库分表同步方案名称。只允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且需在127个字符以内。

方案描述

输入此方案的描述信息,方便后续维护管理。

*保存至

下拉选择方案保存路径,此路径为数据开发项目中的任务路径。创建方式详见任务目录树管理

*链路类型

下拉选择来源和目标端数据源类型。

  • 来源支持类型:MySQL、VeDB、PostgreSQL、SQLServer、Oracle、Mongo
  • 目标支持类型:LAS、Doris、StarRocks、Elasticsearch、ByteHouse 云数仓版、ByteHouse 企业版

网络与资源配置
图片

数据来源

在数据来源框中,选择数据源管理中创建成功的数据源,支持选择多个。
若此前仍未创建相应数据源,您可单击左侧导航栏中的数据源管理按钮,前往数据源管理界面,进行数据源的创建。详见配置数据源

说明

目前对于 JDBC 类火山引擎数据源类型,您可通过批量新增数据源的方式,进行批量创建,单次最多创建 200 个数据源:

  1. 单击批量新建数据源按钮,进入新建窗口。
  2. 单击下载模板按钮,在 Excel 模版中,配置数据源相关的数据源名、RDS 实例ID、数据库名、用户名密码等信息。
  3. Excel 中数据源信息填写完成后,单击立即上传 > 确定新增,完成数据源批量新增。

数据缓存

选择同步解决方案是否需要通过数据缓存的方式来采集数据:

  • 勾选使用缓存, 需选择已创建成功的 Kafka、BMQ、DataSail(内置 Topic) 数据源,通过中间缓存来进行实时数据同步。

    说明

    DataSail(内置 Topic) 、BMQ 数据源缓存方式,目前仅支持 MySQL2Doris、MySQL2StarRocks、MySQL2Elasticsearch 通道进行该缓存方式配置。

  • 不勾选,不使用缓存,通过直连数据库的方式采集源端数据。

数据目标

在数据目标框中,选择数据源管理中创建成功的数据源。

离线/实时集成任务资源组

下拉选择在数据源管理界面中,创建来源、中间缓存、目标端数据源时,测试连通性能够成功的独享集成资源组。选择资源组后,您可进行以下操作:

  1. 单击下方的立即测试连通性按钮,进入连通性测试界面。
  2. 单击连通性测试按钮,完成离线全量、实时增量任务来源和目标端数据源的连通。

若此前还未创建独享集成资源组,您也可以单击资源组管理按钮,前往资源组管理界面进行资源组的查看或新建等操作,详见资源组管理

方案基本配置完成后,单击右下角下一步按钮,进行方案的数据来源配置。

4.4 数据来源配置

在数据来源配置界面中,完成数据来源的选择,数据源库表名称支持通过正则匹配。
其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

配置项

说明

数据源设置

*数据源名称

展现基本配置中选择的数据源,您也可以在此处再新增其余需要采集的数据源。
若此前仍未创建相应数据源,您可单击右侧数据源管理批量新建数据源按钮,进行数据源的创建。

*源库、源 Schema、源表选择限定条件

您可通过设置源库、源 Schema、源表的限定条件,来获取源表信息。
图片
单击添加规则按钮,完成限定条件规则的添加,支持添加多个规则,取合集;

  • 限定条件:您可通过指定源库、源表的名称来限定,也可通过正则表达式匹配的方式,快速获取源端库表信息。
  • 类型:依据限定条件中输入的条件,下拉选择匹配的类型,支持正则个例类型配置。
  • 删除:您也可以单击操作列下的删除按钮,完成规则删除。

单击获取源表/获取源集合按钮,平台根据源库、源表/集合限定条件的设置,自动加载符合条件的表/集合。

注意

选择的多个库表,需保证其 Schema 信息一致(包括字段名称、字段类型)。
数据字段模块内系统默认展示第一个数据源中第一张表的元数据字段信息,若多表间字段不一致可能会导致运行失败。

映射规则

*库表匹配策略

支持选择与来源库表同名自定义方式匹配:

  • 与来源库表同名:目前暂不支持
  • 自定义:您可通过自定义匹配方式,设置源端与目标库表名称的转换规则,在目标库表名框中输入相应的库表名称信息。

    注意

    • 目前暂不支持自动创建与源端同名的目标数据库,您需先在目标端中创建好同名的数据库。
    • 目标端为 EMR Doris 半托管集群数据源时,建议开启集群高可用服务,使 Doris Master 节点数量在 3 个以上,保障 DataSail 解决方案自动创建表成功;若 Doris 半托管集群仅有 1 Master+1 Core 或 1 Master+2 Core 节点数量时,您需在目标 Doris 数据库中进行手动创建表,并需手动指定副本参数 replication_num,示例如下:
      CREATE TABLE demo.t3 (pk INT, v1 INT SUM) AGGREGATE KEY (pk) DISTRIBUTED BY hash (pk) PROPERTIES ('replication_num' = '1');
      

数据来源配置完成后,单击右下角下一步按钮,进行方案的数据缓存配置。

4.5 数据缓存配置

使用缓存,可对同步任务进行缓冲,在性能和稳定性上有所提升,适合对稳定性要求高以及数据量大的场景,但需额外增加缓存数据源及相应成本,请按需配置。
实时分库分表同步解决方案,目前支持“增加缓存”、“无需缓存,直接同步”这两种缓存配置方式:

4.5.1 增加缓存

可通过使用中间缓存来采集源端数据,增加缓存需要绑定数据来源对应的 CDC 采集数据进入的 MQ。
若还未创建采集方案,您需到解决方案-实时数据采集界面,进行方案创建。详见实时数据采集方案。这种方式需要额外配置 Kafka 数据源、DataSail(内置 Topic) 数据源、BMQ 数据源。

说明

Kafka、BMQ 数据源类型,也可通过创建相应的 CDC 数据订阅采集任务,将源端 MySQL 中的数据,通过数据库传输服务中数据订阅方式,实时采集到 Kafka 实例中。在数据来源配置时绑定对应的 CDC 采集数据进入的 Kafka。数据订阅操作详见数据库传输服务

  1. 数据源选择:根据实际情况,按需选择数据源类型。
  2. 映射配置:
    数据源类型选择完成后,单击刷新数据源和Topic映射按钮,根据数据源类型,进行相关的映射配置。您可在下拉框中,选择已创建的来源、目标端数据源、Topic 名称和绑定解决方案信息。

    说明

    实时采集解决方案支持绑定多个。

    • 单击“添加映射配置”按钮,您可按需添加多个数据源和 Topic 映射关系;
    • 单击“映射字段全量配置”按钮,可为多个映射关系,批量操作添加对应的 Topic 和绑定解决方案操作。

4.5.2 无需缓存,直接同步

无需缓存方式,可通过直接采集 MySQL Binlog 日志,进行数据实时读取。

说明

火山引擎中 RDS 云数据库已默认开启 Binlog 协议,若源端为其他云数据库或自建数据库,您需确认数据库是否已开启 Binlog。

确认数据缓存同步方式后,单击右下角下一步按钮,进入数据目标设置。

4.6 数据目标设置

在数据目标配置界面中,完成数据源目标端设置与映射相关配置。
其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

配置项

说明

数据源设置

*数据源

下拉选择数据源管理中创建成功的目标端数据源。目前支持写入 LAS、Doris、StarRocks、Elasticsearch、ByteHouse 云数仓版、ByteHouse 企业版数据源中。
若此前仍未创建相应数据源,您可单击右侧数据源管理按钮,前往数据源管理界面,进行数据源的创建。

*自动分区设置

目前通过 DataSail 解决方案自动建表时,LAS、Doris、StarRocks、ByteHouse CDW、ByteHouse CE 数据源仅支持写入非分区表。

映射配置

高级配置

使用已有表配置

当目标表已存在,即下方“表建立方式”为“使用已有表”时,若此时源表与目标表中已有字段列不一致时,可通过列匹配规则,根据实际场景进行列映射规则设置,目前支持自动映射、同名取交映射两种匹配规则配置:

  • 自动映射:默认映射规则,字段列不一致时,提示目标检查异常。
  • 同名取交映射:字段列不一致时,仅同名映射匹配到的字段进行数据同步,未匹配到的字段不做同步,任务正常执行。

高级参数配置

您可为同步解决方案配置多表映射高级参数,以 key-value 的形式输入。

*刷新源表和目标表映射

单击刷新源表和目标表映射按钮,自动加载源表和目标表信息,您可以在列表中进行以下操作:

逻辑表名

单击逻辑表名信息,可查看所选的源库表信息。

分片键、分表键

设置分库分表中分片字段和分表键字段信息。

筛选库表

单击漏斗按钮,您可输入源端与目标端的库表信息,进行筛选搜索。

排序策略

排序策略将影响实时增量任务,若无排序字段,可能会出现上游乱序导致下游数据源错误,建议增加排序策略。

  • 无排序:根据上游数据写入顺序,新数据覆盖旧数据;
  • 自适应排序:根据目标表属性自动推断排序策略,表/索引建立方式为使用已有表数据表不存在时,会选择自适应排序方式。

表建立方式

表建立方式分为使用已有表、自动建表数据表不存在几种方式:

  • 使用已有表:当映射配置检查,目标端数据库中若存在相应库表映射规则转换后的表名时,则会直接使用已有表,来执行方案。
  • 自动建表:当映射配置检查,目标端数据库中若不存在相应库表映射规则转换后的表名时,将会通过任务,以映射规则定义的目标表名,自动创建目标表。

    说明

    通过实时分库分表同步方案创建目标表时,需确保数据源中配置的账号有建表的权限,防止在执行自动建表流程时出现失败情况。

  • 数据表不存在:当映射配置检查,目标端数据库中若不存在相应库表映射规则转换后的表名,且平台暂时无法自动建表的情况下,您需要手动在目标端数据库表中创建目标表,再继续配置解决方案。

全量同步

  • 按钮开启时,同步解决方案将创建全量离线任务和实时增量任务,进行历史全量数据和增量数据的同步。
  • 按钮关闭时,同步解决方案仅创建实时增量任务,仅同步后续增量变更的源端表数据。

清表策略

您可根据实际情况,选择是否开启清表策略,开启表示在数据写入目标表前,会清空原有目标表中的数据,通常是为了使任务重跑时支持幂等操作。

查看字段信息

可以查看来源表、目标表的字段名和其对应的字段类型等信息。在弹窗中,您也可对自动创建的目标表字段类型和字段描述信息,进行手动编辑调整。

配置

您可为同步解决方案配置多表映射高级参数,以 key-value 的形式输入。

移除

单击操作列中的更多 > 移除按钮,可将当前源端与目标端的映射删除。

重置

单击操作列中的更多 > 重置按钮,可重置源表与目标表的映射关系。

说明

当目标表数量较多时,您可勾选多个表后,批量对目标表进行全量同步设置、清表策略设置移除等操作。

数据目标配置完成后,单击右下角下一步按钮,进行方案运行参数配置。

4.7 DDL 策略配置

在实时整库 CDC、分库分表、离线整库解决方案中,通常会遇到较多来源端新增表、新增列等 DDL 操作场景。此时您可根据实际业务场景,对来源端不同的 DDL 消息,在配置解决方案同步到目标端数据源时,可进行预设不同的处理策略。
DDL 消息处理策略说明详见实时整库同步解决方案 - 4.7 DDL 策略配置

4.8 运行配置

  1. 离线全量同步
    其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

    配置项

    说明

    *离线集成任务资源组

    下拉选择 DataLeap 项目控制台中已绑定且处于健康状态的独享数据集成资源组:

    • 选择的资源组,需要确保能与源端、目标端数据源连通,您可单击右侧的连通性测试按钮,进入测试窗口,单击连通性测试按钮,测试选择的资源组是否可以和两侧数据源连通成功。
    • 您也可以单击资源组管理按钮,前往资源组管理界面进行资源组的查看或新建等操作,详见资源组管理

    *默认 Quota 数

    设置可同时提交执行的集成任务数量,可根据独享集成资源组规格进行配置,如资源组的大小为 40CU,则 Quota 配置需必须小于 20(40/2),否则会因资源问题导致任务执行时异常。

    *期望最大并发数

    设置离线任务同步时,可以从源端并行读取或并行写入目标端的最大线程数。
    并发数影响数据同步的效率,并发设置越高对应资源消耗也越多,由于资源原因或者任务本身特性等原因,实际执行时并发数可能小于等于设置的期望最大并发数。

    脏数据设置

    设置脏数据处理方式,当任务中字段映射没有匹配到的数据,如格式非法,或同步过程中源端数据进入目标端时发生了异常。例如:源端是 String 类型的数据写到 INT 类型的目标字段中,因为类型转换不合理而无法写入的数据。 您可以在此通过以下两种方式设置脏数据的处理方式:

    • 勾选忽略所有脏数据,任务正常运行,脏数据不写入目标端。
    • 设置脏数据的最大容忍条数或占比情况,如果配置 0,则表示不允许脏数据存在,任务会运行失败退出。

    集成高级参数设置

    打开高级参数输入按钮,根据实际业务要求,以 Key/Value 形式,在编辑框中输入离线任务所需的高级参数。支持参数详见各数据源中的高级参数介绍

  2. 实时增量同步
    设置解决方案中实时增量任务的运行参数情况。
    其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

    配置项

    说明

    *实时集成任务资源组

    下拉选择 DataLeap 项目控制台中已绑定且处于健康状态的独享数据集成资源组:

    • 选择的资源组,需要确保能与源端、目标端数据源连通,您可单击右侧的连通性测试按钮,进入测试窗口,单击连通性测试按钮,测试选择的资源组是否可以和两侧数据源连通成功。
    • 您也可以单击资源组管理按钮,前往资源组管理界面进行资源组的查看或新建等操作,详见资源组管理

    *资源设置

    可通过自定义和默认两种设置方式,进行实时任务运行资源的设定,如单TaskManager CPU数量、单TaskManager内存大小、JobManager CPU数量等。

    说明

    默认设置中,各运行资源设置如下:

    • 单 TaskManager CPU 数:2
    • 单 TaskManager 内存:4096 MB
    • 单 TaskManager slot 数:4
    • JobManager CPU 数:1
    • JobManager 内存:2048 MB

    集成高级参数设置

    打开高级参数输入按钮,根据实际业务要求,以 Key/Value 形式,在编辑框中输入实时任务所需的高级参数。支持参数详见各数据源中的高级参数介绍

    Flink 运行参数设置

    支持输入 Flink 相关的动态参数和执行参数,具体参数设置详见 Flink 官方文档

  3. 调度设置
    离线全量任务还需要任务调度资源组,来支持任务下发分配至独享数据集成资源组中运行,目前调度资源组支持选择公共调度资源组独享调度资源组

  4. 提交方案
    方案运行配置完成后,单击右下角提交方案按钮,进行方案的提交,在弹窗中,您可根据实际情况勾选方案是否立即执行,并单击确定按钮,完成实时数据同步解决方案的创建。

5 方案运维

方案创建完成后,进入到方案列表界面,便可查看方案的执行概况,同时您也可以在列表界面进行以下操作:

5.1 解决方案筛选

在创建众多的解决方案后,您可在方案列表界面通过搜索或筛选的方式进行快速定位方案。

  • 您可通过方案名称、方案 ID、数据来源名称、数据目标名称等信息,输入搜索的方式进行筛选。
  • 您也可通过下拉选择方案操作状态、方案类型、数据来源名称、数据目标类型、创建人等选项进行任务的定位操作。

5.2 解决方案运维

在方案列表的运维列中,您可操作执行方案运维相关内容:

说明

启动中的解决方案不支持进行提交执行、方案编辑、方案删除操作。

运维操作

说明

执行详情

  • 单击运维操作列的执行详情按钮,进入解决方案执行详情界面,查看方案的具体执行步骤,如目标表创建,增量流任务、全量离线任务的创建、发布、启动等一系列详情步骤。
    在具体步骤的右侧,您可单击单个步骤的执行详情按钮,您可进入查看各步骤中的任务操作状态、耗时及前往任务运维界面等操作。
  • 单击云监控页签,前往查看解决方案的实时集成读写指标、CDC 延迟指标信息。您可根据实际场景,自定义时间来查看方案相关的执行指标。

提交执行

未在启动中的任务,您可单击运维操作列的提交执行按钮,将任务提交到运行状态,开启增量流任务的运行。

  1. 方案调整后,第二次提交执行时,在增量流任务位点重置步骤,您可人工确认是否需要重置位点开关,您可输入 Binlog 文件名、 Binlog 位点、gtids 等信息进行位点重置。
  2. 增量流任务启动的执行详情中,单击更多按钮,您可进行前往运维查看执行日志查看 Application Url 等操作。

图片

方案查看

单击运维操作列更多中的方案查看按钮,可对当前解决方案的各个配置步骤进行查看。

方案编辑

单击运维操作列更多中的方案编辑按钮,可对当前解决方案的方案名称、数据来源端、目标端、DDL 策略配置、运行配置步骤进行修改编辑,如您可在数据来源配置步骤中,为当前解决方案新增同步表或删除已选择的同步表,或者调整独享集成资源组等操作。

方案删除

单击运维操作列更多中的方案删除按钮,将处于非运行中、非启动中的方案进行删除,当前仅删除解决方案本身,已生成的表和集成任务不会被删除。

运行监控

单击运维操作列更多中的运行监控按钮,为当前实时分库分表同步方案配置一次性全量、实时增量任务的运行监控。
在运行监控界面,单击新增规则按钮,平台自动为您创建一条监控规则,您可在操作列中,单击配置监控按钮,前往运维中心,查看监控详情。更多运行监控配置操作详见离线监控规则实时监控规则

强制重启

单击运维操作列更多中的强制重启按钮,将之前创建的解决方案再次提交执行,区别于提交执行,强制重启会位点初始化、全量批任务清理、重启全量批任务等操作。

提交停止

单击运维操作列更多中的提交停止按钮,可将处于正常运行中的增量流任务进行停止操作。

操作历史

单击运维操作列更多中的操作历史按钮,您可查看当前同步方案的操作历史情况,如创建方案、重启方案、提交停止等操作,均会记录在操作历史中。您可单击操作列中的查看详情按钮,对历史版本的操作进行查看。

6 更多材料

其余关于 DataSail 更多内容,详见全域数据集成-火山引擎实时整库同步 等。