跳到主要内容
跳到主要内容

MySQL ClickPipe 中的并行快照

这份文档解释了 MySQL ClickPipe 中的并行快照/初始加载工作原理,并介绍了可以用于控制它的快照参数。

概述

初始加载是 CDC ClickPipe 的第一阶段,在此阶段,ClickPipe 会将源数据库中表的历史数据同步到 ClickHouse,然后再开始 CDC。很多时候,开发人员会以单线程的方式进行。然而,MySQL ClickPipe 可以并行化该过程,这可以显著加快初始加载速度。

分区键列

一旦我们启用了功能标志,您应该在 ClickPipe 表选择器中看到以下设置(在创建和编辑 ClickPipe 时):

分区键列

MySQL ClickPipe 使用源表上的一个列来逻辑上对源表进行分区。这个列称为 分区键列。它用于将源表划分为多个分区,然后 ClickPipe 可以并行处理这些分区。

警告

分区键列必须在源表中被索引,以便获得良好的性能提升。可以通过在 MySQL 中运行 SHOW INDEX FROM <table_name> 来查看。

逻辑分区

让我们来讨论以下设置:

快照参数

每个分区的快照行数

此设置控制构成一个分区的行数。ClickPipe 将以此大小的块读取源表,并根据设置的初始加载并行处理这些块。默认值是每个分区 100,000 行。

初始加载并行度

此设置控制并行处理多少个分区。默认值为 4,这意味着 ClickPipe 将并行读取源表的 4 个分区。可以增加此值以加快初始加载,但建议根据源实例规格将其保持在合理的值,以避免对源数据库造成过大压力。ClickPipe 将根据源表的大小和每个分区的行数自动调整分区数量。

并行快照中的表数量

此设置与并行快照没有直接关系,但它控制在初始加载过程中并行处理多少个表。默认值为 1。请注意,这是在分区并行性基础之上的,因此如果您有 4 个分区和 2 个表,则 ClickPipe 将并行读取 8 个分区。

监控 MySQL 中的并行快照

您可以在 MySQL 中运行 SHOW processlist 来查看并行快照的实际情况。ClickPipe 会创建多个连接到源数据库,每个连接读取源表的不同分区。如果您看到具有不同范围的 SELECT 查询,这意味着 ClickPipe 正在读取源表。您还可以在这里看到 COUNT(*) 和分区查询。

限制

  • 快照参数在管道创建后不能被编辑。如果您想更改它们,则必须创建一个新的 ClickPipe。
  • 在现有 ClickPipe 中添加表时,您不能更改快照参数。ClickPipe 将使用现有参数处理新表。
  • 分区键列不应包含 NULL,因为它们会被分区逻辑跳过。