๋ณต์
์ด ํ์ด์ง์ ๋ด์ฉ
MongoDB์ ๋ณต์ ๋ณธ ์ธํธ๋ ๋์ผํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ mongod
ํ๋ก์ธ์ค ๊ทธ๋ฃน์
๋๋ค. ๋ณต์ ๋ณธ ์ธํธ๋ ์ค๋ณต์ฑ๊ณผ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ฉฐ ๋ชจ๋ ํ๋ก๋์
๋ฐฐํฌ์ ๊ธฐ๋ฐ์ด ๋ฉ๋๋ค. ์ด ์น์
์์๋ MongoDB์์์ ๋ณต์ ์ ๋ณต์ ๋ณธ ์ธํธ์ ์ปดํฌ๋ํธ ๋ฐ ์ํคํ
์ฒ๋ฅผ ์๊ฐํฉ๋๋ค. ์ด ์น์
์์๋ ๋ณต์ ๋ณธ ์ธํธ์ ๊ด๋ จ๋ ์ผ๋ฐ์ ์ธ ์์
์ ๋ํ ํํ ๋ฆฌ์ผ๋ ์ ๊ณตํฉ๋๋ค.
MongoDB Atlas์์ ํธ์คํ ๋๋ ๋ฐฐํฌ๋ฅผ ์ํด UI์์ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
์ค๋ณต์ฑ ๋ฐ ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ
๋ณต์ ๋ ์ค๋ณต์ฑ์ ์ ๊ณตํ๊ณ ๋ฐ์ดํฐ ๊ฐ์ฉ์ฑ์ ๋์ ๋๋ค. ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ๋ณต์ฌ๋ณธ์ด ์๋ ๊ฒฝ์ฐ, ๋ณต์ ๋ ๋จ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์์ค์ ๋๋นํ ๋ด๊ฒฐํจ์ฑ ์์ค์ ์ ๊ณตํฉ๋๋ค.
์ผ๋ถ ๊ฒฝ์ฐ์๋ ํด๋ผ์ด์ธํธ๊ฐ ์ฝ๊ธฐ ์์ ์ ๋ค๋ฅธ ์๋ฒ๋ก ๋ณด๋ผ ์ ์์ผ๋ฏ๋ก ๋ณต์ ๋ฅผ ํตํด ์ฝ๊ธฐ ์ฉ๋์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ์ ๋ฐ์ดํฐ ๋ณต์ ๋ณธ์ ์ ์งํ๋ฉด ๋ถ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ์ง์ญ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ด ํฅ์๋ ์ ์์ต๋๋ค. ์ฌํด ๋ณต๊ตฌ, ๋ณด๊ณ ๋๋ ๋ฐฑ์ ๊ณผ ๊ฐ์ ์ ์ฉ ๋ชฉ์ ์ ์ํด ์ถ๊ฐ ๋ณต์ฌ๋ณธ์ ์ ์ง ๊ด๋ฆฌํ ์๋ ์์ต๋๋ค.
MongoDB์์์ ๋ณต์
๋ณต์ ๋ณธ ์ธํธ๋ ๋์ผํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ์งํ๋ mongod
์ธ์คํด์ค ๊ทธ๋ฃน์
๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ๋ณด์ ๋
ธ๋์ ์ ํ์ ์ผ๋ก ํ๋์ ์ค์ฌ์ ๋
ธ๋๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ฐ์ดํฐ ๋ณด์ ๋
ธ๋ ์ค ๋จ ํ๋์ ๊ตฌ์ฑ์๋ง์ด ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋๋ก ๊ฐ์ฃผ๋๊ณ , ๋ค๋ฅธ ๋
ธ๋๋ ์ธ์ปจ๋๋ฆฌ ๋
ธ๋๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๊ฒฝ๊ณ
๊ฐ ๋ณต์ ๋ณธ ์ธํธ ๋ ธ๋๋ ๋จ ํ๋์ ๋ณต์ ๋ณธ ์ธํธ์๋ง ์ํด์ผ ํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ ๋ ธ๋๋ ๋ ์ด์์ ๋ณต์ ๋ณธ ์ธํธ์ ์ํ ์ ์์ต๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋๋ ๋ชจ๋ ์ฐ๊ธฐ ์์
์ ์์ ํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์๋ { w: "majority" }
์ฐ๊ธฐ ๊ณ ๋ ค๋ก ์ฐ๊ธฐ๋ฅผ ํ์ธํ ์ ์๋ ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ํ๋๋ง ์์ ์ ์์ง๋ง, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ mongod ์ธ์คํด์ค๊ฐ ์ผ์์ ์ผ๋ก ์์ ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ก ๊ฐ์ฃผํ ์๋ ์์ต๋๋ค. [1] ํ๋ผ์ด๋จธ๋ฆฌ๋ ๋ฐ์ดํฐ ์ธํธ์ ๋ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์์
๋ก๊ทธ, ์ฆ oplog์ ๊ธฐ๋กํฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋ ์์
์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณต์ ๋ณธ ์ธํธ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ์ปจ๋๋ฆฌ๋ ํ๋ผ์ด๋จธ๋ฆฌ์ oplog๋ฅผ ๋ณต์ ํ๊ณ ์์ ์ ๋ฐ์ดํฐ ์ธํธ์ ์ ์ฉํ์ฌ ์ธ์ปจ๋๋ฆฌ์ ๋ฐ์ดํฐ ์ธํธ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ฐ์ํ๋๋ก ํฉ๋๋ค. ๋ง์ฝ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด, ์ ๊ฒฉ ์ธ์ปจ๋๋ฆฌ๋ ํฌํ๋ฅผ ์ค์ํ์ฌ ์์ ์ ์๋ก์ด ํ๋ผ์ด๋จธ๋ฆฌ๋ก ์ ์ถํฉ๋๋ค. ์ธ์ปจ๋๋ฆฌ ๊ตฌ์ฑ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณต์ ๋ณธ ์ธํธ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ผ๋ถ ์ํฉ(์: ํ๋ผ์ด๋จธ๋ฆฌ์ ์ธ์ปจ๋๋ฆฌ๋ฅผ ๋ณด์ ์ค์ด์ง๋ง ๋น์ฉ ์ ์ฝ์ผ๋ก ์ธํด ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ฒฝ์ฐ)์์๋ ๋ณต์ ๋ณธ ์ธํธ์ mongod
์ธ์คํด์ค๋ฅผ ์ค์ฌ์๋ก ์ถ๊ฐํ๋๋ก ์ ํํ ์ ์์ต๋๋ค. ์ค์ฌ์๋ ์ ๊ฑฐ์ ์ฐธ์ฌํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ๋ณด์ ํ์ง ์์ต๋๋ค(์ฆ, ๋ฐ์ดํฐ ์ค๋ณต์ฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค). ์ค์ฌ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณต์ ๋ณธ ์ธํธ ์ค์ฌ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค์ฌ์๋ ํญ์ ์ค์ฌ์ ์ญํ ์ ์ํํ์ง๋ง, ์ ๊ฑฐ ๊ธฐ๊ฐ ์ค์๋ ํ๋ผ์ด๋จธ๋ฆฌ ํ๋ณด๊ฐ ๋ฌผ๋ฌ๋์ ์ธ์ปจ๋๋ฆฌ ํ๋ณด๊ฐ ๋ ์๋ ์๊ณ ์ธ์ปจ๋๋ฆฌ ํ๋ณด๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ ํ๋ณด๊ฐ ๋ ์๋ ์์ต๋๋ค.
๋น๋๊ธฐ ๋ณต์
์ธ์ปจ๋๋ฆฌ๋ ํ๋ผ์ด๋จธ๋ฆฌ์ oplog๋ฅผ ๋ณต์ ํ๊ณ ํด๋น ๋ฐ์ดํฐ ์ธํธ์ ๋น๋๊ธฐ์ ์ผ๋ก ์์ ์ ์ ์ฉํฉ๋๋ค. ์ธ์ปจ๋๋ฆฌ ๋ฐ์ดํฐ ์ธํธ๊ฐ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ฐ์ํ๋๋ก ํ๋ฉด ํ ๋ช ์ด์์ ๊ตฌ์ฑ์์ด ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ณต์ ๋ณธ ์ธํธ๊ฐ ๊ณ์ ์๋ํ ์ ์์ต๋๋ค.
๋ณต์ ๋ฉ์ปค๋์ฆ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณต์ ๋ณธ ์ธํธ Oplog ๋ฐ ๋ณต์ ๋ณธ ์ธํธ ๋ฐ์ดํฐ ๋๊ธฐํ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋๋ฆฐ ์์
์ด์ ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ๋๋ฆฐ ์์ ์๊ณ๊ฐ๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฌ๋ oplog ํญ๋ชฉ์ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ฌํ ๋๋ฆฐ oplog ๋ฉ์์ง์ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
diagnostic log
์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ ๋ํด ๊ธฐ๋กํฉ๋๋ค.
applied op: <oplog entry> took <num>ms
ํ ์คํธ์ ํจ๊ป
REPL
๊ตฌ์ฑ ์์ ์๋์ ๊ธฐ๋ก๋ฉ๋๋ค.
๋ก๊ทธ ์์ค(์์คํ ๋๋ ๊ตฌ์ฑ ์์ ์์ค)์ ์์กดํ์ง ์์ต๋๋ค.
ํ๋กํ์ผ๋ง ์์ค์ ์์กดํ์ง ์์ต๋๋ค.
slowOpSampleRate
์ ์ํฅ์ ๋ฐ์ต๋๋ค.
ํ๋กํ์ผ๋ฌ๋ ๋๋ฆฐ oplog ํญ๋ชฉ์ ์บก์ฒํ์ง ์์ต๋๋ค.
๋ณต์ ์ง์ฐ ๋ฐ ํ๋ฆ ์ ์ด
๋ณต์ ์ง์ฐ์ ํ๋ผ์ด๋จธ๋ฆฌ์์ ์ด๋ฃจ์ด์ง ์์ ๊ณผ ๊ทธ ์์ ์ด oplog์์ ์ธ์ปจ๋๋ฆฌ๊น์ง ์ ์ฉ๋ ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋๋ค. ์ฝ๊ฐ์ ์ง์ฐ์ ํ์ฉ๋ ์ ์์ง๋ง ๋ณต์ ์ง์ฐ์ด ์ฆ๊ฐํ๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ์ ์บ์ ๋ถํ๊ฐ ๊ฐ์ค๋๋ ๋ฑ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ด๋ฆฌ์๋ majority
committed
์ง์ฐ์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ต๋๊ฐ flowControlTargetLagSeconds
์ดํ๋ก ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ฐ๊ธฐ๋ฅผ ์ ์ฉํ๋ ์๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ฆ ์ ์ด๋ enabled
์
๋๋ค.
์ฐธ๊ณ
ํ๋ฆ ์ ์ด๊ฐ ์๋ํ๋ ค๋ฉด ๋ณต์ ๋ณธ ์ธํธ/์ค๋ฉ๋ ํด๋ฌ์คํฐ์ 4.2
์ featureCompatibilityVersion(fCV) ๊ณผ
majority enabled
์ ์ฝ๊ธฐ ์ฐ๋ ค ์ฌํญ์ด ์์ด์ผ ํฉ๋๋ค. ์ฆ, fCV๊ฐ
4.2
๊ฐ ์๋๊ฑฐ๋ ์ฝ๊ธฐ ๋ฌธ์ ๊ณผ๋ฐ์๊ฐ ๋นํ์ฑํ๋ ๊ฒฝ์ฐ ํ์ฑํ๋ ํ๋ฆ ์ ์ด๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํ๋ฆ ์ ์ด๊ฐ ํ์ฑํ๋๋ฉด ์ง์ฐ์ด flowControlTargetLagSeconds
์ ๊ฐ๊น์์ง์ ๋ฐ๋ผ ๊ธฐ๋ณธ์ ๋ํ ์ฐ๊ธฐ๋ ์ฐ๊ธฐ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ์ ๊ธ์ ์ํํ๊ธฐ ์ ์ ํฐ์ผ์ ์ป์ด์ผ ํฉ๋๋ค. ์ด๋น ๋ฐํ๋๋ ํฐ์ผ ์๋ฅผ ์ ํํจ์ผ๋ก์จ ํ๋ฆ ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ง์ฐ์ ๋ชฉํ ๋ฏธ๋ง์ผ๋ก ์ ์งํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ๋ณต์ ์ง์ฐ ํ์ธ ๋ฐ ํ๋ฆ ์ ์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ ํ์ผ์ค๋ฒ
ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ electionTimeoutMillis
์ ์๊ฐ(๊ธฐ๋ณธ๊ฐ์ 10์ด)์ ์ด๊ณผํ์ฌ ์ธํธ์ ๋ค๋ฅธ ๊ตฌ์ฑ์๊ณผ ํต์ ํ์ง ์์ผ๋ฉด ์ ๊ฒฉ ์ธ์ปจ๋๋ฆฌ๊ฐ ์์ ์ ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ก ์ง๋ช
ํ๊ธฐ ์ํ ํฌํ๋ฅผ ํธ์ถํฉ๋๋ค. ํด๋ฌ์คํฐ๋ ์๋ก์ด ํ๋ผ์ด๋จธ๋ฆฌ ํฌํ๋ฅผ ์๋ฃํ๊ณ ์ ์ ์์
์ ์ฌ๊ฐํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ๋ ํฌํ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ๋๊น์ง ์ฐ๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์คํ๋ผ์ธ์ธ ๋์ ์ด๋ฌํ ์ฟผ๋ฆฌ๊ฐ ์ธ์ปจ๋๋ฆฌ์์ ์คํ๋๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ ์ธํธ๋ ์ฝ๊ธฐ ์ฟผ๋ฆฌ๋ฅผ ๊ณ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
ํด๋ฌ์คํฐ๊ฐ ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ ํํ๊ธฐ๊น์ง์ ์๊ฐ ์ค์๊ฐ์ ๊ธฐ๋ณธ๊ฐ replica
configuration settings
์ ๊ฐ์ ํ ๋ ์ผ๋ฐ์ ์ผ๋ก 12์ด๋ฅผ ์ด๊ณผํ์ง ์์์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉ ๋ถ๊ฐ๋ก ํ์ํ๊ณ ํฌํ๋ฅผ ํธ์ถํ์ฌ ์๋ฃํ๋ ๋ฐ ํ์ํ ์๊ฐ์ด ํฌํจ๋ฉ๋๋ค. settings.electionTimeoutMillis
๋ณต์ ๊ตฌ์ฑ ์ต์
์ ์์ ํ์ฌ ์ด ๊ธฐ๊ฐ์ ์กฐ์ ํ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ ๋ฑ ์ฌ๋ฌ ์์ธ์ผ๋ก ์ธํด ๋ณต์ ๋ณธ ์ธํธ ์ ํ์ ๋ง์น๋ ๋ฐ ํ์ํ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๊ฒฐ๊ตญ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋ ์์ด ํด๋ฌ์คํฐ๊ฐ ์๋ํ ์ ์๋ ์๊ฐ์ ์์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด๋ฌํ ์์ธ๋ค์ ํน์ ํด๋ฌ์คํฐ ์ํคํ
์ฒ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
electionTimeoutMillis
๋ณต์ ๊ตฌ์ฑ ์ต์
์ ๊ธฐ๋ณธ๊ฐ 10000
(10์ด)์์ ๋ฎ์ถ๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ ์คํจ๋ฅผ ๋ ์ ์ํ๊ฒ ํ์งํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํด๋ฌ์คํฐ๋ ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋๋ผ๋ ์ผ์ ๋คํธ์ํฌ ์ง์ฐ๊ณผ ๊ฐ์ ์์ธ์ผ๋ก ์ธํด ํฌํ๋ฅผ ๋ ์์ฃผ ํธ์ถํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด w : 1 ์ฐ๊ธฐ ์์
์ ๋กค๋ฐฑ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ฐ๊ฒฐ ๋ก์ง์๋ ์๋ ํ์ผ์ค๋ฒ ๋ฐ ํ์ ํฌํ์ ๋ํ ํ์ฉ ๋ฒ์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. MongoDB ๋๋ผ์ด๋ฒ๋ ํ๋ผ์ด๋จธ๋ฆฌ์ ์์ค์ ๊ฐ์งํ๊ณ ํน์ ์ฐ๊ธฐ ์์ ์ ํ ๋ฒ๋ง ์๋์ผ๋ก ์ฌ์๋ํ ์ ์์ผ๋ฉฐ, ์๋ ํ์ผ์ค๋ฒ ๋ฐ ํฌํ์ ๋ํ ์ถ๊ฐ ๊ธฐ๋ณธ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ํธํ ๊ฐ๋ฅํ ๋๋ผ์ด๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์๋ ๊ฐ๋ฅ ์ฐ๊ธฐ๋ฅผ ํ์ฑํ
MongoDB๋ ๊ฐ์ฅ ์ต๊ทผ์ ์ก์ธ์คํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ ์ค๋น๋ ํฌํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ ๊ตฌ์ฑ์์ ์บ์์ ๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ธ์ปจ๋๋ฆฌ ์บ์๋ฅผ ์ฌ์ ์ ์ค๋นํ๋ฉด ํฌํ ํ ์ฑ๋ฅ์ ๋ ๋น ๋ฅด๊ฒ ๋ณต์ํ ์ ์์ต๋๋ค.
MongoDB์ ํ์ผ์ค๋ฒ ํ๋ก์ธ์ค์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ๋ค์์ ์ฐธ์กฐํ์ธ์.
์ฝ๊ธฐ ์์
์ฝ๊ธฐ ์ค์
๊ธฐ๋ณธ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๋ ํ๋ผ์ด๋จธ๋ฆฌ[1]์์ ์ฝ์ง๋ง, ํด๋ผ์ด์ธํธ๋ ์ฝ๊ธฐ ์ค์ ์ ์ง์ ํ์ฌ ์ฝ๊ธฐ ์์ ์ ์ธ์ปจ๋๋ฆฌ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
๋น๋๊ธฐ ๋ณต์ ๋ ์ธ์ปจ๋๋ฆฌ์์์ ์ฝ๊ธฐ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ฐ์ดํฐ ์ํ๋ฅผ ๋ฐ์ํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
๋ถ์ฐ ํธ๋์ญ์
์ ํฌํจ๋ ์ฝ๊ธฐ ์์
์ primary
๋ก ์ฝ๊ธฐ ์ค์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํน์ ํธ๋์ญ์
์ ๋ชจ๋ ์์
์ ๋์ผํ ๋
ธ๋๋ก ๋ผ์ฐํ
๋์ด์ผ ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์์์ ์ฝ๊ธฐ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ์ฝ๊ธฐ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ๊ฐ์์ฑ
์ฝ๊ธฐ ๊ณ ๋ ค์ ๋ฐ๋ผ ํด๋ผ์ด์ธํธ๋ ์ฐ๊ธฐ๊ฐ ์ง์ํ์ด ๋๊ธฐ ์ ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ฐ๊ธฐ์ ์ฐ๊ธฐ ๊ณ ๋ ค์ ๊ด๊ณ์์ด
"local"
๋๋"available"
์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ ์ฐ๊ธฐ ์์ ์ด ์คํ ํด๋ผ์ด์ธํธ์ ์น์ธ๋๊ธฐ ์ ์ ์ฐ๊ธฐ ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค."local"
๋๋"available"
์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ๋ ๋ณต์ ๋ณธ ์ธํธ ์ฅ์ ์กฐ์น ์ค์ ๋์ค์ ๋กค๋ฐฑ๋ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ํธ๋์ญ์ ์ด ์ปค๋ฐ๋๋ฉด ํธ๋์ญ์ ์์ ์ด๋ฃจ์ด์ง ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฅ๋๊ณ ํธ๋์ญ์ ์ธ๋ถ์์ ๋ณผ ์ ์์ต๋๋ค. ์ฆ, ํธ๋์ญ์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ๋กค๋ฐฑํ๋ ๋์ ์ผ๋ถ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ์ง ์์ต๋๋ค.
ํธ๋์ญ์ ์ด ์ปค๋ฐ๋ ๋๊น์ง ํธ๋์ญ์ ์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ ํธ๋์ญ์ ์ธ๋ถ์ ํ์๋์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํธ๋์ญ์
์ด ์ฌ๋ฌ ์ค๋์ ์ฐ๊ธฐ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ์ธ๋ถ ์ฝ๊ธฐ ์์
์ด ์ปค๋ฐ๋ ํธ๋์ญ์
์ ๊ฒฐ๊ณผ๊ฐ ์ค๋ ์ ์ฒด์ ํ์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํธ๋์ญ์
์ด ์ปค๋ฐ๋๊ณ ์ฐ๊ธฐ 1์ด ์ค๋ A์ ํ์๋์ง๋ง ์ฐ๊ธฐ 2๊ฐ ์ค๋ B์ ์์ง ํ์๋์ง ์๋ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "local"
์ ์ธ๋ถ ์ฝ๊ธฐ๋ ์ฐ๊ธฐ 2๋ฅผ ๋ณด์ง ์๊ณ ์ฐ๊ธฐ 1์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
MongoDB์ ์ฝ๊ธฐ ๊ฒฉ๋ฆฌ, ์ผ๊ด์ฑ ๋ฐ ์ต์ ์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฝ๊ธฐ ๊ฒฉ๋ฆฌ, ์ผ๊ด์ฑ ๋ฐ ์ต์ ์ฑ์ ์ฐธ์กฐํ์ธ์.
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ ์ฅ์ ๋ ๊ณํ๋ ์ ์ง ๋ณด์์ ๋ฐ๋ฅธ ํ๋ผ์ด๋จธ๋ฆฌ ํฌํ์ ์ํฅ์ ์ค์ฌ์ค๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ํ์ผ์ค๋ฒ ์กฐ์น ํ, ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ก ์ธ๊ณ๋ฐ์ ์ธ์ปจ๋๋ฆฌ์์๋ ์ ์ฟผ๋ฆฌ๊ฐ ๋ค์ด์ฌ ๋ ์บ์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ์บ์๊ฐ ์๋ฐ์ ํ๋ ๋์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ electable
์ธ์ปจ๋๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ์บ์๋ฅผ ์ฌ์ ์๋ฐํฉ๋๋ค. ์ ํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ์ ์บ์๋ฅผ ๋ฏธ๋ฆฌ ์๋ฐํ๊ธฐ ์ํด ํ๋ผ์ด๋จธ๋ฆฌ๋ ์ ํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ๋ก ์์ ํ ์ง์ ์์
์ ์ํ์ ๋ฏธ๋ฌ๋งํฉ๋๋ค.
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ฅผ ์์ ํ๋ electable
์ธ์ปจ๋๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ํ์ ์งํฉ์ ํฌ๊ธฐ๋ mirrorReads
๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ์ ๋ํ ์ง์ ํ์ฑํ/๋นํ์ฑํ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฐธ๊ณ
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ํ๋ผ์ด๋จธ๋ฆฌ์ ์๋ต์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ธ์ปจ๋๋ฆฌ๋ก ๋ฏธ๋ฌ๋งํ๋ ์ฝ๊ธฐ๋ 'ํ์ด์ด ์ค ํฌ๊ฒ(fire-and-forget)' ์์ ์ ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ๋ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค.
์ง์๋๋ ์์
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ ๋ค์ ์์ ์ ์ง์ํฉ๋๋ค.
findAndModify
(ํนํ, ํํฐ๋ ๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ก ์ ์ก๋จ)update
(ํนํ, ํํฐ๋ ๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ก ์ ์ก๋จ)
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ์ ๋ํ ์ง์ ํ์ฑํ/๋นํ์ฑํ
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋๋ฉฐ 0.01
์ ๊ธฐ๋ณธ
sampling rate
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๋ฅผ ๋นํ์ฑํํ๋ ค๋ฉด
mirrorReads
๋งค๊ฐ ๋ณ์๋ฅผ {
samplingRate: 0.0 }
์ผ๋ก ์ค์ ํฉ๋๋ค.
db.adminCommand( { setParameter: 1, mirrorReads: { samplingRate: 0.0 } } )
์ํ๋ง ์๋๊ฐ 0.0
๋ณด๋ค ํฐ ๊ฒฝ์ฐ, ํ๋ผ์ด๋จธ๋ฆฌ๋ ์ง์๋๋ ์ฝ๊ธฐ๋ฅผ electable
์ธ์ปจ๋๋ฆฌ์ ํ์ ์งํฉ์ผ๋ก ๋ฏธ๋ฌ๋งํฉ๋๋ค. ์ํ๋ง ์๋๊ฐ 0.01
์ธ ๊ฒฝ์ฐ, ํ๋ผ์ด๋จธ๋ฆฌ๋ ์์ ํ๋ ์ง์๋๋ ์ฝ๊ธฐ์ 1%๋ฅผ ํฌํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ์ ๋ฏธ๋ฌ๋งํฉ๋๋ค.
์๋ฅผ ๋ค์ด ํ๋์ ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ ๊ฐ์ ํฌํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ๋ก ๊ตฌ์ฑ๋ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ์๊ฐํด ๋ณด์ธ์. ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ๋ฏธ๋ฌ๋ง๋ ์ ์๋ 1000
๊ฐ์ ์์
์ ์์ ํ๊ณ ์ํ๋ง ์๋๊ฐ 0.01
์ธ ๊ฒฝ์ฐ, ํ๋ผ์ด๋จธ๋ฆฌ๋ ์ฝ 10
๊ฐ์ ์ง์๋ ์ฝ๊ธฐ๋ฅผ ํฌํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ๋ก ๋ฏธ๋ฌ๋งํฉ๋๋ค. ํฌํ ๊ฐ๋ฅํ ๊ฐ ์ธ์ปจ๋๋ฆฌ๋ 10๊ฐ์ ์ฝ๊ธฐ ์ค ์ผ๋ถ๋ง ์์ ํฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ๋ ๋ฏธ๋ฌ๋ง๋ ๊ฐ ์ฝ๊ธฐ๋ฅผ ๋ฌด์์๋ก ์ ํ๋ ๋น์ด ์์ง ์์ ํฌํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ๋ก ๋ณด๋
๋๋ค.
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ์ ์ํ๋ง ์๋ ๋ณ๊ฒฝ
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ์ ์ํ๋ง ์๋๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด mirrorReads
๋งค๊ฐ ๋ณ์๋ฅผ 0.0
์์ 1.0
์ฌ์ด์ ์ซ์๋ก ์ค์ ํฉ๋๋ค.
์ํ๋ง ์๋๊ฐ
0.0
์ด๋ฉด ๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ๊ฐ ๋นํ์ฑํ๋ฉ๋๋ค.์ํ๋ง ์๋๊ฐ
0.0
์์1.0
์ฌ์ด์ ์ซ์์ธ ๊ฒฝ์ฐ ํ๋ผ์ด๋จธ๋ฆฌ๋ ์ง์ ๋ ์ํ๋ง ์๋๋ก ์ง์๋๋ ์ฝ๊ธฐ์ ๋ฌด์์ ์ํ์ ํฌํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ๋ก ์ ๋ฌํฉ๋๋ค.์ํ๋ง ์๋๊ฐ
1.0
์ด๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ง์๋๋ ๋ชจ๋ ์ฝ๊ธฐ๋ฅผ ํฌํ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ๋ก ์ ๋ฌํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ mirrorReads
๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฏธ๋ฌ๋ง๋ ์ฝ๊ธฐ ๋ฉํธ๋ฆญ
์์
์์ ํ๋๋ฅผ ์ง์ ํ๋ฉด serverStatus
๋ช
๋ น๊ณผ db.serverStatus()
shell ๋ฉ์๋๋ mirroredReads
์งํ๋ฅผ ๋ฐํํฉ๋๋ค.
db.serverStatus( { mirroredReads: 1 } )
ํธ๋์ญ์
๋ณต์ ๋ณธ ์ธํธ์ ๋ํด ๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ถ์ฐ ํธ๋์ญ์
์ ํฌํจ๋ ์ฝ๊ธฐ ์์
์ primary
๋ก ์ฝ๊ธฐ ์ค์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํน์ ํธ๋์ญ์
์ ๋ชจ๋ ์์
์ ๋์ผํ ๋
ธ๋๋ก ๋ผ์ฐํ
๋์ด์ผ ํฉ๋๋ค.
ํธ๋์ญ์ ์ด ์ปค๋ฐ๋ ๋๊น์ง ํธ๋์ญ์ ์์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ ํธ๋์ญ์ ์ธ๋ถ์ ํ์๋์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํธ๋์ญ์
์ด ์ฌ๋ฌ ์ค๋์ ์ฐ๊ธฐ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ์ธ๋ถ ์ฝ๊ธฐ ์์
์ด ์ปค๋ฐ๋ ํธ๋์ญ์
์ ๊ฒฐ๊ณผ๊ฐ ์ค๋ ์ ์ฒด์ ํ์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํธ๋์ญ์
์ด ์ปค๋ฐ๋๊ณ ์ฐ๊ธฐ 1์ด ์ค๋ A์ ํ์๋์ง๋ง ์ฐ๊ธฐ 2๊ฐ ์ค๋ B์ ์์ง ํ์๋์ง ์๋ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "local"
์ ์ธ๋ถ ์ฝ๊ธฐ๋ ์ฐ๊ธฐ 2๋ฅผ ๋ณด์ง ์๊ณ ์ฐ๊ธฐ 1์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
๋ณ๊ฒฝ ์คํธ๋ฆผ
๋ณ๊ฒฝ ์คํธ๋ฆผ ์ ๋ณต์ ๋ณธ ์ธํธ์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณ๊ฒฝ ์คํธ๋ฆผ์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด oplog ๋ฅผ ํ ์ผ๋งํ๋ ๋ณต์ก์ฑ๊ณผ ์ํ ์์ด ์ค์๊ฐ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ก์ธ์ค ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๊ฒฝ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ ํ๋ ์ด์์ ์ปฌ๋ ์ ์ ๋ํ ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ ๊ตฌ๋ ํ ์ ์์ต๋๋ค.
์ถ๊ฐ ๊ธฐ๋ฅ
๋ณต์ ๋ณธ ์ธํธ๋ ์ ํ๋ฆฌ์ผ์ด์
์๊ตฌ ์ฌํญ์ ์ง์ํ๊ธฐ ์ํ ๋ค์ํ ์ต์
์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ์ ๋ฉค๋ฒ๊ฐ ์๋ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๋ฐฐํฌํ๊ฑฐ๋ ์ผ๋ถ ๋ฉค๋ฒ์ members[n].priority
๋ฅผ ์กฐ์ ํ์ฌ ํฌํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ๋ณต์ ๋ณธ ์ธํธ๋ ๋ณด๊ณ , ์ฌํด ๋ณต๊ตฌ ๋๋ ๋ฐฑ์
๊ธฐ๋ฅ์ ์ํ ์ ์ฉ ๊ตฌ์ฑ์๋ ์ง์ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์ฐ์ ์์๊ฐ 0์ธ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ, ์จ๊ฒจ์ง ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ ๋ฐ ์ง์ฐ๋ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐํ์ธ์.
[1] | (1, 2) ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ณต์ ๋ณธ ์ธํธ์ ๋ ๋
ธ๋๊ฐ ์ผ์์ ์ผ๋ก ์์ ์ด ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง, ์ด ์ค ์ต๋ ํ๋๋ง { w:
"majority" } ์ฐ๊ธฐ ๊ณ ๋ ค๋ก ์ฐ๊ธฐ๋ฅผ ์๋ฃ ์ ์์ต๋๋ค. { w: "majority" } ์ฐ๊ธฐ๋ฅผ ์๋ฃํ ์ ์๋ ๋
ธ๋๋ ํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์ด๊ณ , ๋ค๋ฅธ ๋
ธ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋คํธ์ํฌ ํํฐ์
์ผ๋ก ์ธํด ์์ง ๊ฐ๋ฑ์ ์ธ์ํ์ง ๋ชปํ ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์
๋๋ค. ์ด ๊ฒฝ์ฐ ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์ ์ฐ๊ฒฐํ ํด๋ผ์ด์ธํธ๋ ์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ primary ๋ฅผ ์์ฒญํ์์๋ ๋ถ๊ตฌํ๊ณ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ฒ ๋๋ฉฐ, ์ด์ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์ ๋ํ ์๋ก์ด ์ฐ๊ธฐ๋ ๊ฒฐ๊ตญ ๋กค๋ฐฑ๋ฉ๋๋ค. |