Kafka-backup: ํŠน์ • ์‹œ์  ๋ฐฑ์—… ์ง€์›

์— ๋งŒ๋“  2020๋…„ 04์›” 08์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: itadventurer/kafka-backup

์ด๊ฒƒ์€ ์ผํšŒ์„ฑ ๋„๊ตฌ(๋ฐฑ์—…์ด ์™„๋ฃŒ๋œ ํ›„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Œ์„ ์˜๋ฏธ)์ด๋ฏ€๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐ๋ชฌ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์˜์กด๋„๊ฐ€ ์žฌ๋ฏธ์žˆ์Šต๋‹ˆ๋‹ค. kafka-connect๋ฅผ ๋ฐ๋ชฌ์œผ๋กœ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

enhancement help wanted

๋ชจ๋“  13 ๋Œ“๊ธ€

๋ณต์› ์ ˆ์ฐจ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์ด ์˜ณ์Šต๋‹ˆ๋‹ค. ๋ณต์›์€ ์ผํšŒ์„ฑ ํ™œ๋™์ž…๋‹ˆ๋‹ค.
๋ฐฑ์—…์€ ์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ™œ๋™์ž…๋‹ˆ๋‹ค. Kafka ๋ฐ์ดํ„ฐ๋Š” ์ŠคํŠธ๋ฆผ์ด๊ณ  ๋์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Kafka์—๋Š” "๋ฐฑ์—…์„ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค"๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  x ์ดˆ ๋™์•ˆ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด "์™„๋ฃŒ"๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜ํ™”ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.
์ž์„ธํ•œ ๋‚ด์šฉ์€ #46 ๋ฐ #54๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

56: ๊ทธ๋Ÿผ:

@itadventurer

๋ฐฑ์—…์€ ์ง€์†์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ํ™œ๋™์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ ์šฉ๋˜์ง€ ์•Š๋Š” 24x7x365 ๋ฐ์ดํ„ฐ์˜ ์—ฐ์† ์ŠคํŠธ๋ฆผ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ์ŠคํŠธ๋ฆผ์€ ํ•˜๋ฃจ์— X์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ์‹คํ–‰๋˜๋ฉฐ ๋ฐฑ์—…์€ ๊ทธ ์ดํ›„์—๋งŒ ๋ฐœ์ƒํ•˜๋ฉฐ ์‹ค์ œ๋กœ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ์ผ ๋ฐฑ์—…/์Šค๋ƒ…์ƒท์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•œ ํ›„ X ์‹œ๊ฐ„(๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๊ฐ„๊ฒฉ) ๋™์•ˆ ์ƒˆ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์Œ์„ (๋‚ด๋ถ€์ ์œผ๋กœ) ๊ฐ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ(๋” ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ๋Š”) ๋Œ€์•ˆ์€ ๋ฐฑ์—…์ด ์‹œ์ž‘๋œ ํƒ€์ž„์Šคํƒฌํ”„๊นŒ์ง€๋งŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜คํ”„์…‹ ๋ฐฑ์—…๊ณผ ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํ”„์…‹์„ ๋จผ์ € ๋ฐฑ์—…ํ•œ ๋‹ค์Œ ์˜คํ”„์…‹์„ ๋ฐฑ์—…ํ•œ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์•Œ๊ณ  ํ•ด๋‹น ํƒ€์ž„์Šคํƒฌํ”„๊นŒ์ง€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ˆ์˜ ์˜๋„๋ฅผ ์•Œ ๊ฒ ์–ด. ์˜ˆ, ์•„๋งˆ๋„ ํŠน์ • ์‹œ์  ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ŠคํŠธ๋ฆผ์ด "์™„๋ฃŒ"๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์— ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ:

  • Kafka Backup์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ—ˆ์šฉ
  • Kafka Backup์€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์”๋‹ˆ๋‹ค.
  • kill -9 Kafka Backup์€ "์™„๋ฃŒ"๋˜๋Š” ์ฆ‰์‹œ, ์ฆ‰ ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ƒ์„ฑ์„ ์™„๋ฃŒํ•œ ํ›„ ์ฆ‰์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Kafka Backup์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ ๋Œ€์ƒ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋ฉฐ #2๋ฅผ ํ†ตํ•ด ์ด์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. v0.1 ๋ฌธ์„œ์˜ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ํฐ ๋ฌธ์ œ์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด ๊ณง ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ;)


๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋ณธ๋‹ค

  • #54๋Š” ์ƒˆ๋กœ์šด ๋…๋ฆฝํ˜• CLI ๋„๊ตฌ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. CLI ๋„๊ตฌ๋Š” ์ด๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • CLI ๋„๊ตฌ์— ์ƒˆ ํ”Œ๋ž˜๊ทธ --snapshot ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(๋˜๋Š” backup-snapshot.sh ๋ผ๋Š” ์ƒˆ ๋„๊ตฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค).

๋ฐฑ์—…์ด "์™„๋ฃŒ"๋˜์—ˆ์„ ๋•Œ ๊ฐ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•( --snapshot ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅ):

  • ๋ฐฑ์—…์ด ์‹œ์ž‘๋œ ์‹œ๊ฐ„์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋Š” ๋ฐฑ์—… ์ค‘์— ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ํŒŒํ‹ฐ์…˜์ด ์ผ์ • ์‹œ๊ฐ„(์˜ˆ: 20์ดˆ) ๋™์•ˆ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋‚˜์š”?

Kafka Backup์ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ—ˆ์šฉ

๋ฌธ์ œ๋Š” ๋ฐ”๋กœ ์ด ๋‹จ๊ณ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ„์† ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์Šค๋ƒ…์ƒท์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ์ฐฝ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—…์„ ์–ธ์ œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ์ง€ ์•Š์œผ๋ฉฐ ์™ธ๋ถ€ ๊ทœ์ • ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๋ฐฑ์—…์ด ์‹œ์ž‘๋œ ์‹œ๊ฐ„์„ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋Š” ๋ฐฑ์—… ์ค‘์— ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋„ค, ๊ทธ๊ฒŒ ์ •ํ™•ํžˆ ์ œ๊ฐ€ ์˜๋ฏธํ•œ ๋ฐ”์ด๋ฉฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ œ๊ฑฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(๋ชจ๋“  ์ƒ์‚ฐ์ž๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ์ˆœ๊ฐ„์„ ์žก์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•จ).

ํŒŒํ‹ฐ์…˜์ด ์ผ์ • ์‹œ๊ฐ„(์˜ˆ: 20์ดˆ) ๋™์•ˆ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์€ ๋‹ค๋ฅธ ์˜ต์…˜๊ณผ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ๊ฒƒ์ด ํŠน์ • ๊ธฐ์ค€์ ์„ ์ œ๊ณตํ•˜๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์„ ๋•Œ ์ฐฝ์„ ์ฐพ๋Š” ๋ฐ ์˜์กดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๋‚˜๋Š” ์ด๊ฒƒ์ด Kafka์—์„œ๋Š” ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์“ฐ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ, ๊ธ€์„ ์“ฐ๋Š” ๋™์•ˆ ํ•ด๊ฒฐ์ฑ…์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

kafka-consumer-groups ๋Š” ํŒŒํ‹ฐ์…˜์—์„œ ์†Œ๋น„์ž์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ๋” ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ๊ฐ ํŠน์ • ํŒŒํ‹ฐ์…˜์˜ ํ˜„์žฌ ๋ ์˜คํ”„์…‹์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŠน์ • ์‹œ์ ์—์„œ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•œ ์ตœ์‹  ์˜คํ”„์…‹์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋‹ฌ์„ฑ๋˜๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค(์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•จ).

