Docs Menu
Docs Home
/
MongoDB ๋งค๋‰ด์–ผ
/ / /

ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท ์œผ๋กœ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์„œ๋ฒ„ ๋ฐฑ์—… ๋ฐ ๋ณต์›

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • ์Šค๋ƒ…์ƒท ๊ฐœ์š”
  • ๊ณ ๋ ค ์‚ฌํ•ญ
  • Linux์—์„œ LVM์„ ์‚ฌ์šฉํ•œ ๋ฐฑ์—… ๋ฐ ๋ณต์›
  • ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณ„๋„์˜ ๋ณผ๋ฅจ์— ์ €๋„ ํŒŒ์ผ๋กœ ๋ฐฑ์—… ํ˜น์€ ์ €๋„๋ง ์—†์ด ์ธ์Šคํ„ด์Šค ๋ฐฑ์—…

์ด ๋ฌธ์„œ ์—์„œ๋Š” LVM ๋˜๋Š” ์ €์žฅ ์–ดํ”Œ๋ผ์ด์–ธ์Šค์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MongoDB ๋…๋ฆฝํ˜• ์„œ๋ฒ„ ๋ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ฐฑ์—…์„ ๋งŒ๋“œ๋Š” ์ ˆ์ฐจ์™€ ํ•ด๋‹น ๋ณต์› ์ „๋žต์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ž์ฒด ๊ด€๋ฆฌํ˜• ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์Šค๋ƒ…์ƒท ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด๋Ÿฌํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท ๋˜๋Š” '๋ธ”๋ก ์ˆ˜์ค€' ๋ฐฑ์—… ๋ฐฉ๋ฒ•์€ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MongoDB์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ๋ณด๊ด€ํ•˜๋Š” ์žฅ์น˜์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ, MongoDB ์™ธ๋ถ€์—์„œ ์ถ”๊ฐ€ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํŒ

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์Šค๋ƒ…์ƒท์€ ๋ผ์ด๋ธŒ ๋ฐ์ดํ„ฐ์™€ ํŠน์ˆ˜ ์Šค๋ƒ…์ƒท ๋ณผ๋ฅจ ์‚ฌ์ด์— ํฌ์ธํ„ฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํฌ์ธํ„ฐ๋Š” ์ด๋ก ์ ์œผ๋กœ 'ํ•˜๋“œ ๋งํฌ'์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘์—… ๋ฐ์ดํ„ฐ๊ฐ€ ์Šค๋ƒ…์ƒท์—์„œ ๋ถ„๋ฆฌ๋˜๋ฉด ์Šค๋ƒ…์ƒท ํ”„๋กœ์„ธ์Šค์—์„œ๋Š” ์“ฐ๊ธฐ ์ค‘ ๋ณต์‚ฌ ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Šค๋ƒ…์ƒท์€ ์ˆ˜์ •๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท์„ ๋งŒ๋“  ํ›„ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์Šค๋ƒ…์ƒท ์ด๋ฏธ์ง€๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ  ์Šค๋ƒ…์ƒท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ๋ฐฑ์—…์—๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์ „์ฒด ๋ณต์‚ฌ๋ณธ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

MongoDB ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ ์ €๋„ ํŒŒ์ผ์ด ๋ณ„๋„์˜ ๋ณผ๋ฅจ์— ์žˆ๋Š” ๊ฒฝ์šฐ MongoDB๋Š” WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณผ๋ฅจ ์ˆ˜์ค€ ๋ฐฑ์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐฑ์—…์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค ์ค‘์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž ๊ทธ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์“ฐ๊ธฐ๋ฅผ ์ผ์‹œ ์ค‘๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2} ์•”ํ˜ธํ™” ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•”ํ˜ธํ™”๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ AES256-GCM AES256-GCM ๊ฒฝ์šฐ ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ‚ค์™€ ํ•จ๊ป˜ ๊ณ ์œ ํ•œ ์นด์šดํ„ฐ ๋ธ”๋ก ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

