โ ๋ฐํ ์์
https://www.youtube.com/watch?v=t96l6ry_qmw
โ๏ธ ๋ฐํ ๋ด์ฉ

MMM
HA ์คํ์์ค ์๋ฃจ์ ์ด๋ฆ
ํ ์ค์ Live MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค HA ์๋ฃจ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์์
Google์์ ๊ฐ๋ฐ๋ ์๋ฃจ์
๋ฒ์ ์ ๋ฐ์ดํธ๋ ์ค์ง๋์ด์, ํ์ ์ ์์ฒด ์ ๋ฐ์ดํธ๋ฅผ ํ๋ฉด์ ์ฌ์ฉ ์ค

๊ธฐ๋ณธ ๊ตฌ์ฑ๋
MASTER-MASTER 01, 02๋ ธ๋๋ง MMM์ด ๊ด๋ฆฌํ๋๋ก ๊ตฌ์ฑ
03๋ฒ SLAVE๋ MMM์ด ๊ด๋ฆฌํ๋๋ก ํฌํจ์ํฌ ์ ์์ง๋ง, ์ ๊ท MASTER๋ก failover ํ๋ ๊ณผ์ ์์ ๋์๋์ง ์๋ ์ผ์ด์ค๊ฐ ์์ด์
์ด ๊ตฌ์ฑ์ ์ฌ์ฉํ์ง ์์

1. ๋ฐ๋ชฌ 2๊ฐ : Monitoring, Agent

2. ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ failover๋ฅผ ์ํด ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฌ๋ผ๊ฐ๋ ์๋น์ค IP

- Monitoring ๋ฐ๋ชฌ
- ๋ณ๋์ ํธ์คํธ์์ ๋ชจ๋ ๋ชจ๋ํฐ๋ง ๋ฐ ์์ฌ ๊ฒฐ์ ๊ณผ ๋ช ๋ น ์ํ
- Agent ๋ฐ๋ชฌ
- ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ ์คํ๋จ
- Monitoring ๋ฐ๋ชฌ์์ ๋ด๋ ค์จ ๋ช ๋ น ์ํ

Service IP
MMM์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค Role ๋ณ๊ฒฝ์ ๋ฐ๋ผ ์ด๋์์ผ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ failover๊ฐ ์ด๋ฃจ์ด์ง๊ฒ ํจ

mond๊ฐ ํ๋ ์ฃผ์ ๋ชจ๋ํฐ๋ง ํญ๋ชฉ
- ping - ํธ์คํธ ์์ฒด๊ฐ ์ด์์๋์ง
- mysql - MySQL ์ธ์คํด์ค๊ฐ ์ด์์๋์ง
- rep_threads - ๋ณต์ ์ค๋ ๋๊ฐ ์ ์ ์๋ ์ค์ธ์ง
- rep_backlog - ๋ณต์ ์ค๋ ๋์ ์ง์ฐ์ด ์ ํด์ง threshold๋ฅผ ๋์ด์ฐ๋์ง ํ์ธ
์ด ๋ชจ๋ํฐ๋ง ํญ๋ชฉ์์ ์ด์์ด ์์ ์, MMM์ด standby MASTER๋ก failover ์งํ

DR ์ฒ์ ๊ตฌ์ฑํ์ ๋ ๋ชจ์ต
active : DATA-CENTER1
standby : DATA-CENTER2
๋จ๋ฐฉํฅ ๋ณต์ ๊ตฌ์ฑ : DATA-CENTER ๊ฐ, standby DATA-CENTER ๋ด์ local MASTER ๊ฐ
-> IDC failover ์ Role ์ ํ ์์ ํ์..

