๋˜ ๋‹ค๋ฅธ ๋ฐฑ์—… - ์Šคํฌ๋ฆฝํŠธ ์ด์ƒ, ์‹œ์Šคํ…œ๋ณด๋‹ค ๊ฐ„๋‹จํ•จ

๋งŽ์€ ๋ฐฑ์—… ์‹œ์Šคํ…œ์ด ์žˆ์ง€๋งŒ, ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ์ง€์—ญ๊ณผ ํด๋ผ์ด์–ธํŠธ์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๊ณ  ์šด์˜ ์ฒด์ œ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

๋˜ ๋‹ค๋ฅธ ๋ฐฑ์—… - ์Šคํฌ๋ฆฝํŠธ ์ด์ƒ, ์‹œ์Šคํ…œ๋ณด๋‹ค ๊ฐ„๋‹จํ•จ

์ข‹์€ ์ผ, ํ•˜๋ธŒ๋ฅด!
๋‚ด ์ด๋ฆ„์€ ๋‚˜ํƒˆ๋ฆฌ์•„์ž…๋‹ˆ๋‹ค. ์ €๋Š” NPO Krista์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ์ž ๊ทธ๋ฃน์˜ ํŒ€ ๋ฆฌ๋”์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํšŒ์‚ฌ ํ”„๋กœ์ ํŠธ ๊ทธ๋ฃน์˜ Ops์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์†Œ ๋…ํŠนํ•œ ์ƒํ™ฉ์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํšŒ์‚ฌ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ดํŠธ์— ์žˆ๋Š” ์„œ๋ฒ„ ๋ชจ๋‘์— ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ „์ฒด ์„œ๋ฒ„๋ฅผ ๋ฐฑ์—…ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. "ํ•„์ˆ˜ ๋ฐ์ดํ„ฐ"(DBMS ๋ฐ ๊ฐœ๋ณ„ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋””๋ ‰ํ„ฐ๋ฆฌ)๋งŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํด๋ผ์ด์–ธํŠธ์—๋Š” ์ž์ฒด ๋ฐฑ์—… ๊ทœ์ •์ด ์žˆ๊ฑฐ๋‚˜ ์—†์œผ๋ฉฐ ๋ฐฑ์—…์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ข…์˜ ์™ธ๋ถ€ ์ €์žฅ์†Œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฐฑ์—…์„ ์ƒ์„ฑํ•œ ํ›„ ์™ธ๋ถ€ ์ €์žฅ์†Œ๋กœ ์ „์†ก์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ•œ๋™์•ˆ ๋ฐฑ์—… ๋ชฉ์ ์œผ๋กœ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๊ตฌ์„ฑ ์˜ต์…˜์ด ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ์ด ์Šคํฌ๋ฆฝํŠธ์˜ ๋ณต์žก์„ฑ๋„ ๊ทธ์— ๋น„๋ก€ํ•˜์—ฌ ์ปค์กŒ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š” "์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™„์ „ํžˆ ํŒŒ๊ดดํ•œ ๋‹ค์Œ ...โ€.

