์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

๋”ฐ๋ผํ•˜๋ฉฐ ๋ฐฐ์šฐ๋Š” MySQL on Docker

๊ธธ๊ณ  ์ง€๋ฃจํ•œ ์ด๋ก  ๋Œ€์‹  ์งง์€ ์‹ค์Šต์„ ํ†ตํ•ด์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๊ณ  ํ•˜๋‚˜์”ฉ ์‚ด์„ ๋ถ™์ด๋‹ค ๋ณด๋ฉด ์–ด๋А์ƒˆ ์ „๋ฐ˜์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ์„ ๊ฒฝํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฐ๋ธŒ์˜ต์Šค ยท ์ธํ”„๋ผ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ๊นŠ๊ฒŒ ์•Œ์ง€ ๋ชปํ•ด๋„ ํ•˜๋‚˜์”ฉ ๋”ฐ๋ผํ•˜๋‹ค๋ณด๋ฉด ์‹ค์Šต์„ ํ†ตํ•ด ํ•˜๋‚˜์”ฉ ์ดํ•ดํ•˜๊ณ  ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Docker ํ™˜๊ฒฝ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ–ผ

  • MySQL ์„ค์น˜

  • Replication ๊ตฌ์„ฑ(๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ๊ตฌ์„ฑ)

  • Orchestrator๋ฅผ ์ด์šฉํ•œ HA(High Availability) ๊ตฌ์„ฑ

  • ProxySQL์„ ์ด์šฉํ•œ Proxy Layer๊ตฌ์„ฑ

  • Prometheus๋ฅผ ํ†ตํ•œ MySQL ๋ชจ๋‹ˆํ„ฐ๋ง ํ™˜๊ฒฝ ๊ตฌ์„ฑ

  • Docker Compose๋ฅผ ํ†ตํ•œ ์ผ๊ด„ ๋ฐฐํฌ

  • Docker Swarm๋ฅผ ํ†ตํ•œ ํ™•์žฅ์„ฑ(Scalability) ๊ตฌ์„ฑ

  • ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ

๋„์ปค ํ™˜๊ฒฝ์„ ์œ„ํ•œ MySQL ํ™œ์šฉ ํŠœํ† ๋ฆฌ์–ผ,
ํ•˜๋‚˜์”ฉ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋ฉฐ ๋‚ด ์†์œผ๋กœ ์ตํ˜€๋ณด์„ธ์š”.

์ฃผ์ œ ์†Œ๊ฐœ ๐Ÿ“

Docker ํ™˜๊ฒฝ์—์„œ MySQL์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?
๊ตฌ๊ธ€๋ง์„ ํ•ด๋ด๋„ MySQL Docker Image๋ฅผ ์ด์šฉํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  DB์— ์ ‘์†ํ•ด ๋ณด๋Š” ์˜ˆ์ œ๋“ค์ด
๋Œ€๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋งŒ ์•Œ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ์š”?
์ผ๋ฐ˜์ ์ธ ํ™˜๊ฒฝ๊ณผ ๋‹ฌ๋ฆฌ Docker ํ™˜๊ฒฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŠน๋ณ„ํžˆ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋“ค์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?
๋ณดํ†ต ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ• ๋•Œ๋Š” Master-Slave ๊ตฌ์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ Docker ํ™˜๊ฒฝ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ• ๊นŒ์š”?
Master ์žฅ์•  ์‹œ์—๋„ ์ž๋™์œผ๋กœ Failover๊ฐ€ ๋˜์„œ ์„œ๋น„์Šค๊ฐ€ ์ง€์†๋˜๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ• ๊นŒ์š”?
๋ฐฑ์—…์ด๋‚˜ ๋ณต๊ตฌ, ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ฐ™์€ ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ์š”?

๋ณธ ๊ฐ•์˜์—์„œ ์ด๋Ÿฐ ๊ณ ๋ฏผ๋“ค์„ ์ฑ„์›Œ๋“œ๋ฆด ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.


์ด ๊ฐ•์˜์—์„œ ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋“ค โœ๏ธ

1. Docker ํ™˜๊ฒฝ์—์„œ MySQL Container ์‹คํ–‰

2. Docker ํ™˜๊ฒฝ์—์„œ MySQL Master-Replication(๋ณต์ œ) ๊ตฌ์„ฑ

3. Orchestrator(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ)๋ฅผ ์ด์šฉํ•œ MySQL Auto Failover ๊ตฌ์„ฑ

4. ProxySQL(ํ”„๋ฝ์‹œSQL)์„ ํ†ตํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ์˜ Auto Failover ๊ตฌ์„ฑ

5. Prometheus(ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค)์™€ Grafana(๊ทธ๋ผํŒŒ๋‚˜)๋ฅผ ์ด์šฉํ•œ MySQL ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์„ฑ

6. Docker compose๋ฅผ ์ด์šฉํ•œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์˜ ์ผ๊ด„ ๋ฐฐํฌ
7. Docker Swarm์„ ํ†ตํ•œ ์„œ๋น„์Šค ํ™•์žฅ


๊ฐ•์˜ ํŠน์ง• ๐Ÿ’ก 

์ƒ์„ธํ•œ ์ด๋ก ๋ณด๋‹ค๋Š” ์งง์€ command ๋‹จ์œ„์˜ ์‹ค์Šต์„ ํ†ตํ•ด์„œ ํ•˜๋‚˜์”ฉ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์—ฌ๊ธฐ์„œ ๋‹ค๋ฃจ๋Š” ํˆด ๐Ÿงฐ 

  • AWS EC2
  • Docker
  • Percona MySQL 5.7
  • Orchestrator
  • ProxySQL
  • Prometheus
  • Grafana

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Docker ํ™˜๊ฒฝ์—์„œ์˜ MySQL ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • MySQL ๊ด€๋ จ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ™œ์šฉ ์‚ฌ๋ก€๋ฅผ ์ตํžˆ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • ์งง์€ ์‹œ๊ฐ„์— ์‹ค์Šต์„ ํ†ตํ•ด ๋งŽ์€ ์ฒดํ—˜์„ ํ•ด๋ณด๊ณ  ์‹ถ์œผ์‹  ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • MySQL ๊ธฐ๋ณธ

  • AWS EC2

์•ˆ๋…•ํ•˜์„ธ์š”
๊น€์˜ํ—Œ์ž…๋‹ˆ๋‹ค.

545

๋ช…

์ˆ˜๊ฐ•์ƒ

47

๊ฐœ

์ˆ˜๊ฐ•ํ‰

72

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

1

๊ฐœ

๊ฐ•์˜

LG CNS์™€ NBP(Naver Business Platform), ๋ผ์ด์—‡๊ฒŒ์ž„์ฆˆ๋ฅผ ๊ฑฐ์ณ ํ˜„์žฌ๋Š” ํ˜„๋Œ€์ž๋™์ฐจ์—์„œ ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ๋ ฅ 23๋…„์ฐจ DBA ์ž…๋‹ˆ๋‹ค.

Oracle๊ณผ Cubrid, MySQL, ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ๊ฒฝ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

23๊ฐœ โˆ™ (3์‹œ๊ฐ„ 6๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!