BEFORE
์ ๊ท active DATA-CENTER์ MySQL ์๋ฒ๋ฅผ MASTER-MASTER ๊ตฌ์ฑ์ผ๋ก ์ ํํด์ผ ํจ
DATA-CENTER ๊ฐ MySQL ์๋ฒ์ MASTER-SLAVE ๊ด๊ณ๋ ์ ํํด์ฃผ์ด์ผ ํจ
์ ๊ท standby DATA-CENTER์ MySQL ์๋ฒ๋ MASTER-SLAVE ๋จ๋ฐฉํฅ์ผ๋ก ์ ํํด์ผ ํจ
-> ์ด๋ ค์ด ์์ ์ ์๋์ง๋ง ๋ฒ๊ฑฐ๋กญ๊ณ ๋ถ๋ด์ค๋ฌ์ด ์์ ๋ค -> ๊ฐ์ ํ์!
์ ํํ๊ฒ ๋ ๋ฐฐ๊ฒฝ
DR์ผํฐ์ ๋ณธ ๋ชฉ์
์ฌ๋ ์ ๋น์ฆ๋์ค ์ฐ์์ฑ ๋ณด์ฅ์ด๋ฏ๋ก
๋ฐ์ดํฐ ์ผํฐ failover๋ฅผ ํ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์ ๋ฐ์ํ์ง ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ์ง๋ง
ํ ์ค์ ๊ฐํธ๊ฒฐ์ ํํธ๋์ฌ ์ฆ๊ฐ -> ๋ฌด์ค๋จ ์ด์์ ํ์์ฑ ์ฆ๊ฐ
์ด๋ฐ ์ํฉ์์ ๋๊ท๋ชจ ๋คํธ์ํฌ ์์ ..
-> ๋ฌด์ค๋จ ๋ฐ์ดํฐ ์ผํฐ ๋กค๋ง ์์ ์ผ๋ก ๊ณํ์ด ๋จ
-> ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ ๋ฐ์ดํฐ ์ผํฐ failover๊ฐ ํ์ํด์ง
-> ์งํํ๋ค ๋ณด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค Role ์ ํ ์์ ์ ๋ํ ๋ถ๋ด ์ฆ๊ฐ + ์ค์๋ก ๋ณต์ ๊ฐ ๊นจ์ง๋ ๊ฒฝ์ฐ๋ ๋ฐ์ + ๋ค์ดํ์ ํ์ + ์ํ๋ถ๋ด ํฐ ์์ ๋ ๋ฐ์
-> ๋ฐ์ดํฐ ์ผํฐ ์ ํ ๊ณผ์ ์ ์ต๋ํ ๊ฐ์ํ์ํฌ ํ์๊ฐ ์๊น

WISH
1. ์์ชฝ ๋ฐ์ดํฐ์ผํฐ -> ๋์นญ ๊ตฌ์กฐ
2. ๋ฐ์ดํฐ์ผํฐ failover ์, ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ์ปค๋ฅ์ ๋ง ์ด๋ํ๊ณ
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ๋ฒจ์์๋ ๋ฐ๋ก ์์ ํ ๊ฒ์ด ์๋ ๊ตฌ์กฐ
MASTER-MASTER ์๋ฐฉํฅ์ผ๋ก ๋ฐ๋ ๋ถ๋ถ
1. ๊ธฐ์กด์ ๋จ๋ฐฉํฅ์ผ๋ก ์๋ DR ๋ณต์ ์ฑ๋
2. DR ์ผํฐ ๋ด์ MASTER-SLAVE ๋ณต์ฌ ์ฑ๋

but,, ๋ ๊ฐ์ง ์ด์ ๋ฐ์
1. binlog ์ค๋ณต ์ ์ก ์ด์
01, 02๋ฒ -> log_slave_update ์ต์ ์ ์ผ๊ณ ์ด์
sql_thread๊ฐ ์ ์ฉํ ํธ๋์ญ์ ๋ binlog์ ๊ธฐ๋กํ๋ ์ต์

1. actvie ๋ฐ์ดํฐ์ผํฐ 01๋ฒ์์ ๋ฐ์ํ ํธ๋์ญ์ ์ binlog ์์ฑ
2. DR ์ฑ๋์ ๋ฐ๋ผ standby ๋ฐ์ดํฐ์ผํฐ 01๋ฒ์ผ๋ก ์ ์ก ๋ฐ ์ ์ฉ๋จ
3. ์ ์ฉ ์ดํ, standby ๋ฐ์ดํฐ์ผํฐ 01๋ฒ ์๋ฒ -> ์ด ํธ๋์ญ์ ์ ๋ํ binlog ์์ฑ

4. ์ด๋ 01๋ฒ์ slave๋ก ์๋ 02, 03๋ฒ -> ์ด binlog๋ฅผ ๋ณต์ ํ๊ณ ์ ์ฉํ๊ฒ ๋จ
๋จ๋ฐฉํฅ ๊ตฌ์ฑ ์ binlog ๋ณต์ ํ๋ฆ๊ณผ ๋์ผํจ

