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

实时整库同步

最近更新时间2023.11.21 15:36:48

首次发布时间2023.08.14 10:14:48

一键实时整库同步解决方案支持多种数据源之间,进行数据的全增量一体化同步,方案中先将源端全量数据通过离线任务方式同步迁移,然后再通过实时同步增量任务,将数据采集至目标端数据源中。

您也可以单独选择进行实时增量数据同步,该场景适用于您已经通过其他方式将全量数据同步至目标端数据源库表中。您可根据实际场景,进行同步方案选择配置,助力您将业务数据更高效、更便捷的同步至目标数据库中。

本文将为您介绍如何创建实时整库同步解决方案,将源端 MySQL、PostgreSQL、SQLServer、Mongo 数据采集至湖仓一体分析服务(LAS)、Doris、StarRocks、Elasticsearch 数据源的库表\索引中。

1 关键步骤概述

  1. 目标表创建:将源端表数据写入到目标表中,目标表创建可以是以下三种方式:

    • 已有表:手动在目标数据库环境中,已创建好源端同名表来接收数据,此时方案步骤执行时,将跳过建表的流程。

    • 自动建表:在目标数据库环境中,还没有与源端数据表同名的目标表,此时方案步骤执行时,会自动在流程中创建同名目标表。

    • 数据表不存在:当目标端无法通过 DataSail 自动建表时,您需要进入目标端数据库中,手动创建数据表后,再继续配置解决方案。

  2. 增量实时任务位点初始化:首次启动时,会自动指定增量流式任务的初始化位点位置。

  3. 任务创建:视实际使用场景,将会创建不同的任务类型。

    • 全增量场景:一次性全量批式任务+增量流式任务

      1. 首先创建一次性全量批式任务,将历史全量数据,同步至目标端数据库表中;

      2. 待全量批式任务执行完成后,再创建增量流式任务,通过启动流式任务的方式,将源端数据实时同步至目标端数据库表中。

      说明

      同步方案产生的一次性全量批式任务个数,与方案中设置的数据来源表个数有关。

    • 增量场景:增量流式任务

      仅创建增量流式任务,通过流式任务运行的方式,仅将源端增量数据实时同步至目标端数据库表中。

2 前置操作

  1. 已开通并创建 DataLeap 项目,创建的全量增量任务均会同步到该项目下。详见新建项目

  2. 已开通全域数据集成(DataSail)产品。详见服务开通

  3. 已创建合适资源规格的独享数据集成资源组,并将其绑定至创建成功的 DataLeap 项目下。购买操作详见资源组管理,项目绑定操作详见数据集成资源组

  4. 已完成来源和目标端的数据源准备,创建数据源操作详见配置数据源

3 注意事项

  1. 同步解决方案同时支持选择的表数量目前上限为 1000 张,但建议先以 100 张以下表数量来试用。

  2. 目标端数据库需要提前先创建好,暂不支持在解决方案中自动创建。

  3. 目前表建立方式为选用已有表时,需要保证目标表 Schema 和源表 Schema 的表名称、字段名称和字段数量数量保持一致。

  4. 解决方案同步数据至目标端 LAS、Doris、StarRocks 时,仅支持将数据写入非分区表,暂不支持写入数据至分区表。

4 数据同步解决方案

4.1 数据源配置

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

  • 独享数据集成资源组所在的 VPC 需要和来源端、目标端数据库实例所在的 VPC 保持一致,火山引擎 RDS 数据库类型需要将 VPC 中的 IPv4 CIDR 地址,加入到 RDS 数据库的白名单下,保证资源组与数据源之间的网络互通;

  • 若资源组和数据源实例不在同一 VPC 环境时,您可通过公网或者通过专线形式进行互通。网络配置详见网络连通解决方案

4.2 新建数据实时整库同步

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

  1. 登录 DataSail 控制台

  2. 在左侧导航栏中选择数据同步方案,进入同步方案配置界面。

  3. 单击目录树中项目选择入口,选择已创建的 DataLeap 项目。

  4. 单击右上角新建数据同步解决方案按钮,下拉选择实时整库同步按钮,进入整库实时同步方案配置界面。按照以下配置,完成方案新建。

进入配置界面后,您可按实际场景需求,完成方案的基本配置、数据来源配置、数据缓存配置、数据目标配置、DDL 策略配置、运行配置等六个流程配置。

