📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

Sink to TiDB Cloud

本文档介绍如何将数据从 TiDB Cloud Dedicated 集群流式同步到 TiDB Cloud Starter 或 TiDB Cloud Essential 集群。

限制

  • 每个 TiDB Cloud 集群最多可以创建 100 个 changefeed。

  • 由于 TiDB Cloud 使用 TiCDC 建立 changefeed,因此具有与 TiCDC 相同的限制

  • 如果待同步的表没有主键或非空唯一索引,在某些重试场景下,由于缺少唯一约束,可能会导致下游插入重复数据。

  • Sink to TiDB Cloud 功能仅对以下 AWS 区域且创建时间在 2022 年 11 月 9 日之后的 TiDB Cloud Dedicated 集群开放:

    • AWS Oregon (us-west-2)
    • AWS Frankfurt (eu-central-1)
    • AWS Singapore (ap-southeast-1)
    • AWS Tokyo (ap-northeast-1)
  • 源 TiDB Cloud Dedicated 集群和目标 TiDB Cloud Starter 或 TiDB Cloud Essential 集群必须在同一个项目和同一个区域内。

  • Sink to TiDB Cloud 功能仅支持通过私有端点进行网络连接。当你创建 changefeed,将数据从 TiDB Cloud Dedicated 集群同步到 TiDB Cloud Starter 或 TiDB Cloud Essential 集群时,TiDB Cloud 会自动在两个集群之间建立私有端点连接。

前提条件

Sink to TiDB Cloud 连接器只能在某个 TSO 之后,将增量数据从 TiDB Cloud Dedicated 集群同步到 TiDB Cloud Starter 或 TiDB Cloud Essential 集群。

在创建 changefeed 之前,你需要先将现有数据从源 TiDB Cloud Dedicated 集群导出,并将数据加载到目标 TiDB Cloud Starter 或 TiDB Cloud Essential 集群。

  1. tidb_gc_life_time 设置为大于以下两个操作总耗时的值,以避免这段时间内的历史数据被 TiDB 垃圾回收。

    • 导出和导入现有数据所需的时间
    • 创建 Sink to TiDB Cloud 所需的时间

    例如:

    SET GLOBAL tidb_gc_life_time = '720h';
  2. 使用 Dumpling 从你的 TiDB Cloud Dedicated 集群导出数据,然后使用导入功能将数据加载到目标 TiDB Cloud Starter 或 TiDB Cloud Essential 集群。

  3. Dumpling 导出的文件中,在 metadata 文件获取 TiDB Cloud sink 的起始位置:

    以下是一个示例 metadata 文件的部分内容。SHOW MASTER STATUSPos 即为现有数据的 TSO,也是 TiDB Cloud sink 的起始位置。

    Started dump at: 2023-03-28 10:40:19 SHOW MASTER STATUS: Log: tidb-binlog Pos: 420747102018863124 Finished dump at: 2023-03-28 10:40:20

创建 TiDB Cloud sink

完成前提条件后,你可以将数据同步到目标 TiDB Cloud Starter 或 TiDB Cloud Essential 集群。

  1. 进入目标 TiDB 集群的集群概览页面,然后点击左侧导航栏的 Data > Changefeed

  2. 点击 Create Changefeed,并选择 TiDB Cloud 作为目标。

  3. TiDB Cloud Connection 区域,选择目标 TiDB Cloud Starter 或 TiDB Cloud Essential 集群,并填写目标集群的用户名和密码。

  4. 点击 Next,建立两个 TiDB 集群之间的连接,并测试 changefeed 是否可以成功连接:

    • 如果可以连接,将进入下一步配置。
    • 如果连接失败,会显示连接错误,你需要处理该错误。错误解决后,重新点击 Next
  5. 自定义 Table Filter,筛选你希望同步的表。规则语法可参考 table filter rules

    • Case Sensitive:你可以设置过滤规则中数据库和表名的匹配是否区分大小写。默认情况下,匹配不区分大小写。
    • Filter Rules:你可以在此列设置过滤规则。默认有一条规则 *.*,表示同步所有表。当你添加新规则时,TiDB Cloud 会查询 TiDB 中所有表,并在右侧框中仅显示匹配规则的表。最多可添加 100 条过滤规则。
    • Tables with valid keys:此列显示具有有效键(包括主键或唯一索引)的表。
    • Tables without valid keys:此列显示缺少主键或唯一键的表。这些表在同步过程中存在挑战,因为缺少唯一标识符可能导致下游处理重复事件时数据不一致。为保证数据一致性,建议在同步前为这些表添加唯一键或主键。或者,你也可以添加过滤规则排除这些表。例如,可以通过规则 "!test.tbl1" 排除表 test.tbl1
  6. 自定义 Event Filter,筛选你希望同步的事件。

    • Tables matching:你可以设置事件过滤器应用于哪些表。规则语法与前述 Table Filter 区域相同。每个 changefeed 最多可添加 10 条事件过滤规则。
    • Event Filter:你可以使用以下事件过滤器从 changefeed 中排除特定事件:
      • Ignore event:排除指定类型的事件。
      • Ignore SQL:排除匹配指定表达式的 DDL 事件。例如,^drop 排除以 DROP 开头的语句,add column 排除包含 ADD COLUMN 的语句。
      • Ignore insert value expression:排除满足特定条件的 INSERT 语句。例如,id >= 100 排除 id 大于等于 100 的 INSERT 语句。
      • Ignore update new value expression:排除新值满足指定条件的 UPDATE 语句。例如,gender = 'male' 排除更新后 gendermale 的更新。
      • Ignore update old value expression:排除旧值满足指定条件的 UPDATE 语句。例如,age < 18 排除旧值 age 小于 18 的更新。
      • Ignore delete value expression:排除满足指定条件的 DELETE 语句。例如,name = 'john' 排除 name'john'DELETE 语句。
  7. Start Replication Position 区域,填写你从 Dumpling 导出 metadata 文件中获取的 TSO。

  8. 点击 Next 配置 changefeed 规格。

    • Changefeed Specification 区域,指定 changefeed 使用的 Replication Capacity Units (RCUs) 数量。
    • Changefeed Name 区域,指定 changefeed 的名称。
  9. 点击 Next,检查 changefeed 配置。

    如果确认所有配置无误,勾选跨区域同步合规性,并点击 Create

    如果需要修改某些配置,点击 Previous 返回上一步配置页面。

  10. sink 很快会启动,你可以看到 sink 的状态从 Creating 变为 Running

    点击 changefeed 名称,可以查看更多 changefeed 详情,如 checkpoint、同步延迟及其他指标。

  11. sink 创建完成后,将 tidb_gc_life_time 恢复为原始值(默认值为 10m):

    SET GLOBAL tidb_gc_life_time = '10m';

文档内容是否有帮助?