2} ์•”ํ˜ธ๋กœ ๊ตฌ์„ฑ๋œ ์•”ํ˜ธํ™”๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฒฝ์šฐ: AES256-GCM

  • ํ•ซ ๋ฐฑ์—…์—์„œ ๋ณต์›
    4.2๋ถ€ํ„ฐ "hot" ๋ฐฑ์—…์„ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ ํŒŒ์ผ์—์„œ ๋ณต์›ํ•˜๋Š” ๊ฒฝ์šฐ(์ฆ‰, mongod๊ฐ€ ์‹คํ–‰ ์ค‘์ผ ๋•Œ), MongoDB๋Š” ์‹œ์ž‘ ์‹œ "๋”ํ‹ฐ" ํ‚ค๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ๋กค์˜ค๋ฒ„ํ•˜์—ฌ IV(์ดˆ๊ธฐํ™” ๋ฒกํ„ฐ) ์žฌ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝœ๋“œ ๋ฐฑ์—…์—์„œ ๋ณต์›

    ๊ทธ๋Ÿฌ๋‚˜ "cold" ๋ฐฑ์—…์„ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ ํŒŒ์ผ์—์„œ ๋ณต์›ํ•˜๋Š” ๊ฒฝ์šฐ(์ฆ‰, mongod๊ฐ€ ์‹คํ–‰ ์ค‘์ด ์•„๋‹Œ ๊ฒฝ์šฐ), MongoDB๋Š” ์‹œ์ž‘ ์‹œ "๋”ํ‹ฐ" ํ‚ค๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, IV๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ฐ€์„ฑ ๋ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์ฆ์ด ๋ฌดํšจํ™”๋ฉ๋‹ˆ๋‹ค.

    4.2๋ถ€ํ„ฐ ์ฝœ๋“œ ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท์—์„œ ๋ณต์›ํ•œ ํ›„ ํ‚ค ์žฌ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด MongoDB๋Š” ์ƒˆ๋กœ์šด ๋ช…๋ น์ค„ ์˜ต์…˜ --eseDatabaseKeyRollover๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. --eseDatabaseKeyRollover ์˜ต์…˜์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด mongod ์ธ์Šคํ„ด์Šค๋Š” AES256-GCM ์•”ํ˜ธ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ‚ค๋ฅผ ๋กค์˜ค๋ฒ„ํ•˜๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท์ด ์‹คํ–‰๋  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์œ ํšจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋ชจ๋“  ์“ฐ๊ธฐ๊ฐ€ ๋””์Šคํฌ(์ €๋„ ๋˜๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ)์— ์™„์ „ํžˆ ๊ธฐ๋ก๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—…์ด ์ˆ˜ํ–‰๋  ๋•Œ ๋””์Šคํฌ์— ์—†๋Š” ์“ฐ๊ธฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฐฑ์—…์— ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์€ ๋งˆ์ง€๋ง‰ ์ฒดํฌํฌ์ธํŠธ ์‹œ์ ์˜ ์ผ๊ด€์ ์ธ ์ƒํƒœ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฒดํฌํฌ์ธํŠธ๋Š” ๋ฐ์ดํ„ฐ 2GB๋งˆ๋‹ค ๋˜๋Š” 1๋ถ„๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท์€ ์ „์ฒด ๋””์Šคํฌ ์ด๋ฏธ์ง€์˜ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์‹œ์Šคํ…œ์„ ๋ฐฑ์—…ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์€ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ ๋””์Šคํฌ์— MongoDB ๋ฐ์ดํ„ฐ ํŒŒ์ผ, ์ €๋„(ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ) ๋ฐ ๊ตฌ์„ฑ์„ ๊ฒฉ๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