4.3 基本配置

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

配置项说明
基本信息
*方案名称输入整库实时同步方案名称。只允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且需在127个字符以内。
方案描述输入此方案的描述信息,方便后续维护管理。
*保存至下拉选择方案保存路径,此路径为数据开发项目中的任务路径。创建方式详见任务目录树管理

*链路类型

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

  • 来源支持类型:MySQL、PostgreSQL、SQLServer、Mongo

  • 目标支持类型:LAS、Doris、StarRocks、Elasticsearch

网络与资源配置
*数据来源下拉选择数据源管理中创建成功的源端数据源名称。

数据缓存

选择实时同步解决方案执行过程,采集数据时是否使用缓存配置方式:

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

    说明

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

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

缓存说明详见“4.5 数据缓存配置”。

*数据目标下拉选择数据源管理中创建成功的目标端数据源名称。

*离线/实时集成任务资源组(离线全量/实时整理)

下拉选择 DataLeap 项目控制台中已绑定的独享数据集成资源组:

  • 选择的资源组,需要确保能与源端、中间缓存数据源、目标端数据源连通,您可单击下方的立即连通性测试按钮,进入测试窗口,单击连通性测试按钮,测试选择的资源组是否可以和两侧数据源连通成功。

  • 您也可以单击资源组管理按钮,前往资源组管理界面进行资源组的查看或新建等操作,详见资源组管理

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

4.4 数据来源配置

在数据来源配置界面中,完成数据来源设置与库表映射规则匹配策略:
其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

配置项说明
数据源设置
*数据源下拉选择数据源管理中创建成功的数据源。若此前仍未创建相应数据源,您可单击右侧数据源管理按钮,前往数据源管理界面,进行数据源的创建。

*数据表

在左侧您可选择来源数据库表信息:

  1. 以整库,或单表多表形式展开进行勾选。

    说明

    1. 暂不支持同时选择多个数据库下的表。

    2. 数据库下没有表存在时,不支持勾选同步。

  2. 单击中间 alt 图标,将已选择的库表,添加至已选列表中,同理,您也可通过 alt 图标,撤回已选中的表。

映射规则

*库表匹配策略

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

  • 与来源库表同名:来源库表选择完成后,解决方案默认将目标端的库表名称,与源端库表信息同名,若目标端不存在同名数据表时,将会自动创建。

    注意

    目前暂不支持自动创建同名数据库,您需先在目标端 StarRocks 集群中创建好同名的数据库。

  • 自定义:您也可通过自定义匹配方式,设置源端与目标库表的匹配策略,配置方式详见“库表映射规则说明”。

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

4.5 数据缓存配置

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

4.5.1 增加缓存

可通过使用中间缓存来采集源端数据,这种方式需要额外配置 Kafka 数据源或 DataSail(内置 Topic) 数据源。

  1. 数据源选择:根据实际情况,按需选择数据源类型。

    数据源类型说明
    KafkaKafka 数据源需已为对应的 Kafka 实例,创建相应的 CDC 数据订阅采集任务,将源端 MySQL 中的数据,通过数据库传输服务中数据订阅方式,实时采集到 Kafka 实例中。在数据来源配置时绑定对应的 CDC 采集数据进入的 Kafka。数据订阅操作详见数据库传输服务
    DataSail(内置 Topic)DataSail(内置 Topic) 数据源类型,您需通过创建解决方案-实时数据采集类型的形式,来绑定相关的 Topic 名称信息。详见实时数据采集方案
  2. 映射配置:

    数据源类型选择完成后,单击刷新数据源和Topic映射按钮,根据数据源类型,进行相关的映射配置。您可在下拉框中,选择已创建的来源、目标端数据源和 Topic 名称信息。
    其中 DataSail(内置 Topic) 数据源类型,您也可下拉选择对应 Topic 名称下,已绑定的实时数据采集解决方案,可支持绑定多个解决方案。

4.5.2 无需缓存,直接同步

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

说明

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

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

4.6 数据目标设置

在数据目标配置界面中,完成数据源目标端设置与映射相关配置:

其中名称前带 * 的参数为必填参数,名称前未带 * 的参数为可选参数。

配置项说明
数据源设置
*数据源下拉选择数据源管理中创建成功的目标端数据源。若此前仍未创建相应数据源,您可单击右侧数据源管理按钮,前往数据源管理界面,进行数据源的创建。
映射配置

