Как скопировать частичные данные темы из одного кластера в другой

#apache-kafka

#apache-kafka

Вопрос:

У меня есть вариант использования, когда мне нужно скопировать данные из одного раздела в другой раздел в другом кластере, но мне нужно скопировать только с заданного смещения. Что я могу использовать для приведенного выше варианта использования?

Я заглянул в mirror Maker, поскольку он копирует данные из одного кластера в другой, но как упомянуть часть смещения, я этого не понимаю. Есть ли какая-либо утилита, которую я могу использовать?

Комментарии:

1. Не копируйте частичные данные из темы. Я бы порекомендовал вам использовать mirror-maker и создать полную копию вашей темы. Кроме того, пользователи не должны использовать смещения.

2. Можете ли вы подробнее рассказать о вашем варианте использования здесь? Это одноразовая операция, или вы хотите построить это как повторяемый процесс? Каково значение смещения, с которого вы хотите скопировать данные?

3. Это будет одноразовая операция. Мы будем удалять текущую версию брокера, чтобы перейти на новую версию с постепенным отказом. Может быть вероятность того, что во время этого процесса у текущих пользователей, читающих из старого брокера, остались какие-то данные для чтения, которые мы хотим скопировать в новый раздел брокера, чтобы потребители могли возобновить чтение из нового раздела брокера без потери каких-либо данных.

Ответ №1:

Если, как вы говорите, «Это будет одноразовая операция», вы можете использовать kafkacat эту опцию -o.

Например (самый простой случай):

 kafkacat -C -b mybrocker_cluster_1:9092 -t mytopic1 -o <offset> | 
kafkacat -P -b mybrocker_cluster_2:9092 -t mytopic1
  

Вероятно, вам все еще нужно добавить несколько параметров для потребителя:

 -X message.max.bytes=<value> -X fetch.message.max.bytes=<value> -X receive.message.max.bytes=<value>