5. ๊ทธ๋ฐ๋ฐ 02๋ฒ์์ ์ต์ข ์ ์ฉํ binlog๊ฐ ์์ฒด binlog๋ก ์์ฑ์ด ๋๊ณ ,
6. 01๋ฒ์ 02๋ฒ์ master๋ฉด์ slave์ด๊ธฐ ๋๋ฌธ์, ์ด binlog๋ฅผ ๋ณต์ ํด์ผ ํ๋์ง ํ๋จํจ
์ด ํ๋จ -> ํด๋น binlog๊ฐ ์ฒ์ ์์ฑ๋ ์๋ฒ์ server-id์ ์์ ์ server-id๊ฐ ๋ค๋ฅธ์ง ๋น๊ตํด์ ์ด๋ฃจ์ด์ง
๋ค๋ฅผ ๊ฒฝ์ฐ ๋ณต์ ์งํ
์ด binlog๋ ๋ฐ์ดํฐ์ผํฐ1์์ ์ฒ์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ server-id 101์ ๊ณ์ ์ ์งํ๊ณ ์๋ ์ํฉ
server-id 1001์ธ 01๋ฒ์ผ๋ก ๋ค์ ๋ณต์ ๊ฐ ๋์ด๋ฒ๋ฆผ

์ฌ๊ธฐ์ ์ ์ฉ์ด ๋๋ฉด ๋ค์ ๋ 03, 02๋ฒ์ผ๋ก ๋ณต์ ๋๋ ์ํฉ์ด ์๊ธธ ์ ์์..
์ค์ ๊ฐ ๋ณ๊ฒฝ์ด ์์๋ค๋ฉด binlog๊ฐ ์์ฑ๋์ง ์๋๋ฐ,
๋์ผ binlog๊ฐ ์ ์ฉ๋ ์ง 1์ด๋ ์ง๋์ง ์์ ์ํฉ์ด๊ธฐ ๋๋ฌธ์
4๋ฒ์ ์ํฉ๊น์ง ๋์ฌ ํ๋ฅ ์ ์ ์ง๋ง
์ด๋ก ์ ์ผ๋ก๋ ๋ฌดํ ๋ฃจํ๊ฐ ๊ฐ๋ฅํด์ ธ๋ฒ๋ฆผ

2. MMM์ด ๋ณต์ ์ฑ๋์ ๊ตฌ๋ถํ์ง ๋ชปํ๋ ์ด์
๊ฐ ๋ฐ์ดํฐ์ผํฐ์ 01๋ฒ ์๋ฒ๋ DR ์๋ฐฉํฅ ๋ณต์ ์ฑ๋์ด ์ถ๊ฐ๋จ์ผ๋ก ์ธํด์
DR ๋ณต์ ์ฑ๋๊ณผ local master-master ๋ณต์ ์ฑ๋์ด ๋์์ ์์ฑ๋ ๋ฉํฐ์์ค๋ณต์ ์ํ๊ฐ ๋จ
์ด ๊ฒฝ์ฐ MMM์ ์์ ์ด ๋ชจ๋ํฐ๋ง ํด์ผ ํ ์ฑ๋์ด ์ด๋ค ์ฑ๋์ธ์ง ์์ง ๋ชปํ๊ฒ ๋จ

1. binlog ๋ฌดํ ๋ฃจํ
๋ฐฉ๋ฒ 1) Gtid๋ก ์ค๋ณต ์ ์ฉ ๋ง๊ธฐ
but,, ๋น์ ๋ฐ๋ก Gtid ์ ํ์ ์ด๋ ค์ด ์ํฉ
Gtid๋ก ๊ฐ๋๋ผ๋ binlog์ ์ ์ก ๋ฃจํ (No I0 Thread skip)์ ๋ฐ์ํ๊ฒ ๋๊ณ
๋ค์ binlog position ๋ฐฉ์์ผ๋ก ์ ํ ์ ์ด์๊ฐ ๋๊ธฐ ๋๋ฌธ์.. ์ค๋ณต ์ ์ก ์์ฒด๋ฅผ ๋ง์ ๋ฐฉ๋ฒ์ด ํ์
๋ฐฉ๋ฒ 2) binlog filter ๊ฑธ๊ธฐ
2. ์ด๋ค ์ฑ๋?
MMM์ด MM ์ฑ๋์ ๋ํด์๋ง ๋ชจ๋ํฐ๋ง์ ํ๋๋ก ์์ค๋ฅผ ์์

ํ์ฌ DR ๊ตฌ์ฑ ๋ชจ์ต























