본문 바로가기

Kafka 컨슈머 그룹 오프셋 되돌리기: reset-offsets는 기본이 dry-run

조회 1 · 댓글 0
후아빠작성자2026년 8월 27일

특정 시점부터 다시 소비하거나 밀린 컨슈머를 앞으로 건너뛸 때 kafka-consumer-groups.sh --reset-offsets를 씁니다. 먼저 알아둘 점은 대상 그룹이 활성(컨슈머가 붙어 있는) 상태면 실행되지 않는다는 것입니다. race condition을 피하려고 그룹이 inactive일 때만 동작하고, Stable이나 PreparingRebalance 같은 상태면 거부합니다. 그러니 리셋 전에 해당 그룹의 컨슈머를 먼저 내려야 합니다.

또 하나는 이 명령이 기본적으로 dry-run이라는 점입니다. 시나리오 옵션만 주면 바뀔 오프셋을 계산해 출력만 하고 실제로는 반영하지 않습니다. 실제 적용하려면 --execute를 붙여야 하고, 계산 결과를 CSV로 뽑으려면 --export를 씁니다. 되돌릴 지점을 정하는 시나리오 옵션은 --to-earliest, --to-latest, --to-offset, --to-datetime, --by-duration, --shift-by, --from-file가 있습니다.

# 미리보기(기본 dry-run): 3일 전 시점으로 되돌리면 어디로 가는지 확인
kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
  --group my-group --topic orders \
  --reset-offsets --by-duration P3D

# 실제 적용: 100개 뒤로 이동
kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
  --group my-group --topic orders \
  --reset-offsets --shift-by -100 --execute

오프셋 리셋은 메시지 재처리나 건너뛰기를 유발하므로, 운영 그룹에서는 --execute 없이 결과를 먼저 확인한 뒤 적용하는 것이 안전합니다. --shift-by는 음수면 뒤로, 양수면 앞으로 이동합니다.

🔗 https://cwiki.apache.org/confluence/display/KAFKA/KIP-122%3A+Add+Reset+Consumer+Group+Offsets+tooling

로그인 후 답글을 남길 수 있습니다.