Georgy Rylov์ 2020๋ ์ด ๋ณด๊ณ ์ "WAL-G: ์ปค๋ฎค๋ํฐ์ ์๋ก์ด ๊ธฐํ์ ํ์ฅ"์ ๋ น์ทจ๋ก์ ์ฝ์ด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์คํ ์์ค ๊ด๋ฆฌ์๋ ์ฑ์ฅํ๋ฉด์ ๋ง์ ์ด๋ ค์์ ์ง๋ฉดํฉ๋๋ค. ์ ์ ๋ ๋ง์ ํ์ ๊ธฐ๋ฅ์ ์์ฑํ๊ณ , ์ ์ ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ , ์ ์ ๋ ๋ง์ ํ ์์ฒญ์ ๋ณผ ์ ์๋๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? WAL-G(PostgreSQL์ฉ ๋ฐฑ์ ๋๊ตฌ)๋ฅผ ์๋ก ๋ค์ด ๋ํ์์ ์คํ ์์ค ๊ฐ๋ฐ ๊ณผ์ ์ ์์ํ์ฌ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง, ์ฐ๋ฆฌ๊ฐ ๋ฌ์ฑํ ์ฑ๊ณผ์ ์์ผ๋ก ๋์๊ฐ ๋ฐฉํฅ์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ค์ ํ๋ฒ ์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ! ์ ๋ ์์นดํ ๋ฆฐ๋ถ๋ฅดํฌ ์ถ์ ์ Yandex ๊ฐ๋ฐ์์ ๋๋ค. ์ค๋์ WAL-G์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
๋ณด๊ณ ์ ์ ๋ชฉ์๋ ๋ฐฑ์ ์ ๊ดํ ๋ด์ฉ์ด ๋์ ์์ง ์์์ต๋๋ค. WAL-G๊ฐ ๋ฌด์์ธ์ง ์๋ ์ฌ๋์ด ์๋์? ์๋๋ฉด ๋ค๋ค ์๊ณ ๊ณ์๋์? ๋ชจ๋ฅด์๋ฉด ์์ ๋์ธ์. ์ ์ฅ, ๋น์ ์ ๋ณด๊ณ ์์ ์๋๋ฐ ๊ทธ๊ฒ ๋ฌด์จ ๋ด์ฉ์ธ์ง ๋ชจ๋ฅด์๋๊ตฐ์.
์ค๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ์ง ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ ํ์ ๊ฝค ์ค๋ซ๋์ ๋ฐฑ์ ์ ์ํํด ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ์์ ํ๋ฉฐ ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ๋ ์๋ฆฌ์ฆ์ ๋ ๋ค๋ฅธ ๋ณด๊ณ ์์ ๋๋ค.
์ด์ ์๋ฆฌ์ฆ์๋ Andrei Borodin๊ณผ Vladimir Leskov์ ๋ณด๊ณ ์๊ฐ ๋ง์ด ์์์ต๋๋ค. ์ฐ๋ฆฌ ์ค ๋ง์ ์ฌ๋๋ค์ด์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์๋ ๋์ WAL-G์ ๋ํด ์ด์ผ๊ธฐํด ์์ต๋๋ค.
clck.ru/F8ioz โ
clck.ru/Ln8Qw โ
์ด ๋ณด๊ณ ์๋ ๊ธฐ์ ์ ์ธ ๋ถ๋ถ์ ๋ ์ค์ ์ ๋์๋ค๋ ์ ์์ ๋ค๋ฅธ ๋ณด๊ณ ์์ ์กฐ๊ธ ๋ค๋ฅผ ์ ์์ง๋ง, ์ฌ๊ธฐ์๋ ์ปค๋ฎค๋ํฐ ์ฑ์ฅ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ์ ์ด๋ป๊ฒ ์ง๋ฉดํ๋์ง์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ์ด์ ๋์ฒํ๋ ๋ฐ ๋์์ด ๋๋ ์์ ์์ด๋์ด๋ฅผ ์ด๋ป๊ฒ ์๊ฐํด ๋๋์ง.
๋ช ๋ ์ , WAL-G๋ Citus Data์์ ์ป์ ์๋นํ ์์ ํ๋ก์ ํธ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ฐ์ ธ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํ ์ฌ๋์ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ WAL-G๋ง์ด ๋ค์์ ๊ฐ์ง๊ณ ์์ง ์์์ต๋๋ค:
- ๋ณต์ ๋ณธ์์ ๋ฐฑ์ ํฉ๋๋ค.
- ์ฆ๋ถ ๋ฐฑ์ ์ด ์์์ต๋๋ค.
- WAL-Delta ๋ฐฑ์ ์ด ์์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์์ง ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง์ด ์์์ต๋๋ค.
์ง๋ ๋ช ๋ ๋์ WAL-G๋ ๋ง์ด ์ฑ์ฅํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ 2020๋ ์๋ ์์ ๋ชจ๋ ์ฌํญ์ด ์ด๋ฏธ ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ํ์ฌ ์ฐ๋ฆฌ๊ฐ ๊ฐ๊ณ ์๋ ๊ฒ์ด ์ถ๊ฐ๋์์ต๋๋ค:
- GitHub์ ๋ณํ๊ฐ 1๊ฐ๊ฐ ๋์ต๋๋ค.
- ํฌํฌ 150๊ฐ.
- ์ฝ 15๊ฐ์ ๊ณต๊ฐ PR์ด ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ ๋ง์ ๊ธฐ์ฌ์๋ค์ด ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ํญ์ ์ด์๋ฅผ ๊ณต๊ฐํ์ธ์. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ฌธ์ ๊ทธ๋๋ก ๋งค์ผ ๊ทธ๊ณณ์ ๊ฐ์ ๊ทธ๊ฒ์ ๋ํด ๋ญ๊ฐ๋ฅผ ํ๋ค๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ ๋ง์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ Yandex์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค๋ฅผ ์ํด ์๋ฌด๊ฒ๋ ๊ตฌํํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์ด ํ๋ก์ ํธ์ ๋ ๋ง์ ๊ด์ฌ์ด ํ์ํ๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ 2018๋ ๊ฐ์์ฏค์ ์ฐ๋ฆฌ๋ ํ ๊ฐ์ง ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ ธ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํ์๋ ์ธ๋ ฅ์ด ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ ์ผ๋ถ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค๋ฅธ ๊ฐ๋ฐ์๋ฅผ ๊ณ ์ฉํ๊ณ ๊ทธ์๊ฒ ๋์ ์ง๋ถํ ์ ์์ต๋๋ค. ์๋๋ฉด ์ ์ ๋์ ์ธํด์ ๊ณ ์ฉํ๊ณ ๊ทธ์๊ฒ ๊ธ์ฌ๋ฅผ ์ง๊ธํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๊ฝค ๋ง์ ์ฌ๋๋ค์ด ์๊ณ , ๊ทธ๋ค ์ค ์ผ๋ถ๋ ์ด๋ฏธ ์ฝ๋ ์์ฑ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค. ์ฝ๋์ ํ์ง์ด ์ด๋ค์ง ํญ์ ์ ์๋ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ์๊ฐํ๊ณ ํ์๋ค์ ์ ์นํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ํ์ง๋ง ํ์๋ค์ ์ฐ๋ฆฌ์ ํจ๊ป ๋ชจ๋ ์ผ์ ์ฐธ์ฌํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ์์ ์ ์ผ๋ถ๋ง์ ์ํํ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ํ ์คํธ ์์ฑ, ๋ฒ๊ทธ ์์ , ์ฃผ์ ๊ธฐ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๋ ๊ธฐ๋ฅ ๊ตฌํ ๋ฑ์ ์ํํฉ๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ ๋ฐฑ์ ์์ฑ ๋ฐ ๋ฐฑ์ ๋ณต์์ ๋๋ค. ๋ฐฑ์ ์์ฑ์ ์ค์๋ฅผ ํ๋ฉด ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํฉ๋๋ค. ๋ฌผ๋ก ๋๊ตฌ๋ ์ด๊ฒ์ ์ํ์ง ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ์์ ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฌผ๋ก ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ ์์ ์ ์ฝ๋๋ณด๋ค ๋ ์ ๋ขฐํ๋ ์ฝ๋๋ฅผ ํ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ฆ, ์ค์ํ์ง ์์ ์ฝ๋๋ ์ถ๊ฐ ์์ ์๋ก๋ถํฐ ๋ฐ๊ณ ์ถ์ ์ฝ๋์ ๋๋ค.
ํ์ PR์ ์ด๋ค ์กฐ๊ฑด์์ ์ธ์ ๋๋์?
- ๊ทธ๋ค์ ํ ์คํธ๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋ค๋ฃจ์ด์ผ ํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ CI์์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ํ 2๊ฐ์ ๋ฆฌ๋ทฐ๋ฅผ ๊ฑฐ์นฉ๋๋ค. ํ๋๋ ์๋๋ ์ด ๋ณด๋ก๋(Andrey Borodin)์ ๊ฒ์ด๊ณ ํ๋๋ ์ ๊ฐ ๋ง๋ ๊ฒ์ ๋๋ค.
- ๋ํ, ์ด๋ก ์ธํด ์๋น์ค๊ฐ ์ค๋จ๋์ง ์๋์ง ํ์ธํ๊ธฐ ์ํด ์ด ์ปค๋ฐ๊ณผ ํจ๊ป ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ณ๋๋ก ์ ๋ก๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์๋ฌด๊ฒ๋ ์คํจํ์ง ์๋ ์๋ ํฌ ์๋ ํ ์คํธ๋ฅผ ํ์ธํฉ๋๋ค.
์คํ์์ค ํน๋ณ๊ฐ์ข
์ด๊ฒ์ด ์ ํ์ํ์ง, ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ ๋ฉ์ง ์์ด๋์ด์ธ์ง์ ๋ํด ์กฐ๊ธ ์ค๋ช ํฉ๋๋ค.
์ฐ๋ฆฌ์๊ฒ๋ ์ด์ต์ด ๋ถ๋ช ํฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ์ถ๊ฐ ์์ ์ป์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ค๋งํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋๋ํ ํ์๋ค ์ค์์ ํ์ ํ๋ณด์๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค.
ํ์๋ค์๊ฒ ์ด๋ค ํํ์ด ์๋์?
ํ์๋ค์ ์ต์ํ ์์ ์ด ์์ฑํ ์ฝ๋์ ๋ํด ๋์ ๋ฐ์ง ์๊ณ ํ์ ๊ธฐ๋ก์ ๋ํด์๋ง ์ฑ์ ์ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ ๋ช ํํ ์ ์์ต๋๋ค.
๋๋ ๊ทธ๋ค์๊ฒ ์ด๊ฒ์ ๋ํด ๋ฌผ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๋ง์ ๋ฐ๋ฅด๋ฉด:
- ์คํ์์ค ๊ธฐ์ฌ์ ๊ฒฝํ.
- ์ด๋ ฅ์์ ํ ์ค์ฉ ์ ์ผ์ธ์.
- ์์ ์ ์ฆ๋ช ํ๊ณ Yandex ์ธํฐ๋ทฐ์ ํฉ๊ฒฉํ์ธ์.
- GSoC ํ์์ด ๋์ธ์.
- ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ์ ์ฌ๋๋ค์ ์ํ +1 ํน๋ณ ์ฝ์ค.
์ฝ์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์๋์ง๋ ์ด์ผ๊ธฐํ์ง ์๊ฒ ์ต๋๋ค. WAL-G๊ฐ ๋ฉ์ธ ํ๋ก์ ํธ์๋ค๊ณ ๋ง ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ด ๊ณผ์ ์๋ Odyssey, PostgreSQL ๋ฐ ClickHouse์ ๊ฐ์ ํ๋ก์ ํธ๋ ํฌํจ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ์ด ๊ณผ์ ์์๋ง ๋ฌธ์ ๋ฅผ ๋ธ ๊ฒ์ด ์๋๋ผ ์กธ์ ์ฅ๊ณผ ๊ต๊ณผ ๊ณผ์ ๋ ๋๋ ์ฃผ์์ต๋๋ค.
์ฌ์ฉ์์๊ฒ ์ด๋ค ์ด์ ์ด ์๋์?
์ด์ ๊ฐ์ฅ ๊ด์ฌ ์๋ ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ์ด๊ฒ์ด ๋น์ ์๊ฒ ๋ฌด์จ ์์ฉ์ด ์๋์? ์์ ์ ํ์๋ค์ด ๋ง์ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทํ๊ฐ ์์ฒญํ ์์ฒญ ๊ธฐ๋ฅ์ ๋ง๋ค์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ซ๋์ ์ํ์ จ๋ ๊ฒ๊ณผ ์คํ๋ ๊ฒ๋ค์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํ ์ด๋ธ์คํ์ด์ค๋ฅผ ์ง์ํฉ๋๋ค. WAL-G์ ํ ์ด๋ธ์คํ์ด์ค๋ ์๋ง๋ WAL-G ์ถ์ ์ดํ ์์๋์์ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด WAL-G๋ ํ ์ด๋ธ์คํ์ด์ค๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ์ด ์ง์๋๋ ๋ ๋ค๋ฅธ ๋ฐฑ์ ๋๊ตฌ์ธ WAL-E์ ํ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง, ์ ๊ทธ๊ฒ์ด ๋ชจ๋ ํ์ํ์ง ๊ฐ๋ตํ๊ฒ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ Postgres ๋ฐ์ดํฐ๋ ํ์ผ ์์คํ ์์ ๊ธฐ๋ณธ์ด๋ผ๋ ๋๋ ํฐ๋ฆฌ ํ๋๋ฅผ ์ฐจ์งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋๋ ํฐ๋ฆฌ์๋ Postgres์ ํ์ํ ๋ชจ๋ ํ์ผ๊ณผ ํ์ ๋๋ ํฐ๋ฆฌ๊ฐ ์ด๋ฏธ ํฌํจ๋์ด ์์ต๋๋ค.
ํ ์ด๋ธ์คํ์ด์ค๋ Postgres ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๋๋ ํฐ๋ฆฌ์ด์ง๋ง ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ ์ธ๋ถ์ ์์นํ์ง๋ ์์ต๋๋ค. ์ฌ๋ผ์ด๋์์๋ ํ ์ด๋ธ์คํ์ด์ค๊ฐ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ ์ธ๋ถ์ ์์นํจ์ ๋ณด์ฌ์ค๋๋ค.
Postgres ์์ฒด์์๋ ์ด๊ฒ์ด ์ด๋ค ๋ชจ์ต์ ๋๊น? ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ์๋ ๋ณ๋์ ํ์ ๋๋ ํฐ๋ฆฌ pg_tblspc๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ ์ธ๋ถ์ ์ค์ ๋ก Postgres ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ช ๋ น์ด ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ์ ์์ต๋๋ค. ์ฆ, ์ง์ ๋ ํ ์ด๋ธ์คํ์ด์ค์ ํ ์ด๋ธ์ ์์ฑํ๊ณ ํ์ฌ ์์น๋ฅผ ํ์ธํฉ๋๋ค. ์ด๊ฒ์ ๋ง์ง๋ง ๋ ์ค์ด๋ฉฐ ๋ง์ง๋ง ๋ ๋ช ๋ น์ด ํธ์ถ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ค์ ์ผ๋ก ์ด๊ฒ์ ์ค์ ์ ์ธ ๋ฐฉ์์ ์๋๋ค. ์ด๋ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ์์ ํ ์ด๋ธ์คํ์ด์ค๊น์ง์ ์ ๋์ฌ๊ฐ ๋ถ์ ๊ฒฝ๋ก์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์์ ์ค์ ๋ฐ์ดํฐ๋ก ์ฐ๊ฒฐ๋๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ์ผ์น๋ฉ๋๋ค.
์ฐ๋ฆฌ ํ์์๋ ์ด ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ์ง ์์ง๋ง WAL-G๋ก ์ด๋ํ๊ณ ์ถ๋ค๊ณ ์ฐ๋ฆฌ์๊ฒ ํธ์ง๋ฅผ ๋ณด๋ธ ๋ค๋ฅธ ๋ง์ WAL-E ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ์ง๋ง ์ด๋ก ์ธํด ์ค๋จ๋์์ต๋๋ค. ์ด์ ์ด๊ฒ์ด ์ง์๋ฉ๋๋ค.
์ฐ๋ฆฌ์ ํน๋ณ ์ฝ์ค๊ฐ ๊ฐ์ ธ์จ ๋ ๋ค๋ฅธ ํน์ง์ ๋ฐ๋ผ์ก๊ธฐ์ ๋๋ค. Postgres๋ณด๋ค Oracle๊ณผ ๋ ๋ง์ด ์ผํ ์ฌ๋๋ค์ ๋ฐ๋ผ์ก๊ธฐ์ ๋ํด ์๊ณ ์์ต๋๋ค.
๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ๊ฐ๋ตํ๊ฒ ์ค๋ช ํฉ๋๋ค. ์ฐ๋ฆฌ ์๋น์ค์ ํด๋ฌ์คํฐ ํ ํด๋ก์ง๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ๋ ์ฃผ์ธ์ด ์์ต๋๋ค. ๋ฏธ๋ฆฌ ์ฐ๊ธฐ ๋ก๊ทธ๋ฅผ ์คํธ๋ฆฌ๋ฐํ๋ ๋ณต์ ๋ณธ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณต์ ๋ณธ์ ํ์ฌ ์ด๋ LSN์ ์๋์ง ๋ง์คํฐ์๊ฒ ์๋ ค์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ณํํ์ฌ ๋ก๊ทธ๋ฅผ ๋ณด๊ดํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ ๋ณด๊ด ์ธ์๋ ๋ฐฑ์ ๋ ํด๋ผ์ฐ๋๋ก ์ ์ก๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ธํ ๋ฐฑ์ ์ด ์ ์ก๋ฉ๋๋ค.
๋ฌด์์ด ๋ฌธ์ ์ผ๊น์? ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋นํ ํฐ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ์ด ๋ง์คํฐ๋ณด๋ค ํจ์ฌ ๋ค์ฒ์ง๊ธฐ ์์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ ๋๋ฌด ๋ค์ณ์ ธ์ ๊ฒฐ์ฝ ๊ทธ๋ฅผ ๋ฐ๋ผ์ก์ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ป๊ฒ๋ ํด๊ฒฐ๋์ด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ณต์ ๋ณธ์ ์ ๊ฑฐํ๊ณ ๋ค์ ์ ๋ก๋ํ๋ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๊ฒฐ์ฝ ๋ฐ๋ผ์ก์ ์ ์๊ณ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ฒด 10TB ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ์ ๋ณต์ํ๋ ๋ฐ๋ ๋งค์ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๊ฝค ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ์ด ๋ชจ๋ ์์ ์ ์ํํ๊ณ ์ถ์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๋ฐ๋ผ์ก๊ธฐ์ ๋ชฉ์ ์ ๋๋ค.
Catchup์ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ํด๋ผ์ฐ๋์ ์ ์ฅ๋๋ ๋ธํ ๋ฐฑ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ง์ฐ๋ ๋ณต์ ๋ณธ์ด ํ์ฌ ์ด๋ LSN์ ์๋์ง ๋งํ๊ณ catchup ๋ช ๋ น์ ์ด๋ฅผ ์ง์ ํ์ฌ ํด๋น LSN๊ณผ ํด๋ฌ์คํฐ๊ฐ ํ์ฌ ์์นํ LSN ์ฌ์ด์ ๋ธํ ๋ฐฑ์ ์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด ๋ฐฑ์ ์ ๋ค์ฒ์ง ๋ณต์ ๋ณธ์ผ๋ก ๋ณต์ํฉ๋๋ค.
๊ธฐํ ๊ธฐ์ง
ํ์๋ค์ ๋ํ ์ฐ๋ฆฌ์๊ฒ ๋ง์ ๊ธฐ๋ฅ์ ํ๊บผ๋ฒ์ ๊ฐ์ ธ์์ต๋๋ค. Yandex์์๋ Postgres๋ฟ๋ง ์๋๋ผ MySQL, MongoDB, Redis, ClickHouse๋ ์๋ฆฌํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ค ์์ ์์๋ MySQL์ ๋ํ ํน์ ์์ ๋ณต๊ตฌ๋ฅผ ํตํด ๋ฐฑ์ ์ ๋ง๋ค ์ ์์ด์ผ ํ๊ณ ์ ๋ก๋ํ ๊ธฐํ๊ฐ ์์์ต๋๋ค. ํด๋ผ์ฐ๋๋ก ์ด๋ํ์ธ์.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ WAL-G์ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์ด๋ฅผ ์ํํ๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๋ณด์ผ์ง ์คํํ๊ณ ์์๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒ์์๋ ์ด ๋ ผ๋ฆฌ๋ฅผ ์ด๋ค ์์ผ๋ก๋ ๊ณต์ ํ์ง ์๊ณ ํฌํฌ์ ์ฝ๋๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ค์ ์ฐ๋ฆฌ์๊ฒ ์ผ์ข ์ ์๋ ๋ชจ๋ธ์ด ์๊ณ ๊ทธ๊ฒ์ด ๋ ์ ์๋ค๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฐ๋ฆฌ์ ์ฃผ์ ์ปค๋ฎค๋ํฐ๊ฐ ํฌ์คํธ๊ทธ๋ ์คํธ์ด๊ณ WAL-G๋ฅผ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ๋ ์ด ๋ถ๋ถ๋ค์ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค. ์ฆ, Postgres์ฉ ์ฝ๋๋ฅผ ํธ์งํด๋ MySQL์ด ์์๋์ง ์์ผ๋ฉฐ, MySQL์ ํธ์งํด๋ Postgres๊ฐ ์์๋์ง ์์ต๋๋ค.
์ด๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ฒซ ๋ฒ์งธ ์์ด๋์ด๋ PostgreSQL ํ์ฅ์์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๋์ผํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ค๋ ์์ด๋์ด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก MySQL ๋ฐฑ์ ์ ๋ง๋ค๋ ค๋ฉด ์ผ์ข ์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํด์ผ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ์ด ์ ๊ทผ๋ฒ์ ๋น๋์นญ์ฑ์ ์ฆ์ ๋๋ฌ๋ฉ๋๋ค. Postgres๋ฅผ ๋ฐฑ์ ํ ๋ Postgres์ ๋ํ ์ผ๋ฐ ๋ฐฑ์ ์ ๋ฃ์ผ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ MySQL์ ๊ฒฝ์ฐ Postgres์ฉ ๋ฐฑ์ ์ ์ค์นํ๊ณ ์ด๋ฅผ ์ํ MySQL์ฉ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ค์นํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ข ์ด์ํ๊ฒ ๋ค๋ฆฌ๋ค์. ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฒ ์๊ฐํ๊ณ ์ด๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ํ์ํ ์๋ฃจ์ ์ด ์๋๋ผ๊ณ ๊ฒฐ์ ํ์ต๋๋ค.
Postgres, MySQL, MongoDB, Redis๋ฅผ ์ํ ๋ค์ํ ๋น๋
๊ทธ๋ฌ๋ ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฐ์ ์๋ก ๋ค๋ฅธ ์ด์ ๋ธ๋ฆฌ๋ฅผ ํ ๋นํ๋ ์ฌ๋ฐ๋ฅธ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฅผ ํตํด WAL-G๊ฐ ๊ตฌํํ๋ ๊ณตํต API์ ์ก์ธ์คํ๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐฑ์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ ผ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
์ด๊ฒ์ ํ์๋ค์๊ฒ ๋ฌธ์ ๋ฅผ ์ฃผ๊ธฐ ์ ์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์์ฑํ ๋ถ๋ถ์ ๋๋ค. ์ฆ, ์ด ๋ถ๋ถ์ด ๋ฐ๋ก ๊ทธ๋ค์ด ์๋ชปํ ์ ์๋ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๋ ๊ฒ ํ๋ ๊ฒ์ด ๋ซ๊ฒ ๋ค๊ณ ์๊ฐํ๊ณ ๋ชจ๋ ๊ฒ์ด ์ ๋ ๊ฒ์ ๋๋ค.
๊ทธ ํ ์ฐ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ๋ด๋์์ต๋๋ค. ๊ทธ๋ค์ ์ฆ์ ํด์ฒด๋์์ต๋๋ค. ํ์๋ค์ ์ธ ๊ฐ์ง ๊ธฐ์ง๋ฅผ ์ง์งํด์ผ ํ์ต๋๋ค.
์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ XNUMX๋ ๋๊ฒ ์ด๋ฐ ๋ฐฉ์์ผ๋ก WAL-G๋ฅผ ์ด์ฉํด ๋ฐฑ์ ํด ์จ MySQL์ด๋ค.
์ด์ MongoDB๋ ํ๋ก๋์ ์ ์ ๊ทผํ๊ณ ์์ผ๋ฉฐ ํ์ผ๋ก ๋ง๋ฌด๋ฆฌํ๊ณ ์์ต๋๋ค. ์ฌ์ค ์ฐ๋ฆฌ๋ ์ด ๋ชจ๋ ๊ฒ์ ์ํ ํ๋ ์์ํฌ๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์๋ค์ ์คํ ๊ฐ๋ฅํ ๋ช ๊ฐ์ง ๊ธ์ ์ผ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฅผ ํ๋ก๋์ ์์ ์์ฉํ ์ ์๋ ์ํ๋ก ๋ง๋ญ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ ํ์๋ค์ด ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์์ ํ ๋ฐฑ์ ๋๊ตฌ๋ฅผ ์์ฑํ๋ ๋ฐ ํ์ํ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๋ฌธ์ ๋ ํน์ ์์ ๋ณต๊ตฌ๋ฅผ ์ํ๊ณ ํด๋ผ์ฐ๋์ ๋ฐฑ์ ํ๊ณ ์ถ๋ค๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์๋ค์๊ฒ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ต๋๋ค. ํ์๋ค์ ์ด๋ป๊ฒ๋ ๋ฐฑ์ ์ ์ํํ๋ ๊ธฐ์กด ๋ฐฑ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ๋ค์ WAL-G๋ก ๋ชจ๋ ์ ์ฐฉํ์ฌ ํด๋ผ์ฐ๋๋ก ์ ๋ฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ํน์ ์์ ๋ณต๊ตฌ๋ ์ถ๊ฐํ์ต๋๋ค.
ํ์๋ค์ ๋ ๋ฌด์์ ๊ฐ์ ธ์๋์? ๊ทธ๋ค์ WAL-G์ Libsodium ์ํธํ ์ง์์ ๋์ ํ์ต๋๋ค.
๋ฐฑ์ ์คํ ๋ฆฌ์ง ์ ์ฑ ๋ ์์ต๋๋ค. ์ด์ ๋ฐฑ์ ์ ์๊ตฌ ๋ฐฑ์ ์ผ๋ก ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋น์ค๊ฐ ์ด๋ฅผ ์ ์ฅํ๋ ๊ณผ์ ์ ์๋ํํ๋ ๊ฒ์ด ์ด๋ป๊ฒ๋ ๋ ํธ๋ฆฌํฉ๋๋ค.
์ด ์คํ์ ๊ฒฐ๊ณผ๋ ๋ฌด์์ด์๋์?
์ฒ์์ 100๋ช ์ด์์ด ๊ฐ์ข์ ๋ฑ๋กํ์ต๋๋ค. ์ฒ์์ ๋๋ ์์นดํ ๋ฆฐ๋ถ๋ฅดํฌ์ ์๋ ๋ํ์ด ์ฐ๋ ์ฐ๋ฐฉ ๋ํ์ด๋ผ๊ณ ๋งํ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์์ ๋ชจ๋ ๊ฒ์ ๋ฐํํ์ต๋๋ค. 100๋ช ์ด ๋ฑ๋กํ์ต๋๋ค. ์ค์ ๋ก ๋ญ๊ฐ๋ฅผ ์์ํ ์ฌ๋์ ํจ์ฌ ์ ์ 30๋ช ์ ๋์์ต๋๋ค.
์ด๋ฏธ ์กด์ฌํ๋ ์ฝ๋์ ๋ํ ํ ์คํธ๋ฅผ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ณผ์ ์ ์๋ฃํ ์ฌ๋์ ๋์ฑ ์ ์์ต๋๋ค. ๋ํ ์ผ๋ถ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ฑฐ๋ ์ผ๋ถ ๊ธฐ๋ฅ์ ๋ง๋์ธ์. ๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ํ์๋ค์ ์ฌ์ ํ โโโโ๊ฐ์ข๋ฅผ ํ์ํ์ต๋๋ค.
ํ์ฌ ์ด ๊ณผ์ ์์ ํ์๋ค์ ์ฝ 14๊ฐ์ ์ด์๋ฅผ ์์ ํ๊ณ ๋ค์ํ ํฌ๊ธฐ์ 10๊ฐ ๊ธฐ๋ฅ์ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์๊ฐ์๋ ์ด๊ฒ์ ํ๋ ๋ช ์ ๊ฐ๋ฐ์๋ฅผ ์์ ํ ๋์ฒดํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฌด์๋ณด๋ค๋ ์ฐ๋ฆฌ๋ ์กธ์ ์ฅ๊ณผ ๊ต๊ณผ ๊ณผ์ ์ ๋ฐํํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 12๋ช ์ด ์กธ์ ์ฅ์ ๋ฐ์์ต๋๋ค. ๊ทธ ์ค 6๋ช ์ ์ด๋ฏธ '5'๋ฅผ ๋ฐฉ์ดํ์ต๋๋ค. ๋จ์ ์ฌ๋๋ค์ ์์ง ๋ณดํธ๋ฅผ๋ฐ์ง ๋ชปํ์ง๋ง ๊ทธ๋ค์๊ฒ๋ ๋ชจ๋ ๊ฒ์ด ์ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์์ผ๋ก์ ๊ณํ
์ฐ๋ฆฌ๋ ๋ฏธ๋์ ์ด๋ค ๊ณํ์ ๊ฐ๊ณ ์๋์?
์ต์ํ ์ฌ์ฉ์๋ก๋ถํฐ ์ด๋ฏธ ๋ฃ๊ณ ์ํ๋ ๊ธฐ๋ฅ ์์ฒญ์ด ์์ต๋๋ค. ์ด๊ฒ:
- HA ํด๋ฌ์คํฐ ๋ฐฑ์ ์์นด์ด๋ธ์์ ํ์๋ผ์ธ ์ถ์ ์ ์ ํ์ฑ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. WAL-G๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ์ด ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ ํ์๋ค์ด ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
- ํด๋ผ์ฐ๋ ๊ฐ ๋ฐฑ์ ๋ฐ WAL ์ ์ก์ ๋ด๋นํ๋ ์ฌ๋์ด ์ด๋ฏธ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ์๋ ํ์ด์ง๋ฅผ ๋ค์ ์์ฑํ์ง ์๊ณ ์ฆ๋ถ ๋ฐฑ์ ์ ์์ถ์ ํ๊ณ ๊ฑฐ๊ธฐ๋ก ๋ณด๋ด๋ ์์นด์ด๋ธ๋ฅผ ์ต์ ํํ์ฌ WAL-G ์๋๋ฅผ ๋์ฑ ๋์ผ ์ ์๋ค๋ ์์ด๋์ด๋ฅผ ๋ฐํํ์ต๋๋ค.
์ฌ๊ธฐ์์ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด ๋ณด๊ณ ์๋ ๋ฌด์์ ์ํ ๊ฒ์ด์์ต๋๊น? ๊ฒ๋ค๊ฐ ์ง๊ธ์ ์ด ํ๋ก์ ํธ๋ฅผ ์ง์ํด์ฃผ์๋ 4๋ช ์ธ์๋ ์ถ๊ฐ๋ก ์์ด ๋ง์ด ๊ฐ์ ์ ๊ทธ ์๊ฐ ๊ฝค ๋ง์์. ํนํ ๊ฐ์ธ์ ์ธ ๋ฉ์์ง๋ก ํธ์ง๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์ ํ๊ณ WAL-G๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ๊ฑฐ๋ WAL-G๋ก ์ด๋ํ๋ ค๋ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ๊ทํ์ ํฌ๋ง ์ฌํญ์ ๋งค์ฐ ์ฝ๊ฒ ์์ฉํ ์ ์์ต๋๋ค.
QR์ฝ๋์ ๋งํฌ์ ๋๋ค. ๋น์ ์ ๊ทธ๊ฒ์ ํตํด ๋น์ ์ ๋ชจ๋ ์์์ ์ธ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ผ๋ถ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋๋๋ค. ๋๋ ์ด๋ค ๊ธฐ๋ฅ์ ์ ๋ง๋ก ์ํ์ง๋ง ์ด๋ค ์ด์ ๋ก๋ ์์ง ์ฐ๋ฆฌ๋ฅผ ํฌํจํ ์ด๋ค ๋ฐฑ์ ์๋ ํด๋น ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ํด ๊ผญ ์ฐ์ญ์์ค.
์ง๋ฌธ
์๋ ํ์ธ์! ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! WAL-G์ ๊ดํ ์ง๋ฌธ์ด์ง๋ง Postgres์ ๊ดํ ์ง๋ฌธ์ ์๋๋๋ค. WAL-G๋ MySQL์ ๋ฐฑ์ ํ๊ณ ์ถ๊ฐ ๋ฐฑ์ ์ ํธ์ถํฉ๋๋ค. CentOS์ ์ต์ ์ค์น๋ฅผ ํ๊ณ MySQL์ yum ์ค์นํ๋ฉด MariDB๊ฐ ์ค์น๋ฉ๋๋ค. ๋ฒ์ 10.3๋ถํฐ๋ ์ถ๊ฐ ๋ฐฑ์ ์ด ์ง์๋์ง ์๊ณ MariDB ๋ฐฑ์ ์ด ์ง์๋ฉ๋๋ค. ์ด๊ฑฐ ์ด๋์?
ํ์ฌ๋ก์๋ MariDB ๋ฐฑ์ ์ ์๋ํ์ง ์์์ต๋๋ค. FoundationDB ์ง์ ์์ฒญ์ด ์์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ฌํ ์์ฒญ์ด ์์ผ๋ฉด ์ด๋ฅผ ์ํํ ์ฌ๋์ ์ฐพ์ ์ ์์ต๋๋ค. ์๊ฐ๋ณด๋ค ๊ธธ์ง๋, ์ด๋ ต์ง๋ ์์์.
์ข์ ์คํ์์ ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ ์ฌ์ ์ธ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์ง๋ฌธ์ ๋๋ค. ํ ์ดํ์ ๋ฐฑ์ ํ ์ ์๋๋ก WAL-G๋ฅผ ํ ์ดํ์ ํจ๊ป ์ฌ์ฉํ ์ค๋น๊ฐ ๋์ จ์ต๋๊น?
ํ ์ดํ ์คํ ๋ฆฌ์ง์ ๋ฐฑ์ ํ๋ค๋ ์๋ฏธ๋ ๋ฌด์์ ๋๊น?
๋ค.
์ด ์ง๋ฌธ์ ๋๋ณด๋ค ๋ ์ ๋ตํ ์ ์๋ ์ฌ๋์ ์๋๋ ์ด ๋ณด๋ก๋(Andrei Borodin)์ด๋ค.
(์๋๋ ์ด) ๋ค, ์ง๋ฌธํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง์์ ํ
์ดํ๋ก ๋ฐฑ์
์ ์ ์กํด ๋ฌ๋ผ๋ ์์ฒญ์ด ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ํด
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ํฅ๋ฏธ๋ก์ด ๊ฐ๋ฐ ๊ณผ์ . ๋ฐฑ์ ์ ํ ์คํธ๋ฅผ ํตํด ์ ๋ค๋ฃจ์ด์ผ ํ๋ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค. ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ํ์๋ค๋ ํ ์คํธ๋ฅผ ์์ฑํ์ต๋๊น, ์๋๋ฉด ์ง์ ํ ์คํธ๋ฅผ ์์ฑํ ๋ค์ ํ์๋ค์๊ฒ ๊ตฌํ์ ์ ๊ณตํ์ต๋๊น?
ํ์๋ค์ ๋ํ ํ ์คํธ๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์๋ค์ ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ํด ๋ ๋ง์ ๊ธ์ ์ผ์ต๋๋ค. ๊ทธ๋ค์ ํตํฉ ํ ์คํธ๋ฅผ ์์ฑํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ์ต๋๋ค. ํตํฉ์ด ํต๊ณผ๋๋ฉด, ์ฆ ํ์ฌ ์ด ์คํฌ๋ฆฝํธ๋ ์๋์ผ๋ก ์คํํ๊ฑฐ๋ cron์์ ์ํํ๋ ์คํฌ๋ฆฝํธ์ ๋๋ค. ์ฆ, ๊ฑฐ๊ธฐ์ ๋๋ณธ์ ๋งค์ฐ ๋ช ํํฉ๋๋ค.
ํ์๋ค์ ๊ฒฝํ์ด ๋ง์ง ์์ต๋๋ค. ๊ฒํ ํ๋๋ฐ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๋์?
๋ค, ๊ฒํ ์๋ ์๊ฐ์ด ๊ฝค ๋ง์ด ๊ฑธ๋ฆฝ๋๋ค. ์ฆ, ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ๋ช ์ ์ปค๋ฏธํฐ๊ฐ ๋์์ ์์ ๋ด๊ฐ ์ด๊ฒ์ ํ๋ค, ๋ด๊ฐ ์ ๊ฒ์ ํ๋ค๊ณ ๋งํ๋ฉด ๊ทธ๋ค์ด ๊ฑฐ๊ธฐ์ ๋ฌด์์ ์ผ๋์ง ์์๋ด๊ธฐ ์ํด ๋ฐ๋์ ์ ๋ ์๊ฐํ๊ณ ๋ฐ๋ก ์๊ฐ์ ํ ์ ํด์ผ ํฉ๋๋ค. ์ฝ๋๋ฅผ ์ฃผ์ ๊น๊ฒ ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ค์ ์ธํฐ๋ทฐ๋ฅผ ํ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ ์ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ด์ ์ Andrey Borodin์ WAL-G์ archive_command๋ฅผ ์ง์ ํธ์ถํด์ผ ํ๋ค๊ณ ๋ช ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ์ข ์ ํด๋ฌ์คํฐ ์นดํธ๋ฆฌ์ง์ ๊ฒฝ์ฐ ์คํํธ๋ฅผ ๋ณด๋ผ ๋ ธ๋๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํ ์ถ๊ฐ ๋ ผ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ์ค์ค๋ก ํด๊ฒฐํฉ๋๊น?
์ฌ๊ธฐ์ ๋น์ ์ ๋ฌธ์ ๋ ๋ฌด์์ ๋๊น? ๋ฐฑ์ ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ๋๊ธฐ์ ๋ณต์ ๋ณธ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋๋ ๋ฌด์์?
(Andrey) ์ฌ์ค WAL-G๋ ์ ์คํฌ๋ฆฝํธ ์์ด ์ฌ์ฉ๋๋๋ก ๊ณ ์๋์์ต๋๋ค. ๋๋ฝ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด WAL-G ๋ด๋ถ์ ์์ด์ผ ํ๋ ๋ ผ๋ฆฌ๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค. ๋ณด๊ด์ด ์ด๋์ ์ด๋ฃจ์ด์ ธ์ผ ํ๋์ง์ ๊ดํด์๋ ํด๋ฌ์คํฐ์ ํ์ฌ ๋ง์คํฐ์์ ๋ณด๊ด์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ๋ณต์ ๋ณธ์ ๋ณด๊ดํ๋ ๊ฒ์ ์ข์ง ์์ ์๊ฐ์ ๋๋ค. ๋ฌธ์ ๊ฐ ์๋ ๋ค์ํ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค. ํนํ ์ผ์ ๋ฐ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ณด๊ดํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ง๋ฌธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
(์ค๋ช
: ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
์ข์ ์ ๋ ์ด์์! ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋ง์ํ์ ์บ์น์ ๊ธฐ๋ฅ์ ๊ด์ฌ์ด ์์ต๋๋ค. ๋ณต์ ๋ณธ์ด ๋ค์ณ์ ธ ๋ฐ๋ผ์ก์ ์ ์๋ ์ํฉ์ ์ง๋ฉดํ๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ WAL-G ๋ฌธ์์์๋ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
Catchup์ ๋ง ๊ทธ๋๋ก 20๋ 2020์ XNUMX์ผ์ ๋ฑ์ฅํ์ต๋๋ค. ๋ฌธ์์ ์ถ๊ฐ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ค์ค๋ก ์์ฑํ์ง๋ง ์์ฃผ ์ ์์ฑํ์ง๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ง๋ ์ฐ๋ฆฌ๋ ํ์๋ค์๊ฒ ๊ทธ๊ฒ์ ์ฐ๋๋ก ์๊ตฌํ๊ธฐ ์์ํด์ผ ํ ๊ฒ์ ๋๋ค.
์ด๋ฏธ ์ถ์๋๋์?
๋์ด์ค๊ธฐ ์์ฒญ์ด ์ด๋ฏธ ์ข ๋ฃ๋์์ต๋๋ค. ์ฆ, ํ์ธํ์ต๋๋ค. ํ ์คํธ ํด๋ฌ์คํฐ์์ ์ด๊ฒ์ ์๋ํ์ต๋๋ค. ์ง๊ธ๊น์ง๋ ์ ํฌ ์์์์ ์ด๋ฅผ ํ ์คํธํ ์ ์๋ ์ํฉ์ด ์์์ต๋๋ค.
์ธ์ ์์ํ๋์?
๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํ๋ฌ๋ง ๊ธฐ๋ค๋ ค์ฃผ์๋ฉด ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
์ถ์ฒ : habr.com