๋˜๋Š” ๋ชจ๋“  MongoDB ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์ „์šฉ ๊ธฐ๊ธฐ์— ์ €์žฅํ•˜์—ฌ ๊ด€๋ จ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์—†์ด ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท์—์„œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์ดํŠธ ์žฅ์• ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ๋ถ„ ๋ฐฑ์—… ์ ˆ์ฐจ๋Š” ์ด ํŠœํ† ๋ฆฌ์–ผ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šค๋ƒ…์ƒท ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ์ด ๋‹ค๋ฅด์ง€๋งŒ, ์•„๋ž˜์— ์„ค๋ช…๋œ LVM ๋ฐฉ๋ฒ•์€ ์ฆ๋ถ„ ๋ฐฑ์—…์„ ์บก์ฒ˜ํ•˜๋Š” ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

mongod ์ธ์Šคํ„ด์Šค์—์„œ ์ €๋„๋ง์„ ํ™œ์„ฑํ™”ํ–ˆ๋‹ค๋ฉด ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋˜๋Š” ๋ณผ๋ฅจ/๋ธ”๋ก ์ˆ˜์ค€ ์Šค๋ƒ…์ƒท ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—…์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ์ž์ฒด ์ธํ”„๋ผ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ, ์‹œ์Šคํ…œ์„ LVM์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋””์Šคํฌ ํŒจํ‚ค์ง€์™€ ์Šค๋ƒ…์ƒท ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋„๋ก ์„ค์ •ํ•˜์„ธ์š”. ๋˜ํ•œ ํด๋ผ์šฐ๋“œ/๊ฐ€์ƒํ™” ํ™˜๊ฒฝ ๋‚ด์—์„œ LVM ๊ธฐ๋ฐ˜ ์„ค์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

LVM์„ ์‹คํ–‰ํ•˜๋ฉด ์ถ”๊ฐ€์ ์ธ ์œ ์—ฐ์„ฑ์ด ์ œ๊ณต๋˜๋ฉฐ ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉํ•˜์—ฌ MongoDB๋ฅผ ๋ฐฑ์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ๊ฐ€ ์ธ์Šคํ„ด์Šค ๋‚ด์— RAID๊ฐ€ ๊ตฌ์„ฑ๋œ Amazon์˜ EBS(Elastic Block Storage)์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ, ํ”Œ๋žซํผ์˜ ์Šค๋ƒ…์ƒท ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋””์Šคํฌ์—์„œ ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์–ป๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์•ˆ์œผ๋กœ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋””์Šคํฌ์— ๋Œ€ํ•œ ๋ชจ๋“  ์“ฐ๊ธฐ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ  ์“ฐ๊ธฐ ์ž ๊ธˆ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค ๋™์•ˆ ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์˜ต์…˜์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ„๋„์˜ ๋ณผ๋ฅจ์— ์ €๋„ ํŒŒ์ผ๋กœ ์ธ์Šคํ„ด์Šค ๋ฐฑ์—… ํ˜น์€ ์ €๋„๋ง ์—†์ด ์ธ์Šคํ„ด์Šค ๋ฐฑ์—… ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • ์‹œ์Šคํ…œ ๋‚ด RAID ์œ„์— MongoDB ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ณ  ๋ณด๊ด€ํ•˜๋„๋ก LVM์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์˜ต์…˜์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ ์Šค๋ƒ…์ƒท ๋งŒ๋“ค๊ธฐ์— ์„ค๋ช…๋œ LVM ๋ฐฑ์—… ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

์ด ์„น์…˜์—์„œ๋Š” Linux ์‹œ์Šคํ…œ์—์„œ LVM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๊ฐœ์š”๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋„๊ตฌ, ๋ช…๋ น ๋ฐ ๊ฒฝ๋กœ๋Š” ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ (์•ฝ๊ฐ„) ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฐฑ์—… ์ž‘์—…์— ๋Œ€ํ•œ ๋†’์€ ์ˆ˜์ค€์˜ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‹ค์Œ ์ ˆ์ฐจ๋Š” ๋ฐฑ์—… ์‹œ์Šคํ…œ ๋ฐ ์ธํ”„๋ผ์— ๋Œ€ํ•œ ์ง€์นจ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”. ํ”„๋กœ๋•์…˜ ๋ฐฑ์—… ์‹œ์Šคํ…œ์€ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ํ™˜๊ฒฝ๋ณ„๋กœ ๊ณ ์œ ํ•œ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท์œผ๋กœ ์ž์ฒด ๊ด€๋ฆฌํ˜• ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์Šค๋ƒ…์ƒท ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณผ๋ฅจ ๋‹จ์œ„๋กœ ๋ฐฑ์—…ํ•  ๋•Œ WiredTiger๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ ์ €๋„์ด ๋‹จ์ผ ๋ณผ๋ฅจ์— ์žˆ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

