Replication
โข
์ ์) ์ค์๊ฐ ๋ณต์ ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ์ด์ฉํ๋ ๊ฒ
โฆ
๋ ๊ฐ ์ด์์ DBMS ์์คํ
์ Master / Slave(Replica)๋ก ๋๋ ์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํจ
โฆ
Master Node๋ ์ฐ๊ธฐ ์์
๋ง์ ์ฒ๋ฆฌํ๊ณ , Slave Node๋ ์ฝ๊ธฐ ์์
๋ง์ ์ฒ๋ฆฌํจ
โฆ
๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํจ
โข
๋ฑ์ฅ ๋ฐฐ๊ฒฝ)
โฆ
ํ๋์ ์๋ฒ์ ํ๋์ Database๋ฅผ ๋๋๋ ์ฌ์ฉ์๊ฐ ๋ง์์ก์ ๋ Database๊ฐ ๋ง์ Query๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ํ๋ ์ํฉ์ด ์ด.
โฆ
์ด๋ Query์ ๋๋ถ๋ถ์ ์ฐจ์งํ๋ Select๋ฅผ ์ด๋ ์ ๋ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋ฐฉ๋ฒ์ด Replication์
Replication ์ ์ฉ ์
Replication ์ ์ฉ ํ
โข
๋ฐฉ๋ฒ)
1.
์ดํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ SQL ๋ช
๋ น์ ๋ณด๋ด ๋ฐ์ดํฐ ์ฝ์
/๋ณ๊ฒฝ/์ญ์ ์์ฒญ๋ณด๋
2.
Master๊ฐ ์์ฒญ ๋ฐ์ binary log ์์ฑํ์ฌ Slave ์๋ฒ๋ก ์ ๋ฌํจ
3.
Master๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ binary log๋ฅผ ๋ฐ์ดํฐ๋ก ๋ฐ์ํจ
๋ฐ์ดํฐ ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ ๊ตฌ์ฒด์ ์ผ๋ก
โข
์ฅ์ ) ๋ฐ์ดํฐ ๋ฐฑ์
, DBMS ๋ถํ ๋ถ์ฐ
โฆ
Slave๊ฐ Master์ ๊ฑฐ์ ์ค์๊ฐ์ผ๋ก ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์์ด, ์ฅ์ ๋ณต๊ตฌ ์ ๋ฐ์ดํฐ ์์ค ์ต์ํ๋จ (๋ฐ์ดํฐ ์์ ์ฑ)
โช
Slave ์๋ฒ๋ฅผ Master ์๋ฒ๋ก ์น๊ฒฉ์์ผ ๊ธฐ์กด Master ๋์ฒดํ๋ ๋ฐฉ์์ผ๋ก ๋ณต๊ตฌ ์งํ๋จ
โฆ
๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ด์๋์ด ์ง์ฐ ์๊ฐ์ด ๊ฑฐ์ ์๋ค.
โฆ
DB ์์ฒญ์ 60~80% ์ ๋๊ฐ ์ฝ๊ธฐ ์์
์ด๊ธฐ ๋๋ฌธ์ Replication๋ง์ผ๋ก๋ ์ถฉ๋ถํ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค.
โข
๋จ์ )
โฆ
๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ๊ฐ ๋ณด์ฅ๋์ง ์์ ์ผ๊ด์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ์ป์ง ๋ชปํ ์ ์๋ค.
โฆ
Master ๋
ธ๋๊ฐ ๋ค์ด๋๋ฉด ๋ณต๊ตฌ ๋ฐ ๋์ฒ๊ฐ ๊น๋ค๋กญ๋ค.
Replication vs Clustering
โข
Replication
โฆ
์ ์) ์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ์์ง์ (Master, Slave)์ธ ๊ตฌ์กฐ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
โฆ
ํน์ง) ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ
โฆ
์ฅ์ ) ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ๋์ด ์ง์ฐ์๊ฐ์ด ๊ฑฐ์ ์์
โฆ
๋จ์ ) ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋๊ธฐํ๋์ง ์์ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ ์ป์ง ๋ชปํ ์ ์์
โข
Clustering
โฆ
์ ์) ์ฌ๋ฌ ๊ฐ์ DB๋ฅผ ์ํ์ ์ธ ๊ตฌ์กฐ๋ก ๊ตฌ์ถํ๋ ๋ฐฉ์
โฆ
ํน์ง) ๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ ๋๊ธฐํ
โฆ
์ฅ์ ) 1๊ฐ์ ๋
ธ๋๊ฐ ์ฃฝ์ด๋ ๋ค๋ฅธ ๋
ธ๋๊ฐ ์ด์ ์์ด ์์คํ
์ ์ฅ์ ์์ด ์ด์ํ ์ ์์
โฆ
๋จ์ ) ์ฌ๋ฌ ๋
ธ๋๋ค ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํํ๋ ์๊ฐ์ด ํ์ํ๋ฏ๋ก Replication์ ๋นํด ์ฐ๊ธฐ ์ฑ๋ฅ์ด ๋จ์ด์ง
AWS์์์ Database Replication
โข
AWS์ RDS๋ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์
์ ๋ํด Replication ๊ธฐ๋ฅ์ ์ง์ํจ
โข
๋ณต์ ์๋ฒ์ธ Replica๋ ์ฝ๊ธฐ ์ ์ฉ์
โข
Postgresql, Mysql, MaraiDB์ ๋ํด ์ง์ํจ
Scale-out vs Scale-up
๊ฒฐ๋ก ๋ง ๋จผ์ ๋ง์๋๋ฆฌ์๋ฉด, Replication์ Scale-out ๊ธฐ๋ฒ ์ค ํ๋์
๋๋ค.
โข
Scale-out
โฆ
์ ์) โ์ค์ผ์ผ ์์โ์ด๋ย ์ ์๋ ์๋ฒ๋ฅผ ์ฌ๋ฌ ๋ ์ถ๊ฐํ์ฌ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํฅ์ํ๋ ๋ฐฉ๋ฒ์
โฆ
ํน์ง)
โช
์ํ ์ค์ผ์ผ๋ก ๋ถ๋ฆฌ๊ธฐ๋ ํจ
โช
์๋ฅผ ๋ค์ด, ํ๋์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๊ฐ์ง ์๋ฒ์ ๋์ผํ ์๋ฒ 6๋๋ฅผ ๋ ์ถ๊ฐํ์ฌ, ์ด 7์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๋ง๋๋ ๊ฒ์
โฆ
๊ธฐ๋ฒ)
โช
Replication
โช
Sharding : gkskdml
โข
Scale-up
โฆ
์ ์) โ์ค์ผ์ผ ์
โ์ ์๋ฒ์ CPU๋ RAM ๋ฑ์ ์ถ๊ฐํ๊ฑฐ๋ย ๊ณ ์ฑ๋ฅ์ ๋ถํ, ์๋ฒ๋ก ๊ตํํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํจ
โฆ
ํน์ง)
โช
์์ง ์ค์ผ์ผ๋ก ๋ถ๋ฆฌ๊ธฐ๋ ํจ
โช
์๋ฅผ ๋ค์ด, ํ๋์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๊ฐ์ง ์๋ฒ ํ ๋๋ฅผ 7์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๊ฐ์ง ์๋ฒ๋ก ๊ทธ ์์ฒด์ ์ฒ๋ฆฌ๋ฅ๋ ฅ์ ํฅ์์ํค๋ ๊ฒ์
โข
์ฐธ๊ณ )
โฆ
๊ตฌ์ฑ ๋ฐฉ๋ฒ https://www.didim365.com/blog/20200424b-blog/
โฆ
๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ https://blog.seulgi.kim/2015/05/how-mysql-replication.html
โฆ
โฆ
๋ฒ์ธ) ๋ค๋ฅธ ์คํฐ๋์๋ค ํตํด ๋ฐฐ์ด ๊ฒ
1. ์ฟ ํค์ ์ธ์
โข
์ฟ ํค
โฆ
์ ์) ์ํ ์ ๋ณด ์ ์ฅํ๊ณ ์ ์งํ๊ธฐ ์ํ ๊ธฐ์
โฆ
ํน์ง) ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ, ๋ ์ ํํ๊ฒ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํจ
โฆ
์์) ํฌ๋กฌ์์ ๋ก๊ทธ์ธ ํ๋ค๊ฐ edge๋ก ๋ค์ด๊ฐ๋ฉด ๋ก๊ทธ์ธ ๋ค์ ํด์ผ ํจ
โข
์ธ์
โฆ
ํน์ง) ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ์ฌ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ๋ ๊ธฐ์
2. DNS
โข
๋๋ฉ์ธ : ์๋ ์ง์ ๋ ์ธํฐ๋ท ์ ์ ์ฃผ์๋ฅผ www.์ด๋ฆ.com ํํ๋ก ๋ฐ๊พธ์ด ์ค ๊ฒ
โฆ
www๋ ํธ์คํ
์ฃผ์์ด๊ณ , ์ด๋ฆ.com์ ๋๋ฉ์ธ์ด๋ผ ํจ
โข
DNS(๋๋ฉ์ธ ๋ค์ ์์คํ
)
โฆ
์ ์) ๋๋ฉ์ธ ์ด๋ฆ์ ์ปดํจํฐ๊ฐ ์ธ์ํ ์ ์๋ IP ์ฃผ์๋ก ๋ฐ๊พธ์ด ์ฃผ๋ ์์คํ
โช
๊ฐ ๋๋ฉ์ธ๋ค๋ง๋ค DNS ์๋ฒ(๋ค์์๋ฒ)๋ผ๋ ๊ฒ ์์
โฆ
๊ตฌ์ฑ ์์)
1.
๋๋ฉ์ธ ๋ค์ ์คํ์ด์ค
โข
๋๋ฉ์ธ ๋ค์์ ๋ถ์ฐํ์ฌ ์ ์ฅํ๋ ๋ฐฉ์
2.
๋ค์ ์๋ฒ
โข
๋๋ฉ์ธ ์ด๋ฆ์ ํด๋นํ๋ IP ์ฃผ์ ์ฐพ์์ฃผ๋ ์๋ฒ
3.
๋ฆฌ์กธ๋ฒ (๊ถํ ์๋ DNS ์๋ฒ)
โข
ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ค์ ์๋ฒ๋ก ์ ๋ฌํ๊ณ ๋ค์์๋ฒ์์ ์ฐพ์ ์ ๋ณด๋ฅผ ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ ๊ธฐ๋ฅ ํ๋ ์๋ฒ
โฆ
๊ตฌ์กฐ)
โช
๋ค์ ์๋ฒ๊ฐ ํ ๋๋ง ์๋ค๋ฉด ์๋ฒ ์ฑ๋ฅ๊ณผ ์๋ ์ธก๋ฉด์์ ๋ฌธ์ ๊ฐ ์๊น
โช
๋ค์ ์๋ฒ๋ฅผ ์ฌ๋ฌ ๋ ๋ง๋ ๋ค๋ฉด ๋๋ฉ์ธ๊ณผ IP ์ฃผ์ ๋งคํ ์ ๋ณด๋ฅผ ๋ชจ๋ ์๋ฒ์์ ๊ณต์ ํด์ผ ํจ
โช
๋ฐ๋ผ์ ๋๋ฉ์ธ์ ๊ณ์ธต์ ์ผ๋ก ๊ตฌ๋ถํ๊ณ ๋๋ฉ์ธ๊ณผ IP์ฃผ์๋ฅผ ๋ถ์ฐํด ์ ์ฅํ๋ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํจ
3. Optimizer
โข
์ ์)
โฆ
์ฟผ๋ฆฌ ๋ ๋ฆด ๋ ์ต์ ์ ์ต์์ ๋น์ฉ ์๋ชจ๋๊ฒ ๊ฒฐ์ ํ๋ ๊ฒ
โฆ
์ฟผ๋ฆฌ๋ฅผ ์ต์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ๊ฐ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๋ถํฌ๋ก ์ ์ฅ๋์ด ์๋์ง ์ฐธ์กฐํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ์ ์คํ ๊ณํ์ ์๋ฆฝํด์ฃผ๋ ๊ฒ
โข
๊ณผ์ ) SQL ์คํ๋์ ๋ ์ด๋ป๊ฒ ์ปดํ์ผ๋ฌ๊ฐ ์ฒ๋ฆฌํ๊ณ ์ต์ ํ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง
โฆ
SQL์ ๋ ๋ฆฌ๋ฉด, SQL ์ปดํ์ผ๋ฌ์ ์ํด SQL์ด ์ปดํ์ผ๋จ
โฆ
SQL๋ฌธ์ด ์ปดํ์ผ ๋๋ฉด, ๊ด๊ณ ๋์๊ฐ ๋จ. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฟผ๋ฆฌ ํ๋์ด ์์ฑ๋จ
โช
์ง์ ์ต์ ํํ ๋ SQL์ด ์๋๋ผ, ๊ด๊ณ ๋์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ฟผ๋ฆฌ ํ๋์ด ๊ณ ๋ ค๋จ
โช
์ฟผ๋ฆฌ ํ๋
โข
SQL ์ง์ ์ฒ๋ฆฌํ ๋ ๊ด๊ณ ๋์ ์ฐ์ฐ์๋ค๋ก ์ด๋ฃจ์ด์ง ํ์ฑ ํธ๋ฆฌ๋ฅผ ๋ง๋ฆ
โข
๊ฐ๊ฐใฑ์ ๊ด๊ณ ๋์ ์ฐ์ฐ์ ์ด๋ป๊ฒ ๊ตฌํํ ์ง, ์ด๋ค ์๊ณ ๋ฆฌ์ฆ ์ธ์ง ๊ฒฐ์ ํ๋ ๊ฒ
โข
์ด์)
โฆ
SQL ์ง์ ์ฒ๋ฆฌ ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ต์ ํ ์ํค๋ ๊ฒ
โช
ํด๋น ์ฟผ๋ฆฌ์์ ์ด๋ค plan๋ค์ด ๊ณ ๋ ค๋ ์ ์๋์ง
โช
๊ฐ plan๋ค์ cost ์ด๋ป๊ฒ ์ฐ์ ํ ์ ์์์ง
โฆ
์ด์์ ์ผ๋ก best plan์ ์ฐพ๊ณ ์ ํ์ง๋ง, ํ์ค์ ์ผ๋ก worst plan์ ํผํ๋ ๊ฒ์(NP๋ฌธ์ )
โข
์ฟผ๋ฆฌ ์คํ ์ ์ฐจ) MySQL์ ์์๋ก ๋ฌ
โฆ
์ฟผ๋ฆฌ ์คํ๋๋ ์ธ ๋จ๊ณ
1.
ํ์ฑ ๋จ๊ณ : SQL์ SQL ์๋ฒ๊ฐ ์ดํดํ ์ ์๋ ์์ค์ผ๋ก ์๊ฒ ์ชผ๊ฐ์ ๋ถ๋ฆฌ(ํ์ค ํธ๋ฆฌ)
โข
์ค์ ๋ก SQL์๋ฒ๋ SQL๋ฌธ์ฅ์ด ์๋ SQL ํ์ค ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํด ์ฟผ๋ฆฌ ์คํํจ
2.
ํ์ค ํธ๋ฆฌ ํ์ธํ๋ฉด์ ์ด๋ค ํ
์ด๋ธ๋ถํฐ ์ฝ๊ณ ์ด๋ค ์ธ๋ฑ์ค ์ด์ฉํ ์ง ์ ํ
3.
๊ฒฐ์ ํ ์ฝ๊ธฐ ์์๋ ์ ํ๋ ์ธ๋ฑ์ค ์ด์ฉํด Storage Engine์ ํตํด ํ๋์จ์ด์ ์๋ ์ค์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ด
โข
์ข
๋ฅ)
โฆ
๊ท์น ๊ธฐ๋ฐ ์ต์ ํ
โช
๋ฌด์กฐ๊ฑด Optimizer์ ๋ด์ฅ๋ ์ฐ์ ์์์ ๋ฐ๋ผ ์คํ ๊ณํ ์๋ฆฝ
โช
์ ์ฐํ์ง ์์ ํ์ฌ๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์
โฆ
๋น์ฉ ๊ธฐ๋ฐ ์ต์ ํ
โช
์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ฌ๋ฌ ๋ฐฉ๋ฒ ๋ง๋ค๊ณ ๊ฐ ๋จ์ ์์
์ ๋น์ฉ ์ ๋ณด์ ๋์ ํ
์ด๋ธ์ ํต๊ณ ์ ๋ณด ์ด์ฉํด์ ๊ฐ ์คํ ๊ณํ์ ๋น์ฉ ์ฐ์ถํจ. ์ฐ์ถ๋ ์ ๋ณด ์ด์ฉํด ๊ฐ์ฅ ์ ์ ๋น์ฉ ๋๋ ์คํ ๊ณํ ์ ํํด ์ฟผ๋ฆฌ ์คํํจ
โข
๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
โฆ
ํ ํ
์ด๋ธ ์ค์บ
โช
ํ ์ค์บ์ ํ๋ ๊ฒฝ์ฐ
โข
ํ
์ด๋ธ์ ๋ ์ฝ๋ ๊ฑด์ ๋๋ฌด ์์์ ์ธ๋ฑ์ค ํตํด ์ฝ๋ ๊ฒ๋ณด๋ค ํ ํ
์ด๋ธ ์ค์บ ํ๋ ํธ์ด ๋ ๋น ๋ฅธ ๊ฒฝ์ฐ
โข
where์ ์ด๋ on์ ์ ์ธ๋ฑ์ค ์ด์ฉํ ๋งํ ์ ์ ํ ์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ
โข
์ธ๋ฑ์ค ๋ ์ด์ง ์ค์บ ํ ์ ์์ด๋ ์กฐ๊ฑด์ ์ผ์นํ๋ ๋ ์ฝ๋๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ
โช
๋๋ถ๋ถ์ DBMS๋ ํ ํ
์ด๋ธ ์ค์บ ์คํ ์ ์ฌ๋ฌ ๊ฐ ๋ธ๋ก์ด๋ ํ์ด์ง ์ฝ์ด์ค๋ ๊ธฐ๋ฅ ๋ด์ฅํ๊ณ ์์
โฆ
ํ ์ธ๋ฑ์ค ์ค์บ
ํ๋ฃจ ์ ๋ฆฌ
TIL ์์ฑํ๊ธฐ
GDSC
js ๊ฐ์์๋ฃ ์ ์
PS
Do it 1์ผ์ฐจ
์์ฑ 8์ ํ์
CS ์คํฐ๋ ์ค๋น(์ฃผ์ : Replication), 10์ ์คํฐ๋
โข
์๊ฐ ๋ ๋ ๊นํ ๋ฆฌ๋๋ฏธ ํ ์์ ํ ๊ธ์ ๋ฃ์! ๋ฐฐ์ด ์ ์ ๋ํ ๋ด์ฉ์ ์ถ๊ฐํด์ฃผ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค. ๋จ, ์ค์ค ๋์ด๋์ง ๋ง๊ณ ๊น๋ํ๊ฒ ํต์ฌ๋ง
<details>
<summary>ํ ๊ธ ์ ๊ธฐ/ํผ์น๊ธฐ</summary>
<div markdown="1">์๋
</div>
</details>
JavaScript
๋ณต์ฌ