[Database] Sharding & Replication & Clustering
DB Sharding, Replication, Clustering
๐Partitioning
ํํฐ์
๋์ ์ผ๋ฐ์ ์ผ๋ก DB ํ
์ด๋ธ์ ์์ ๋ถ๋ถ์ผ๋ก ์ฌ๋ฌ ๊ฐ ๋๋๋ ๊ฒ์ ๊ฐ๋ฆฌํด.
Column์ ๊ธฐ์ค์ผ๋ก ๋๋๋ Vertical Partitioning
(์์ง)๊ณผ Row๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋๋ Horizontal Partioning
(์ํ)์ด ์๋ค.
๐Sharding
์ค๋ฉ์ ์ํ ํํฐ์
๋
์ ํน์ํ ํํ. Shard key
๋ผ๊ณ ์๋ ค์ง ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋๋จ. Shard key ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ์ฌ๋ฌ Sharding์ด ์์.
์ค๋ฉ์ ์ฌ๋ฌ ์๋ฒ์ ์คํค๋ง๊ฐ ๋ณต์ ๋จ. ๋ฐ์ดํฐ๋ Shard key๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฌ ๋
ธ๋๋ค์ ๋๋์ด ์ ์ฅ๋จ.
๊ฒ์ ์์ฒญ์ ๋ํ ๋ถํ๋ฅผ ์๋ก ๋ค๋ฅธ ์ค๋๊ฐ ์๋ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐํ ์ ์์.
์คํค๋ง๋ฅผ ์ ์งํ๊ธฐ ๋๋ฌธ์ DB ํ์ฅ์ ์์ด์๋ ์ ์ฉ์ด ์ฌ์.
๐Replication
์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ์์ง์ ์ธ ๊ตฌ์กฐ(Master - Slave)๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
- Master Node๋
์ฐ๊ธฐ
์์ ๋ง์ ์ฒ๋ฆฌ, Slave Node๋์ฝ๊ธฐ
์์ ๋ง์ ์ฒ๋ฆฌ. - ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ
- ์ฅ์
- DB ์์ฒญ์ ๋๋ถ๋ถ์ด Read์ด๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ์ ์ด์
- ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ด์๋์ด ์ง์ฐ ์๊ฐ์ด ๊ฑฐ์ ์์
- ๋จ์
- ๋ ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ๊ฐ ๋ณด์ฅ๋์ง ์์ ์ผ๊ด์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ์ป์ง ๋ชปํ ์ ์๋ค.
- Master ๋ ธ๋๊ฐ ๋ค์ด๋๋ฉด ๋ณต๊ตฌ ๋ฐ ๋์ฒ๊ฐ ๊น๋ค๋ก์
๐ปMySQL์ Replication
- Master ๋ ธ๋์ ์ฐ๊ธฐ ํธ๋์ญ์ ์ด ์ํ๋จ
- Master ๋ ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํธ๋์ญ์ ์ ๋ํ ๋ก๊ทธ๋ฅผ ํ์ผ์ ๊ธฐ๋ก(BIN LOG)
- Slave ๋ ธ๋์ IO Thread๋ Master ๋ ธ๋์ ๋ก๊ทธ ํ์ผ(BIN LOG)๋ฅผ ํ์ผ(Replay Log)์ ๋ณต์ฌํ๋ค.
- Slave ๋ ธ๋์ SQL Thread๋ ํ์ผ(Replay Log)๋ฅผ ํ ์ค์ฉ ์ฝ์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
๐Clustering
์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ์ํ์ ์ธ ๊ตฌ์กฐ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
- ํด๋ฌ์คํฐ๋ง์ ๋ถ์ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํด Single point of failure์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ Fail Over ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํด์ ์ฌ์ฉ๋จ
- ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