*刷新源表和目标表映射

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

筛选库表单击漏斗按钮,您可输入源端与目标端的库表信息,进行筛选搜索。
目标表选择当自动映射的目标表不符合预期时,在表建立方式为“使用已有表”时,您可通过下拉选择的方式,选择符合要求的目标表。

排序策略

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

  • 无排序:根据上游数据写入顺序,新数据覆盖旧数据;

  • 自适应排序:根据目标表属性自动推断排序策略,表/索引建立方式为使用已有表数据表不存在时,会选择自适应排序方式。

表建立方式

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

  • 使用已有表:当映射配置检查,目标端存在与源端表同名的表名时,则会直接使用已有表,来执行方案。

  • 自动建表:当映射配置检查,目标端不存在与源端表同名的表名时,将会通过任务,以定义的目标表名,自动创建目标表。

  • 数据表不存在:当目标端无法通过 DataSail 自动建表时,您需要进入目标端数据库中,手动创建数据表后,再继续配置解决方案。

全量同步

  • 按钮开启时,同步解决方案将创建全量离线任务和实时增量任务,进行历史全量数据和增量数据的同步。

  • 按钮关闭时,同步解决方案仅创建实时增量任务,仅同步后续增量变更的源端表数据。

查看字段信息可以查看来源表、目标表的字段名和其对应的字段类型等信息。在弹窗中,您也可对目标表字段类型信息,进行手动编辑调整。
配置您可为同步解决方案配置多表映射高级参数,以 key-value 的形式输入。
移除单击操作列中的更多 > 移除按钮,可将当前源端与目标端的映射删除。
重置单击操作列中的更多 > 重置按钮,可重置源表与目标表的映射关系。

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

4.7 DDL 策略配置

在实时整库 CDC、分库分表解决方案中,通常会遇到较多来源端新增表、新增列等 DDL 操作场景。此时您可根据实际业务场景,对来源端不同的 DDL 消息,在配置解决方案同步到目标端数据源时,可进行预设不同的处理策略。
不同数据源中不同的 DDL 消息目前可能支持的处理策略不同,整体处理策略如下:

  • 自动处理: 即会在来源端捕获的 DDL 消息,下发给目标数据,由目标数据来自动响应处理,包括自动加列等。不同目标数据对 DDL 消息处理策略可能不同,平台仅执行转发操作。

  • 忽略变更: 即会丢弃掉此 DDL 消息,不向目标数据源发送此消息,目标端数据源不做任何响应。

  • 日志告警: 即会丢弃掉此 DDL 消息,但会在同步日志中记录 DDL 变更消息详情。

  • 任务出错: 即一旦源端出现 DDL 变更,同步任务将显示出错状态并终止运行。

目前不同 DDL 消息处理策略情况如下:

DDL 消息自动处理忽略变更日志告警任务出错
新建表
删除表
重命名表
新增列
删除列
重命名列
修改列类型
清空表

注意

  1. 若在数据缓存配置中,您使用 Kafka 缓存的同步方式时,则所有源端的 DDL 消息均只能做忽略变更处理。

  2. 目前仅 MySQL2StarRocks、MySQL2Doris 通道,方可设置新增列、修改列类型的所有处理策略,其余通道,仅支持对 DDL 消息做忽略变更处理。

  3. 新增列变更消息自动处理策略目前存在以下限制:

    • 源端中主键列不支持自动加列;

    • 目标端自动增加的列,需允许存在 null 值;

    • 如配置列名映射规则,则不再支持自动加列操作。

  4. 修改列类型变更消息自动处理策略目前存在以下限制:

    • 源端中主键列不支持自动修改列类型;

    • 如目标端列已为 string 类型,则不再跟随源端类型变更;

    • 列类型的存储数据范围不支持由大改小,例如目标端列类型已为 bigint 类型,源端即使再次变更为 int,目标端将依然保持为 bigint,否则可能引起字段溢出问题。

  5. 如需对已创建的任务进行 DDL 策略修改,您可在解决方案列表界面,单击运维列中方案编辑 > DDL 策略配置流程,修改 DDL 消息规则。

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 后续步骤

方案提交完成,任务处于运行中后,您也可以前往运维中心 > 实时任务运维界面,对实时增量任务进行一系列运维操作,如对任务配置监控报警,开启停止任务等操作。运维操作详见实时任务运维