ํ์ผ ์์คํ ์ค๋ ์ท ์ผ๋ก ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ ๋ฐฑ์ ๋ฐ ๋ณต์
์ด ํ์ด์ง์ ๋ด์ฉ
์ด ๋ฌธ์ ์์๋ LVM ๋๋ ์ ์ฅ ์ดํ๋ผ์ด์ธ์ค์ ๊ฐ์ ์์คํ ์์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ MongoDB ๋ ๋ฆฝํ ์๋ฒ ๋ฐ ๋ณต์ ๋ณธ ์ธํธ์ ๋ฐฑ์ ์ ๋ง๋๋ ์ ์ฐจ์ ํด๋น ๋ณต์ ์ ๋ต์ ์ค๋ช ํฉ๋๋ค. ์ค๋ ํด๋ฌ์คํฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ์ผ ์์คํ ์ค๋ ์ท์ผ๋ก ์์ฒด ๊ด๋ฆฌํ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ค๋ ์ท ์ ์ฐธ์กฐํ์ธ์.
์ด๋ฌํ ํ์ผ ์์คํ ์ค๋ ์ท ๋๋ '๋ธ๋ก ์์ค' ๋ฐฑ์ ๋ฐฉ๋ฒ์ ์์คํ ์์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ MongoDB์ ๋ฐ์ดํฐ ํ์ผ์ ๋ณด๊ดํ๋ ์ฅ์น์ ๋ณต์ฌ๋ณธ์ ๋ง๋ญ๋๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ ๋น ๋ฅด๊ฒ ์๋ฃ๋๊ณ ์์ ์ ์ผ๋ก ์๋ํ์ง๋ง, MongoDB ์ธ๋ถ์์ ์ถ๊ฐ ์์คํ ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค.
ํ
๋ค์๋ ์ฐธ์กฐํ์ธ์.
์ค๋ ์ท ๊ฐ์
์ค๋ ์ท์ ๋ผ์ด๋ธ ๋ฐ์ดํฐ์ ํน์ ์ค๋ ์ท ๋ณผ๋ฅจ ์ฌ์ด์ ํฌ์ธํฐ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ํฌ์ธํฐ๋ ์ด๋ก ์ ์ผ๋ก 'ํ๋ ๋งํฌ'์ ๊ฐ์ต๋๋ค. ์์ ๋ฐ์ดํฐ๊ฐ ์ค๋ ์ท์์ ๋ถ๋ฆฌ๋๋ฉด ์ค๋ ์ท ํ๋ก์ธ์ค์์๋ ์ฐ๊ธฐ ์ค ๋ณต์ฌ ์ ๋ต์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์ค๋ ์ท์ ์์ ๋ ๋ฐ์ดํฐ๋ง ์ ์ฅํฉ๋๋ค.
์ค๋ ์ท์ ๋ง๋ ํ ํ์ผ ์์คํ ์ ์ค๋ ์ท ์ด๋ฏธ์ง๋ฅผ ๋ง์ดํธํ๊ณ ์ค๋ ์ท์์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํฉ๋๋ค. ๊ฒฐ๊ณผ ๋ฐฑ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ ์ฒด ๋ณต์ฌ๋ณธ์ด ํฌํจ๋ฉ๋๋ค.
๊ณ ๋ ค ์ฌํญ
์์ด์ด๋ํ์ด๊ฑฐ ์คํ ๋ฆฌ์ง ์์ง
MongoDB ์ธ์คํด์ค์ ๋ฐ์ดํฐ ํ์ผ๊ณผ ์ ๋ ํ์ผ์ด ๋ณ๋์ ๋ณผ๋ฅจ์ ์๋ ๊ฒฝ์ฐ MongoDB๋ WiredTiger ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํ์ฌ ๋ณผ๋ฅจ ์์ค ๋ฐฑ์ ์ ์ง์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ผ๊ด์ฑ ์๋ ๋ฐฑ์ ์ ์์ฑํ๋ ค๋ฉด ๋ฐฑ์ ํ๋ก์ธ์ค ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ทธ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ชจ๋ ์ฐ๊ธฐ๋ฅผ ์ผ์ ์ค๋จํด์ผ ํฉ๋๋ค.
์ํธํ๋ ์คํ ๋ฆฌ์ง ์์ง(MongoDB Enterprise์๋ง ํด๋น)
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 10 ๊ตฌ์ฑ์์ Amazon EBS๋ฅผ ์ฌ์ฉํ ์ค๋ ์ท
๋ฐฐํฌ๊ฐ ์ธ์คํด์ค ๋ด์ RAID๊ฐ ๊ตฌ์ฑ๋ Amazon์ EBS(Elastic Block Storage)์ ์์กดํ๋ ๊ฒฝ์ฐ, ํ๋ซํผ์ ์ค๋ ์ท ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋์คํฌ์์ ์ผ๊ด๋ ์ํ๋ฅผ ์ป๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋์์ผ๋ก ๋ค์ ์ค ํ๋๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๋์คํฌ์ ๋ํ ๋ชจ๋ ์ฐ๊ธฐ๋ฅผ ํ๋ฌ์ํ๊ณ ์ฐ๊ธฐ ์ ๊ธ์ ์์ฑํ์ฌ ๋ฐฑ์ ํ๋ก์ธ์ค ๋์ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
์ด ์ต์ ์ ์ ํํ๋ ๊ฒฝ์ฐ ๋ณ๋์ ๋ณผ๋ฅจ์ ์ ๋ ํ์ผ๋ก ์ธ์คํด์ค ๋ฐฑ์ ํน์ ์ ๋๋ง ์์ด ์ธ์คํด์ค ๋ฐฑ์ ์ ์ฐธ์กฐํ์ธ์.
์์คํ ๋ด RAID ์์ MongoDB ๋ฐ์ดํฐ ํ์ผ์ ์คํํ๊ณ ๋ณด๊ดํ๋๋ก LVM์ ๊ตฌ์ฑํฉ๋๋ค.
์ด ์ต์ ์ ์ ํํ๋ ๊ฒฝ์ฐ ์ค๋ ์ท ๋ง๋ค๊ธฐ์ ์ค๋ช ๋ LVM ๋ฐฑ์ ์์ ์ ์ํํ์ธ์.
Linux์์ 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
์ธ์คํด์ค๊ฐ ์ ๋๋ง ์์ด ์คํ ์ค์ด๊ฑฐ๋ ์ ๋ ํ์ผ์ด ๋ณ๋์ ๋ณผ๋ฅจ์ ์๋ ๊ฒฝ์ฐ, ๋ฐฑ์
ํ๋ก์ธ์ค ์ค์ ์ฐ๊ธฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ชจ๋ ์ฐ๊ธฐ๋ฅผ ๋์คํฌ์ ํ๋ฌ์ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ฐ์ผ ํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ฝ๊ธฐ๋ฅผ ์์ ํ์ง ์๋ ์ธ์ปจ๋๋ฆฌ(์ฆ, ์จ๊ฒจ์ง ๋ฉค๋ฒ)๋ฅผ ๋ฐฑ์
์ ์ฌ์ฉํฉ๋๋ค.
๋์คํฌ์ ์ฐ๊ธฐ๋ฅผ ํ๋ฌ์ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ฐ ์ถ๊ฐ ์ฐ๊ธฐ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋์คํฌ์ ์ฐ๊ธฐ๋ฅผ ํ๋ฌ์ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ '์ ๊ธ'ํ๋ ค๋ฉด ๋ค์์ ์ฐธ๊ณ ํด mongosh
์์ db.fsyncLock()
๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.
db.fsyncLock();
์ค๋ ์ท ์ ๋ง๋ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ ๊ธ์ ํด์ ํฉ๋๋ค.
์ค๋
์ท ์ ์์ฑํ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ ๊ธ์ ํด์ ํ๋ ค๋ฉด mongosh
์์ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค.
db.fsyncUnlock();