์ด์ œ (๋‹ค์†Œ) ํŠน์ • ์‹œ์  ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ช…ํ™•ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

  1. ๋ฐฑ์—…ํ•  ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•œ ํŒŒํ‹ฐ์…˜ ๋ ์˜คํ”„์…‹์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค(์—ฌ๊ธฐ ์–ด๋”˜๊ฐ€: https://github.com/itadventurer/kafka-backup/blob/master/src/main/java/de/azapps/kafkabackup/sink /BackupSinkTask.java#L81 )
  2. ๋ชจ๋“  ํŒŒํ‹ฐ์…˜ ์‚ฌ์šฉ
  3. ์†Œ๋น„๋œ ๋ ˆ์ฝ”๋“œ์— ์˜คํ”„์…‹ >= ์ด ์žˆ๋Š” ์ฆ‰์‹œ ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ์ €์žฅ๋œ ์˜คํ”„์…‹์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๋ฐฑ์—…์˜ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. (https://github.com/itadventurer/kafka-backup/blob/master/src/main/java/de/azapps/kafkabackup/sink/BackupSinkTask.java#L63 ์ฐธ์กฐ)
  4. ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์ด ์ตœ์‹  ์ƒํƒœ๊ฐ€ ๋˜์ž๋งˆ์ž STDOUT์— ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  kafka ์—ฐ๊ฒฐ์„ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•˜์‹ญ์‹œ์˜ค. ๋ณต์› ์ค‘ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ณผ ์œ ์‚ฌ: https://github.com/itadventurer/kafka-backup/blob/master/bin/restore-standalone.sh#L232 -L252

๋‹น์‹ ์€ ์ด๊ฒƒ์ด ์ •๋ง ์‚ฌ์†Œํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ดˆ์ ์€ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด Kafka Backup์„ ์•ˆ์ •ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(https://github.com/itadventurer/kafka-backup/milestone/1 ์ฐธ์กฐ). ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ETA๋ฅผ ์•Œ๋ ค๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ PR์„ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๋˜ํ•œ ์ถ”๊ฐ€ ๊ด€๋ฆฌ์ž๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ;) ) ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด ๊ธฐ๊บผ์ด ๋„์™€ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ด๊ฒƒ์ด ์ •๋ง ์‚ฌ์†Œํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์šด์˜ ์ธก๋ฉด(์˜ˆ: Kafka ํด๋Ÿฌ์Šคํ„ฐ ์„ค์ •, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ)์— ๋” ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋ถ€๋ถ„์—์„œ ๋‹น์‹ ์„ ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ ์ œ ์—…๋ฌด ์ธก๋ฉด์—์„œ ์ด๊ฒƒ์ด ์ €์™€ ๋‹ค๋ฅธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ PR์„ ๊ฒ€ํ† ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค(๋˜ํ•œ ์ถ”๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ;))

์ €๋Š” Java/Scala์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด Python, C/C++ ๋˜๋Š” ์ตœ์†Œํ•œ Go๋ผ๋ฉด ๋‚ด๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :P

์—ฌ๋ณด์„ธ์š”!
์ฒ˜์Œ์—๋Š” - kafka ์ฃผ์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ท€ํ•˜์˜ ์†”๋ฃจ์…˜์„ ์ฐพ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ๋กœ - ๋ถˆํ–‰ํžˆ๋„ Java/Scala์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ์“ธ ์ˆ˜ ์—†์—ˆ์œผ๋ฏ€๋กœ ์ „์ฒด ๋ฐฑ์—… ์†”๋ฃจ์…˜์„ ์œ„ํ•ด python์œผ๋กœ 'backup-standalone.sh'๋ฅผ ์œ„ํ•ด 'wrapper'๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://gist.github.com/FloMko/7adf2e00cd80fe7cc88bb587cde999ce
ํŠน์ • ์‹œ์  ๋ฐฑ์—…์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ œ๊ณต ์ง€์›์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๋ด,
์ž‘์—…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ž„์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๊ฒƒ์„ ์ด ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚˜์ค‘์— ๊ธฐ๋ณธ ์ œ๊ณต ์†”๋ฃจ์…˜์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ํ’€ ์š”์ฒญ์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค :) ( ./bin/kafka-backup-point-in-time.py ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ;) )

Connect API์— ์˜์กดํ•˜์ง€ ์•Š๋Š” Go๋กœ ์ž‘์„ฑ๋œ ์™„์ „ํžˆ ๋ณ„๋„์˜ ๊ตฌํ˜„์„ ๊ฒŒ์‹œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ. ์ด๋ฏธ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@akamensky ์†”๋ฃจ์…˜์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์†”๋ฃจ์…˜์„ ํ…Œ์ŠคํŠธํ•œ ํ•œ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@FloMko ๋ฐฉ๊ธˆ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์žฌ๊ตฌ์ถ•๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋„ ํฌํ•จ)

PR #99๋ฅผ ๋ณด๋‚ด ์ฃผ์‹  @WesselVS๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋ฐฉ๊ธˆ ๋งˆ์Šคํ„ฐ๋กœ ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐœ์„  ์‚ฌํ•ญ ๋ฐ ๊ธฐํƒ€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ณง ์ˆ˜ํ–‰ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

@akamensky ๋ฉ‹์ง€๋‹ค! Kafka ๋ฐฑ์—…์— ๊ด€ํ•œ ๋” ๋งŽ์€ ์ž‘์—…์„ ๋ณผ ์ˆ˜ ์žˆ์–ด ์ข‹์Šต๋‹ˆ๋‹ค. ;)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