LVM์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šค๋ƒ…์ƒท์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ root๋กœ ์‹คํ–‰ํ•˜์„ธ์š”.

lvcreate --size 100M --snapshot --name mdb-snap01 /dev/vg0/mongodb

์ด ๋ช…๋ น์€ vg0 ๋ณผ๋ฅจ ๊ทธ๋ฃน์— ์žˆ๋Š” mongodb ๋ณผ๋ฅจ์˜ mdb-snap01 ์ด๋ผ๋Š” LVM ์Šค๋ƒ…์ƒท(--snapshot ์˜ต์…˜ ์‚ฌ์šฉ)์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ์˜ˆ์—์„œ๋Š” /dev/vg0/mdb-snap01์— ์œ„์น˜ํ•œ mdb-snap01์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์Šค๋ƒ…์ƒท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๋ณผ๋ฅจ ๊ทธ๋ฃน ๋ฐ ์žฅ์น˜์˜ ์œ„์น˜์™€ ๊ฒฝ๋กœ๋Š” ์šด์˜ ์ฒด์ œ์˜ LVM ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ์•ฝ๊ฐ„ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งค๊ฐœ ๋ณ€์ˆ˜ --size 100M์œผ๋กœ ์ธํ•ด ์Šค๋ƒ…์ƒท์˜ ์ตœ๋Œ€ ์šฉ๋Ÿ‰์€ 100๋ฉ”๊ฐ€๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค. ์ด ํฌ๊ธฐ๋Š” ๋””์Šคํฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ด๋Ÿ‰์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ /dev/vg0/mongodb์˜ ํ˜„์žฌ ์ƒํƒœ์™€ ์Šค๋ƒ…์ƒท ์ƒ์„ฑ ์‹œ์ (์˜ˆ: /dev/vg0/mdb-snap01) ์‚ฌ์ด์˜ ์ฐจ์ด์˜ ์–‘์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

ํŠนํžˆ ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ž„์‹œ ์ด๋ฏธ์ง€๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ€๋ฅผ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์Šค๋ƒ…์ƒท์˜ ๊ณต๊ฐ„์„ ์ถฉ๋ถ„ํžˆ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๋ฉด ์Šค๋ƒ…์ƒท ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋…ผ๋ฆฌ ๋ณผ๋ฅจ์„ ์‚ญ์ œํ•˜๊ณ  ๋‹ค๋ฅธ ๋…ผ๋ฆฌ ๋ณผ๋ฅจ์„ ๋งŒ๋“œ์„ธ์š”.

๋ช…๋ น์ด ๋ฐ˜ํ™˜๋˜๋ฉด ์Šค๋ƒ…์ƒท์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ์Šค๋ƒ…์ƒท์—์„œ ์ง์ ‘ ๋ณต์›ํ•˜๊ฑฐ๋‚˜, ์ƒˆ ๋…ผ๋ฆฌ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•˜์—ฌ ์ด ์Šค๋ƒ…์ƒท์—์„œ ๋Œ€์ฒด ์ด๋ฏธ์ง€๋กœ ๋ณต์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท์€ ๊ณ ํ’ˆ์งˆ ๋ฐฑ์—…์„ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜์ง€๋งŒ, ๋ฐฑ์—… ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ˜•์‹์œผ๋กœ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šค๋ƒ…์ƒท์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์›๋ณธ ๋””์Šคํฌ ์ด๋ฏธ์ง€์™€ ๋™์ผํ•œ ์Šคํ† ๋ฆฌ์ง€ ์ธํ”„๋ผ์— ์˜์กดํ•˜๊ณ  ์ƒ์ฃผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์Šค๋ƒ…์ƒท์„ ์•„์นด์ด๋ธŒํ•˜์—ฌ ๋‹ค๋ฅธ ๊ณณ์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ƒ…์ƒท์„ ๋งŒ๋“  ํ›„ ์Šค๋ƒ…์ƒท์„ ๋งˆ์šดํŠธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ์Šคํ† ๋ฆฌ์ง€์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—… ์ด๋ฏธ์ง€๋ฅผ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์˜ฎ๊ธธ ๋•Œ ์‹œ์Šคํ…œ์—์„œ ์••์ถ•์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‹ค์Œ ์ ˆ์ฐจ์— ๋”ฐ๋ผ ์Šค๋ƒ…์ƒท ์ด๋ฏธ์ง€์˜ ๋ธ”๋ก ์ˆ˜์ค€ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

