์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- react
- sw expert academy
- ์๋ฐ
- java
- SW
- ํ ์ฝํ ์ฝ
- maeil-mail
- programmers
- redux
- ํญํดํ๋ฌ์ค
- axios
- react-router
- JavaScript
- ์ด์ฝํ
- react-redux
- redux-saga
- ์ฝ๋ฉํ ์คํธํฉ๊ฒฉ์๋๊ธฐ
- Python
- useDispatch
- createSlice
- ๋งค์ผ๋ฉ์ผ
- ์๊ณ ๋ฆฌ์ฆ
- Get
- Algorithm
- ํญํด99
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฆฌ์กํธ
- C++
- redux-toolkit
- json-server
- Today
- Total
Binary Journey
[๋งค์ผ๋ฉ์ผ] DB Replication์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์. ๋ณธ๋ฌธ
[๋งค์ผ๋ฉ์ผ] DB Replication์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
binaryJournalist 2025. 1. 3. 14:41๐ก ๋งค์ผ๋ฉ์ผ์ ๊ธฐ์ ๋ฉด์ ๊ด๋ จ ์ง๋ฌธ์ ๋ฉ์ผ๋ก ๋งค์ผ ๋ณด๋ด์ฃผ๋ ๊ตฌ๋ ์๋น์ค์ ๋๋ค.
๐ก๋งค์ผ๋ฉ์ผ ์ฑ๋ฆฐ์ง๋ ์ ๊ฐ์ธ์ ์ธ ์ฑ๋ฆฐ์ง๋ก ๋งค์ผ๋ฉ์ผ์์ ๋ณด๋ด์ฃผ๋ ํ๋ฃจ์น ๋ฉ์ผ์ ๋ํ ๋ต๋ณ์ ๋ธ๋ก๊ทธ ํฌ์คํธ๋ก ์์ฑํฉ๋๋ค.
DB Replication์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
(2025.01.02)
DB Replication
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ ์ ์ฅํ๋ ๊ธฐ์ ์
๋๋ค. DB Replication
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์ค์ํ ๊ธฐ์ ๋ก, ๋๊ท๋ชจ ์์คํ
์์ ํนํ ์ ์ฉํ๊ฒ ํ์ฉ๋ฉ๋๋ค
๋ณดํต ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๊ตฌ์กฐ
๋ก, ํ๋์ ๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ ์ด์์ ์ฌ๋ ์ด๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฃผ๋ก ์ฐ๊ธฐ ์์ ์ ๋งก๊ณ ์ฌ๋ ์ด๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฝ๊ธฐ ์์ ์ ๋ด๋นํฉ๋๋ค.
๋ณต์ ๋ ์ฃผ๋ก ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฌ๋ ์ด๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณต์ ๋์ด ๋๊ธฐํ๋ฉ๋๋ค.
๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ์ ๊ธฐ๋ก๋์ด ์ฌ๋ ์ด๋ธ๋ก ์ ์ก๋ฉ๋๋ค.
์ด๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๋๋ก ํ๋ฉฐ, ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ๊ณผ ์ฑ๋ฅ, ์์ ์ฑ์ ๋์ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ธ๋ถ์ ์ผ๋ก ์ค๋ช ํ์๋ฉด
- ๋ถํ ๋ถ์ฐ
์ฝ๊ธฐ ์์ ์ ์ฌ๋ฌ ์ฌ๋ ์ด๋ธ ์๋ฒ๋ก ๋ถ์ฐ์์ผ ์ ์ฒด ์์คํ ์ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. - ๊ณ ๊ฐ์ฉ์ฑ
๋ง์คํฐ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋ ์ฌ๋ ์ด๋ธ ์๋ฒ๋ฅผ ํตํด ์๋น์ค๋ฅผ ๊ณ์ํ ์ ์์ต๋๋ค. - ๋ฐ์ดํฐ ๋ฐฑ์
์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ๋ฐฑ์ ์ญํ ์ ํฉ๋๋ค. - ํ์ฅ์ฑ
ํ์์ ๋ฐ๋ผ ์ฌ๋ ์ด๋ธ ์๋ฒ๋ฅผ ์ถ๊ฐํ์ฌ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
๋ค๋ง ์์คํ ์ค๊ณ์ ์ด์์ ๋ณต์ก์ฑ์ ์ฆ๊ฐ์ํฌ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ์ ํ์ฌํญ๊ณผ ๋ฌธ์ ๋ฅผ ๋๋ฐํ ์ ์์ด ์ฃผ์ํด์ผ ํฉ๋๋ค.
- ๋ณต์ก์ฑ ์ฆ๊ฐ
์ค์ ๊ณผ ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง ์ ์์ผ๋ฉฐ ์ฌ๋ฌ ๋ณต์ ๋ณธ์ ๋๊ธฐํํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค. - ๋น์ฉ ์ฆ๊ฐ
์ถ๊ฐ์ ์ธ ํ๋์จ์ด, ์ํํธ์จ์ด, ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ์ฌ ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. - ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์
๋ณต์ ์ง์ฐ์ผ๋ก ์ธํด ๋ณต์ ๋ณธ ๊ฐ์ ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์๊ณ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ถ๊ฐ์ ์ธ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค. - ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ์ฑ
์ฐ๊ธฐ ์์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ณต์ ๋ณธ์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํด์ผ ํ๋ฏ๋ก ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. - ๋คํธ์ํฌ ๋ถํ ์ฆ๊ฐ
๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํด ๋คํธ์ํฌ ํธ๋ํฝ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค
DB ๋ฆฌํ๋ฆฌ์ผ์ด์ ์ ๊ณ ๊ฐ์ฉ์ฑ, ์ฑ๋ฅ ํฅ์, ๋ฐ์ดํฐ ๋ณด์ ๊ฐํ ๋ฑ ๋ง์ ์ด์ ์ ์ ๊ณตํ์ง๋ง ๋ณต์ก์ฑ๊ณผ ๋น์ฉ ์ฆ๊ฐ, ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๊ด๋ฆฌ ๋ฑ์ ๊ณผ์ ๋ ํจ๊ป ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ชจ๋ฒ๋ต์
์ง๋ฌธ์ ๋ชฉ์
DB Replication์ ๋ํ ์ดํด๋ ์์คํ ์ํคํ ํธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์, ๊ฐ๋ฐ์๋ค์๊ฒ ์ค์ํ๋ฉฐ ํจ์จ์ ์ด๊ณ ์์ ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ตฌ์ถํ๊ณ ์ด์ํ๋ ๋ฐ ํฐ ๋์์ด ๋ฉ๋๋ค.
๊ฐ๋
Master(Primary)
DB๋ง์คํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ฃผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
๋๋ค.
๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
(INSERT, UPDATE, DELETE)์ ์ฃผ๋ก ์ฌ๊ธฐ์์ ์ํ๋ฉ๋๋ค.
Replica(Secondary, Slave) DB
์ฌ๋ ์ด๋ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, Master DB์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ๋ฐ์ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
Replica๋ Master์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋๊ธฐํํฉ๋๋ค.
Binary Log ์ ์ฅ ๋ฐฉ์
Binary log๋ Source ์๋ฒ์์ ์คํ๋ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๋ ์ญํ ์ ํฉ๋๋ค.
MySQL์ ๊ฒฝ์ฐ Binary log๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก Row, Statement, Mixed์ ์ธ ๊ฐ์ง ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
Row
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ ํ ๋ณ๋ก ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๊ธฐ๋ก
- ํน์ ํ ์์ ์ ๊ทธ ํ์ ์ด์ ์ํ์ ๋ณ๊ฒฝ๋ ์ํ ๋ชจ๋ ๊ธฐ๋ก
- ์ฅ์ : ๋์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ
- ๋จ์ : ๋ชจ๋ ํ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ Binary log ํ์ผ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๊ณ ์ ์ฅ ๊ณต๊ฐ์ ๋ถ๋ด์ ์ค ์ ์์
Statement
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ผ์ผํจ SQL ๋ฌธ์ ๊ธฐ๋ก
- ์ฅ์ : ๋ก๊ทธ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ์์ ์ ์ฅ ๊ณต๊ฐ ์ ์ฝ ๊ฐ๋ฅ
- ๋จ์ : ์คํ๋ง๋ค ๋ค๋ฅธ ๊ฐ ๋ฐํํ๋ ํจ์๋ ๋นํ์ ์ (non-deterministic) SQL ์ฟผ๋ฆฌ ์คํ ์ Master์ Replica์๋ฒ์์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์ ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ (์: NOW())
Mixed
- Row์ Statement ๋ฐฉ์ ์ ์ถฉ์
- ๋นํ์ ์ SQL์ธ ๊ฒฝ์ฐ Row ๋ฐฉ์, ์๋ ๊ฒฝ์ฐ Statement ๋ฐฉ์ ์ฌ์ฉ
- ์ฅ์ : ์ ์ฅ ๊ณต๊ฐ ์ ์ฝ ๋ฐ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง ๊ฐ๋ฅ
- ๋จ์ : ๊ตฌํ์ด ๋ค์ ๋ณต์กํจ
๋ณต์ ๊ณผ์
- Master ์๋ฒ์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฟผ๋ฆฌ ์คํ
- ๋ก๊ทธ ์ ์ฅ ๋ฐฉ์์ ๋ฐ๋ผ Binary log ๊ธฐ๋ก
- Replica ์๋ฒ์ IO Thread๊ฐ Binary log๋ฅผ ์ฝ์ด์ Replica ์๋ฒ์ Relay log๋ก ์ ์ก
- Relay log๋ Replica ์๋ฒ์์ Source ์๋ฒ์ Binary log๋ฅผ ์์ ์ ์ฅํฉ๋๋ค.
- ์ ์ฅ๋ ๋ก๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Replica ์๋ฒ์ SQL ์ค๋ ๋๊ฐ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ ์ฌํญ ์ ์ฉ
- ์ฝ 100๋ฐ๋ฆฌ์ด ์ด๋ด ๋ฐ์ดํฐ ๋๊ธฐํ ์๋ฃ
DB Replication์ ์ฅ์
- ๊ณ ๊ฐ์ฉ์ฑ(High Availability)
- ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ Master ๋์ Slave ๋ฅผ ์ฌ์ฉํ ์ ์์ด ๋ค์ดํ์์ ์ค์ผ ์ ์์ต๋๋ค.
- ๋ถํ ๋ถ์ฐ(Load Balancing)
- ์ฝ๊ธฐ ์์ฒญ(SELECT)์ Slave๋ก ๋ถ์ฐํ์ฌ Master์ ๋ถํ๋ฅผ ์ค์ ๋๋ค.
- ๋ฐฑ์
๋ฐ ๋ณต๊ตฌ ์ฉ์ด์ฑ
- Slave๋ฅผ ๋ฐฑ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์ง์ญํ(Localization)
- ์ฌ๋ฌ ์ง์ญ์ ๊ฑธ์ณ Slave๋ฅผ ๋ฐฐ์นํ์ฌ ๋ฐ์ดํฐ ์ ๊ทผ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
DB Replication์ ์ ํ
- Synchronous Replication
- Master์ Slave ์ฌ์ด์ ๋ฐ์ดํฐ ๋๊ธฐํ๊ฐ ์ค์๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- ๋ฐ์ดํฐ๊ฐ Master์ ์ปค๋ฐ๋๊ธฐ ์ ์ ๋ชจ๋ Slave์ ๋ฐ์ดํฐ๊ฐ ์ ์ฉ๋์ด์ผ ํฉ๋๋ค.
- ์ฅ์ : ๋์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ
- ๋จ์ : ๋คํธ์ํฌ ์ง์ฐ์ด๋ ์ฅ์ ๋ก ์ธํด ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ
- Asynchronous Replication:
- Master์์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์ด๋ฃจ์ด์ง ํ ์ผ์ ์๊ฐ ์ดํ์ Slave๋ก ๋ฐ์ดํฐ๊ฐ ๋ณต์ ๋ฉ๋๋ค.
- ์ฅ์ : ์ฑ๋ฅ์ ์ํฅ์ ๋ ๋ฏธ์นจ
- ๋จ์ : ๋ฐ์ดํฐ ๋๊ธฐํ ์ง์ฐ์ผ๋ก ์ธํด Slave์ ์ต์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์๋์ง ์์ ์ ์์
- Semi-Synchronous Replication:
- Master์์ ๋ฐ์ดํฐ ์ปค๋ฐ ์ ์ต์ํ ํ๋์ Slave๊ฐ ๋ณ๊ฒฝ ๋ด์ฉ์ ์์ ํ ๋๊น์ง ๋๊ธฐํฉ๋๋ค.
- Synchronous์ Asynchronous ๋ฐฉ์์ ์ ์ถฉ
DB Replication ์ฌ์ฉ ์ฌ๋ก
- ์ฝ๊ธฐ ํธ๋ํฝ ๋ถ์ฐ
- ๋๊ท๋ชจ ์ฝ๊ธฐ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ Slave๋ฅผ ์ค์
- ์ฅ์ ๋ณต๊ตฌ
- Master DB๊ฐ ๋ค์ด๋์์ ๋ Slave๋ฅผ ์ด์ฉํ ๋น ๋ฅธ ๋ณต๊ตฌ
- ๋ฐ์ดํฐ ๋ถ์
- Slave๋ฅผ ๋ถ์์ฉ์ผ๋ก ์ฌ์ฉํด Master DB์ ์ํฅ์ ๋ฏธ์น์ง ์์
- ๋ฐ์ดํฐ ์ด๋ ๋ฐ ๋ณต์
- ์์คํ ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ํด ์ฌ์ฉ
๊ตฌํ ์์
MySQL
- MySQL์ Replication์ Master-Slave ๊ตฌ์กฐ๋ฅผ ์ง์ํฉ๋๋ค.
CHANGE MASTER TO
๋ช ๋ น์ ์ฌ์ฉํ์ฌ Master์ Slave๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
PostgreSQL
- PostgreSQL์
Streaming Replication
์WAL(Write Ahead Log)
์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํฉ๋๋ค.WAL(Write Ahead Log)
๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ ์ ๋จผ์ ๋ก๊ทธ์ ๊ธฐ๋กํ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค.- ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ์ฌํญ์ ๋จผ์
WAL
์ ๊ธฐ๋ก๋ฉ๋๋ค.
MongoDB
- MongoDB๋ ๊ธฐ๋ณธ์ ์ผ๋ก Replication์ ์ง์ํ๋ฉฐ
Replica Set
์ ์ฌ์ฉํฉ๋๋ค.Replica Set
์ ๋์ผํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ์งํ๋ ์ฌ๋ฌ mongod ํ๋ก์ธ์ค์ ๊ทธ๋ฃน์ ๋๋ค.
Oracle
- Oracle์
Data Guard
๋ Synchronous์ Asynchronous ๋ณต์ ๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค.Oracle Data Guard
๋ Oracle Database์ ๊ณ ๊ฐ์ฉ์ฑ, ๋ฐ์ดํฐ ๋ณดํธ ๋ฐ ์ฌํด ๋ณต๊ตฌ๋ฅผ ์ํ ํฌ๊ด์ ์ธ ์๋ฃจ์ ์ ๋๋ค.