#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>