umount /dev/vg0/mdb-snap01
dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz

์œ„์˜ ๋ช…๋ น ์‹œํ€€์Šค๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • /dev/vg0/mdb-snap01 ์žฅ์น˜๊ฐ€ ๋งˆ์šดํŠธ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์šดํŠธ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท์˜ ๋ธ”๋ก ์ˆ˜์ค€ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์ง€ ๋งˆ์„ธ์š”.

  • dd ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด ์Šค๋ƒ…์ƒท ์ด๋ฏธ์ง€์˜ ๋ธ”๋ก ์ˆ˜์ค€ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— gzip ํŒŒ์ผ๋กœ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค.

    ๊ฒฝ๊ณ 

    ์ด ๋ช…๋ น์€ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— ํฐ gz ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ์—ฌ์œ  ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

LVM์œผ๋กœ ์ƒ์„ฑ๋œ ์Šค๋ƒ…์ƒท์„ ๋ณต์›ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น ์‹œํ€€์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

lvcreate --size 1G --name mdb-new vg0
gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new
mount /dev/vg0/mdb-new /srv/mongodb

์œ„์˜ ์‹œํ€€์Šค๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • /dev/vg0 ๋ณผ๋ฅจ ๊ทธ๋ฃน์— mdb-new๋ผ๋Š” ์ƒˆ ๋…ผ๋ฆฌ ๋ณผ๋ฅจ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์žฅ์น˜์˜ ๊ฒฝ๋กœ๋Š” /dev/vg0/mdb-new๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

    ๊ฒฝ๊ณ 

    ์ด ๋ณผ๋ฅจ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” 1๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์ž…๋‹ˆ๋‹ค. ์›๋ณธ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ด ํฌ๊ธฐ๊ฐ€ 1GB ์ด์ƒ์ด๋ฉด ๋ณต์›์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

    1G๋ฅผ ์›ํ•˜๋Š” ๋ณผ๋ฅจ ํฌ๊ธฐ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  • mdb-snap01.gz๋ฅผ mdb-new ๋””์Šคํฌ ์ด๋ฏธ์ง€๋กœ ์••์ถ•์„ ํ’€๊ณ  ์•„์นด์ด๋ธŒ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

  • mdb-new ๋””์Šคํฌ ์ด๋ฏธ์ง€๋ฅผ /srv/mongodb๋””๋ ‰ํ† ๋ฆฌ์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค. MongoDB ๋ฐ์ดํ„ฐ ํŒŒ์ผ ์œ„์น˜ ๋˜๋Š” ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋„๋ก ๋งˆ์šดํŠธ ์ง€์ ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋ณต์›๋œ ์Šค๋ƒ…์ƒท์—๋Š” ์˜ค๋ž˜๋œ mongod.lock ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋ƒ…์ƒท์—์„œ ์ด ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์œผ๋ฉด MongoDB๋Š” ์˜ค๋ž˜๋œ ์ž ๊ธˆ ํŒŒ์ผ์ด ์ž˜๋ชป๋œ ์ข…๋ฃŒ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. db.fsyncLock() ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ mongod.lock ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์••์ถ•๋œ gz ํŒŒ์ผ์— ์“ฐ์ง€ ์•Š๊ณ  ๋ฐฑ์—…์„ ๋ณต์›ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