๊ธฐ์„ฑ ์†”๋ฃจ์…˜์€ ๋ฐฑ์—… ๋ถ„์‚ฐ ํ•„์š”์„ฑ, ํด๋ผ์ด์–ธํŠธ์— ๋ฐฑ์—…์„ ๋กœ์ปฌ๋กœ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ, ์„ค์ •์˜ ๋ณต์žก์„ฑ, ๊ฐ€์ ธ์˜ค๊ธฐ ๋Œ€์ฒด, ์•ก์„ธ์Šค ์ œํ•œ ๋“ฑ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ž์‹ ์˜ ๊ฒƒ์„ ์“ฐ๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šด ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ๋‚˜๋Š” ํ–ฅํ›„ N๋…„ ๋™์•ˆ ์šฐ๋ฆฌ ์ƒํ™ฉ์— ์ถฉ๋ถ„ํ•˜๋ฉด์„œ๋„ ์ž ์žฌ์ ์œผ๋กœ ๋ฒ”์œ„๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ–๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ž„๋ฌด์˜ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐ๋ณธ ๋ฐฑ์—… ์ธ์Šคํ„ด์Šค๋Š” ์ž์œจ์ ์ด๋ฉฐ ๋กœ์ปฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  2. ๋ฐฑ์—… ๋ฐ ๋กœ๊ทธ ์ €์žฅ์€ ํ•ญ์ƒ ํด๋ผ์ด์–ธํŠธ ๋„คํŠธ์›Œํฌ ๋‚ด์— ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ธ์Šคํ„ด์Šค๋Š” ์ผ์ข…์˜ "์ƒ์„ฑ์ž"์ธ ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  4. ์˜ค๋ž˜๋œ Linux ๋ฐฐํฌํŒ์„ ํฌํ•จํ•˜์—ฌ ํ˜„์žฌ Linux ๋ฐฐํฌํŒ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ํ•„์š”ํ•˜๋ฉฐ ์ž ์žฌ์ ์ธ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.
  5. ์ธ์Šคํ„ด์Šค ์ž‘์—…์„ ์œ„ํ•ด์„œ๋Š” SSH๋ฅผ ํ†ตํ•œ ์•ก์„ธ์Šค๋กœ ์ถฉ๋ถ„ํ•˜๋ฉฐ ์ถ”๊ฐ€ ํฌํŠธ๋ฅผ ์—ด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  6. ์„ค์ • ๋ฐ ์ž‘๋™์˜ ์ตœ๋Œ€ ์šฉ์ด์„ฑ
  7. ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ๋ฐฑ์—… ์ƒํƒœ๋ฅผ ์ค‘์•™์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ณ„๋„์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค(ํ•„์ˆ˜๋Š” ์•„๋‹˜).

์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•ด๋‚ธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: github.com/javister/krista-backup
์†Œํ”„ํŠธ์›จ์–ด๋Š” python3์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Debian, Ubuntu, CentOS, AstraLinux 1.6์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ๋Š” ์ €์žฅ์†Œ์˜ docs ๋””๋ ‰ํ† ๋ฆฌ์— ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋ณธ ๊ฐœ๋…:
์ž‘์—… โ€“ ํ•˜๋‚˜์˜ ์›์ž์  ์ž‘์—…(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—…, ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐฑ์—…, ๋””๋ ‰ํ„ฐ๋ฆฌ A์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ B๋กœ ์ „์†ก ๋“ฑ)์„ ๊ตฌํ˜„ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์ž‘์—…์€ core/actions ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
์ž‘์—… โ€“ ์ž‘์—…, ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  "๋ฐฑ์—… ์ž‘์—…"์„ ์„ค๋ช…ํ•˜๋Š” ์ผ๋ จ์˜ ์ž‘์—…
์ผ์ • โ€“ ์ผ์ •, ์ž‘์—… ์‹คํ–‰ ์‹œ๊ฐ„์„ ์„ ํƒ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ์ž‘์—… ์ง‘ํ•ฉ

๋ฐฑ์—… ๊ตฌ์„ฑ์€ yaml ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ๊ตฌ์„ฑ ๊ตฌ์กฐ:

  • ์ผ๋ฐ˜ ์„ค์ •
  • ์ž‘์—… ์„น์…˜: ์ด ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์„ค๋ช…
  • ์ผ์ • ์„น์…˜: ๋ชจ๋“  ์ž‘์—…(์ž‘์—… ์„ธํŠธ)์— ๋Œ€ํ•œ ์„ค๋ช… ๋ฐ ์‹คํ–‰์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ cron์— ์˜ํ•œ ์‹คํ–‰ ์ผ์ •

