๋ง์ ๋ฐฑ์ ์์คํ ์ด ์์ง๋ง, ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์๋ฒ๊ฐ ์ฌ๋ฌ ์ง์ญ๊ณผ ํด๋ผ์ด์ธํธ์ ๋ถ์ฐ๋์ด ์๊ณ ์ด์ ์ฒด์ ๋ฅผ ๊ด๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
์ข์ ์ผ, ํ๋ธ๋ฅด!
๋ด ์ด๋ฆ์ ๋ํ๋ฆฌ์์
๋๋ค. ์ ๋ NPO Krista์ ์ ํ๋ฆฌ์ผ์ด์
๊ด๋ฆฌ์ ๊ทธ๋ฃน์ ํ ๋ฆฌ๋์
๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ํ๋ก์ ํธ ๊ทธ๋ฃน์ Ops์
๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์ ๋
ํนํ ์ํฉ์ ์ฒํด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ดํธ์ ์๋ ์๋ฒ ๋ชจ๋์ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๊ณ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ ์ฒด ์๋ฒ๋ฅผ ๋ฐฑ์
ํ ํ์๋ ์์ต๋๋ค. "ํ์ ๋ฐ์ดํฐ"(DBMS ๋ฐ ๊ฐ๋ณ ํ์ผ ์์คํ
๋๋ ํฐ๋ฆฌ)๋ง ์ค์ํฉ๋๋ค. ๋ฌผ๋ก ํด๋ผ์ด์ธํธ์๋ ์์ฒด ๋ฐฑ์
๊ท์ ์ด ์๊ฑฐ๋ ์์ผ๋ฉฐ ๋ฐฑ์
์ ์ ์ฅํ ์ ์๋ ์ผ์ข
์ ์ธ๋ถ ์ ์ฅ์๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฐฑ์
์ ์์ฑํ ํ ์ธ๋ถ ์ ์ฅ์๋ก ์ ์ก์ ๋ณด์ฅํฉ๋๋ค.
ํ๋์ ๋ฐฑ์
๋ชฉ์ ์ผ๋ก bash ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ตฌ์ฑ ์ต์
์ด ๋์ด๋จ์ ๋ฐ๋ผ ์ด ์คํฌ๋ฆฝํธ์ ๋ณต์ก์ฑ๋ ๊ทธ์ ๋น๋กํ์ฌ ์ปค์ก์ต๋๋ค. ์ด๋ ์์ ์์ ์ฐ๋ฆฌ๋ "์ด ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ ํ๊ดดํ ๋ค์ ...โ.
๊ธฐ์ฑ ์๋ฃจ์
์ ๋ฐฑ์
๋ถ์ฐ ํ์์ฑ, ํด๋ผ์ด์ธํธ์ ๋ฐฑ์
์ ๋ก์ปฌ๋ก ์ ์ฅํด์ผ ํ๋ ์๊ตฌ ์ฌํญ, ์ค์ ์ ๋ณต์ก์ฑ, ๊ฐ์ ธ์ค๊ธฐ ๋์ฒด, ์ก์ธ์ค ์ ํ ๋ฑ ๋ค์ํ ์ด์ ๋ก ์ ํฉํ์ง ์์์ต๋๋ค.
์ฐ๋ฆฌ ์์ ์ ๊ฒ์ ์ฐ๋ ๊ฒ์ด ๋ ์ฌ์ด ๊ฒ ๊ฐ์์ต๋๋ค. ๋์์ ๋๋ ํฅํ N๋ ๋์ ์ฐ๋ฆฌ ์ํฉ์ ์ถฉ๋ถํ๋ฉด์๋ ์ ์ฌ์ ์ผ๋ก ๋ฒ์๋ฅผ ํ์ฅํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๊ฐ๊ณ ์ถ์์ต๋๋ค.
์๋ฌด์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
- ๊ธฐ๋ณธ ๋ฐฑ์ ์ธ์คํด์ค๋ ์์จ์ ์ด๋ฉฐ ๋ก์ปฌ๋ก ์คํ๋ฉ๋๋ค.
- ๋ฐฑ์ ๋ฐ ๋ก๊ทธ ์ ์ฅ์ ํญ์ ํด๋ผ์ด์ธํธ ๋คํธ์ํฌ ๋ด์ ์์ต๋๋ค.
- ์ธ์คํด์ค๋ ์ผ์ข ์ "์์ฑ์"์ธ ๋ชจ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ค๋๋ Linux ๋ฐฐํฌํ์ ํฌํจํ์ฌ ํ์ฌ Linux ๋ฐฐํฌํ๊ณผ์ ํธํ์ฑ์ด ํ์ํ๋ฉฐ ์ ์ฌ์ ์ธ ํฌ๋ก์ค ํ๋ซํผ์ด ๋ฐ๋์งํฉ๋๋ค.
- ์ธ์คํด์ค ์์ ์ ์ํด์๋ SSH๋ฅผ ํตํ ์ก์ธ์ค๋ก ์ถฉ๋ถํ๋ฉฐ ์ถ๊ฐ ํฌํธ๋ฅผ ์ด ํ์๊ฐ ์์ต๋๋ค.
- ์ค์ ๋ฐ ์๋์ ์ต๋ ์ฉ์ด์ฑ
- ์๋ก ๋ค๋ฅธ ์๋ฒ์ ๋ฐฑ์ ์ํ๋ฅผ ์ค์์์ ๋ณผ ์ ์๋ ๋ณ๋์ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค(ํ์๋ ์๋).
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ์๊ฐํด๋ธ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค:
์ํํธ์จ์ด๋ 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