umount /dev/vg0/mdb-snap01
lvcreate --size 1G --name mdb-new vg0
dd if=/dev/vg0/mdb-snap01 of=/dev/vg0/mdb-new
mount /dev/vg0/mdb-new /srv/mongodb

์ฐธ๊ณ 

๋ชจ๋“  MongoDB ์ปฌ๋ ‰์…˜์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ UUID๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. MongoDB๊ฐ€ ์ปฌ๋ ‰์…˜์„ ๋ณต์›ํ•  ๋•Œ ๋ณต์›๋œ ์ปฌ๋ ‰์…˜์€ ๋ณธ๋ž˜์˜ UUID๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. UUID๊ฐ€ ์—†๋Š” ์ปฌ๋ ‰์…˜์„ ๋ณต์›ํ•˜๋Š” ๊ฒฝ์šฐ, MongoDB๋Š” ๋ณต์›๋œ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ UUID๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ปฌ๋ ‰์…˜ UUID์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ปฌ๋ ‰์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฒฐํ•ฉ๋œ ํ”„๋กœ์„ธ์Šค์™€ SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ์™ธ๋ถ€ ๋ฐฑ์—…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ˆœ์„œ๋Š” SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ์‹œ์Šคํ…œ์— ๋ฐฑ์—…์„ ๋ณด๊ด€ํ•˜๊ณ  ์••์ถ•ํ•œ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด ์œ„์—์„œ ์„ค๋ช…ํ•œ ์ ˆ์ฐจ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ๊ณ ๋ คํ•˜์„ธ์š”.

umount /dev/vg0/mdb-snap01
dd if=/dev/vg0/mdb-snap01 | ssh username@example.com gzip > /opt/backup/mdb-snap01.gz
lvcreate --size 1G --name mdb-new vg0
ssh username@example.com gzip -d -c /opt/backup/mdb-snap01.gz | dd of=/dev/vg0/mdb-new
mount /dev/vg0/mdb-new /srv/mongodb

WiredTiger๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MongoDB ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณผ๋ฅจ ๋‹จ์œ„๋กœ ๋ฐฑ์—…ํ•  ๋•Œ, ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ ์ €๋„์ด ๋‹จ์ผ ๋ณผ๋ฅจ์— ์žˆ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฑ์—…์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค ์ค‘์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž ๊ทธ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์“ฐ๊ธฐ๋ฅผ ์ผ์‹œ ์ค‘๋‹จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ์ €๋„๋ง ์—†์ด ์‹คํ–‰ ์ค‘์ด๊ฑฐ๋‚˜ ์ €๋„ ํŒŒ์ผ์ด ๋ณ„๋„์˜ ๋ณผ๋ฅจ์— ์žˆ๋Š” ๊ฒฝ์šฐ, ๋ฐฑ์—… ํ”„๋กœ์„ธ์Šค ์ค‘์— ์“ฐ๊ธฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์“ฐ๊ธฐ๋ฅผ ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž ๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ฝ๊ธฐ๋ฅผ ์ˆ˜์‹ ํ•˜์ง€ ์•Š๋Š” ์„ธ์ปจ๋”๋ฆฌ(์ฆ‰, ์ˆจ๊ฒจ์ง„ ๋ฉค๋ฒ„)๋ฅผ ๋ฐฑ์—…์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

1

๋””์Šคํฌ์— ์“ฐ๊ธฐ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ '์ž ๊ธˆ'ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ฐธ๊ณ ํ•ด mongosh์—์„œ db.fsyncLock() ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

db.fsyncLock();
2
3

์Šค๋ƒ…์ƒท ์„ ์ƒ์„ฑํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ ์ž ๊ธˆ์„ ํ•ด์ œํ•˜๋ ค๋ฉด mongosh์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

db.fsyncUnlock();

๋Œ์•„๊ฐ€๊ธฐ

๋ฐฑ์—… ๋ฐฉ๋ฒ•