์˜ˆ์‹œ ๊ตฌ์„ฑ์€ ์—ฌ๊ธฐ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ฃผ์š” ์ž‘์—…์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค: pg_dump๋ฅผ ํ†ตํ•œ PostgreSQL ๋ฐฑ์—…, tar๋ฅผ ํ†ตํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐฑ์—…; ์™ธ๋ถ€ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•œ ์ž‘์—…; ๋””๋ ‰ํ† ๋ฆฌ ๊ฐ„ ์žฌ๋™๊ธฐํ™”; ๋ฐฑ์—… ์ˆœํ™˜(์˜ค๋ž˜๋œ ๋ณต์‚ฌ๋ณธ ์‚ญ์ œ)
  • ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ
  • ๋ณ„๋„์˜ ์ž‘์—…์„ ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • crontab์— ๋‹จ์ผ ์ž‘์—…์ด๋‚˜ ์ „์ฒด ์ผ์ •์„ ์ถ”๊ฐ€(๋˜๋Š” ์ œ๊ฑฐ)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    /opt/KristaBackup/KristaBackup.py enable all
  • ๋ฐฑ์—… ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Zabbix์™€ ํ•จ๊ป˜ ๋ฐฑ์—… ๋ชจ๋‹ˆํ„ฐ๋ง์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • webapi ๋˜๋Š” ์›น ๋ชจ๋“œ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ž‘์—… ๊ฐ€๋Šฅ
    /opt/KristaBackup/KristaBackup.py web start [--api]

๋ชจ๋“œ ๊ฐ„์˜ ์ฐจ์ด์ : webapi์—๋Š” ์›น ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๊ฐ€ ์—†์ง€๋งŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์˜ ์š”์ฒญ์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค. ์›น ๋ชจ๋“œ์˜ ๊ฒฝ์šฐ ํ”Œ๋ผ์Šคํฌ์™€ ์—ฌ๋Ÿฌ ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ์ธ์ฆ๋œ AstraLinux SE์™€ ๊ฐ™์ด ๋ชจ๋“  ๊ณณ์—์„œ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„์˜ ๋ฐฑ์—… ์ƒํƒœ์™€ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "์›น ์ธ์Šคํ„ด์Šค"๋Š” API๋ฅผ ํ†ตํ•ด "๋ฐฑ์—… ์ธ์Šคํ„ด์Šค"๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์›น์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ์Šน์ธ์ด ํ•„์š”ํ•˜์ง€๋งŒ webapi์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ์Šน์ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฐฑ์—… - ์Šคํฌ๋ฆฝํŠธ ์ด์ƒ, ์‹œ์Šคํ…œ๋ณด๋‹ค ๊ฐ„๋‹จํ•จ

์ž˜๋ชป๋œ ๋ฐฑ์—… ๋กœ๊ทธ๋Š” ๊ฒฝ๊ณ  โ€“ ๋…ธ๋ž€์ƒ‰, ์˜ค๋ฅ˜ โ€“ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๋ฐฑ์—… - ์Šคํฌ๋ฆฝํŠธ ์ด์ƒ, ์‹œ์Šคํ…œ๋ณด๋‹ค ๊ฐ„๋‹จํ•จ

๋˜ ๋‹ค๋ฅธ ๋ฐฑ์—… - ์Šคํฌ๋ฆฝํŠธ ์ด์ƒ, ์‹œ์Šคํ…œ๋ณด๋‹ค ๊ฐ„๋‹จํ•จ

๊ด€๋ฆฌ์ž๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์น˜ํŠธ ์‹œํŠธ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„ ์šด์˜ ์ฒด์ œ๊ฐ€ ๋™์ข…์ธ ๊ฒฝ์šฐ ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•˜์—ฌ ๊ธฐ์„ฑ ํŒจํ‚ค์ง€๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ฃผ๋กœ Ansible์„ ํ†ตํ•ด ๋ฐฐํฌํ•˜๊ณ , ๊ฐ€์žฅ ์ค‘์š”๋„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ์ผ๋ถ€ ์„œ๋ฒ„์— ๋จผ์ € ๋กค์•„์›ƒํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์„œ๋ฒ„์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธํ•œ ํ›„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ, ์ž๋™ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ๊ฒฝํ—˜์ด ์—†๋Š” ๊ด€๋ฆฌ์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํŒฉํŠธํ•œ ๋…๋ฆฝํ˜• ๋ณต์‚ฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ๋‹น์‹ ์—๊ฒŒ๋„ ์œ ์šฉํ• ๊นŒ์š”?

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€