Kafka Partition迁移策略说明

更新时间:
复制 MD 格式

在配置迁移到Kafka的数据迁移任务时,为提升迁移的性能,您可以调整Kafka Partition(分区)迁移策略,例如根据Hash结果将数据迁移至不同的Partition。

Hash算法

DTS采用Java默认的hashcode算法来计算Hash值。

配置方法

您需要在配置数据迁移任务的对象配置环节中配置投递到Kafka Partition策略

警告

数据迁移任务启动后,请勿修改目标TopicPartition数量,否则将导致数据迁移失败。

策略说明

源库为Kafka

策略名称

说明

优缺点

按照源端Kafka Partition number投递到目标端对应 Partition

将源Topic中的数据,按照Partition ID投递到目标Topic对应的Partition中。

重要

须确保目标Topic中包含源Topic的所有Partition。

  • 优势:可以保障源Topic与目标Topic的消息分布完全一致。

  • 缺点:目标TopicPartition需包含源Topic的所有Partition,否则需要手动扩容。

按照源端Kafka消息的key投递到目标端 Partition

将源Topic中相同Partition Key的数据,随机投递到目标Topic的同一个Partition中。

  • 优势:目标TopicPartition无需包含源Topic的所有Partition,并在一定程度上实现数据的规则化分布式投递。

  • 缺点:数据投递比较随机,在消费目标Topic数据时需要修改业务的消费逻辑。

以轮询的方式投递到目标端 Partition

将源Topic中的数据,以轮询的方式随机投递到目标Topic的各个Partition中。

  • 优势:目标TopicPartition无需包含源Topic的所有Partition,并在一定程度上实现数据的随机分布式投递。

  • 缺点:数据投递比较随机,在消费目标Topic数据时需要修改业务的消费逻辑。

全部投递至Partition 0

将源Topic中的所有数据都投递到目标TopicPartition 0。

  • 优势:源Topic中的所有数据都会投递到目标Topic的同一个Partition中,便于后续的数据消费。

  • 缺点:性能一般。

源库为Tair/Redis

策略名称

说明

优缺点

全部投递至Partition 0

将所有数据和DDL信息都投递到目标TopicPartition 0。

  • 优势:所有对象的创建、更改顺序都和源库保持一致。

  • 缺点:性能一般。

Redis全量数据和增量数据分别投递到不同的Partition

Redis实例的全量数据和增量数据,分别投递到目标Topic中的各个Partition。

  • 优势:可以将Redis实例的数据分别投递到不同的Partition。

  • 缺点:同一个Key的数据可能会出现在不同的Partition中,性能一般。

Redis Keyhash值投递到不同Partition

Redis实例的Key的作为Partition Key来计算Hash值,然后将全量数据和增量数据投递到目标Topic的各个Partition中。

  • 优势:可以将Redis实例的数据分别投递到不同的Partition。

  • 缺点:同一个Key的数据可能会出现在不同的Partition中,性能一般。

源库为其他数据库

策略名称

说明

优缺点

全部投递至Partition 0

将所有数据和DDL信息都投递到目标TopicPartition 0。

  • 优势:所有对象的创建、更改顺序都和源库保持一致。

  • 缺点:性能一般。

按库名+表名的hash值投递到不同Partition

将库名与表名合并作为Partition Key来计算Hash值,然后将各个表的数据和DDL信息投递到目标Topic中的各个Partition。

说明
  • 同一个表的数据和DDL信息会投递到同一个Partition。

  • 与表无关的DDL信息(例如CREATE DATABASE)则投递到Partition 0。

  • 优势:单个表的创建、变更顺序和源端保持一致,性能较好。

  • 缺点:由于不同的表投递到不同的Partition,表与表之间的先后顺序无法保证。

按主键的hash值投递到不同Partition

将表中的列(默认为主键,如果无主键则使用唯一键)作为Partition Key来计算Hash值,然后将不同的行投递到目标Topic的各个Partition中。您也可以指定单个或多个列作为Partition Key来计算Hash值。

说明
  • 此策略下,DDL信息默认投递到目标TopicPartition 0中。

  • 如果表没有主键和唯一键,DTS会将其数据和DDL信息都投递到目标TopicPartition 0。

  • 优势:该策略性能最好。

  • 缺点:只能保证单条记录的变更的先后顺序,无主键表以及多张表之间的先后顺序无法保证。