Docs Menu

๋ณต์ œ

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

MongoDB Atlas์— ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด UI์—์„œ ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

๊ฒฝ๊ณ 

๊ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋…ธ๋“œ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ์—๋งŒ ์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ ๋…ธ๋“œ๋Š” ๋‘˜ ์ด์ƒ์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ์†ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ๋Š” ๋ชจ๋“  ์“ฐ๊ธฐ ์ž‘์—…์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ์—๋Š” { w: "majority" } ์“ฐ๊ธฐ ๊ณ ๋ ค๋กœ ์“ฐ๊ธฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์ž์‹ ์„ ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. [1] ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž‘์—… ๋กœ๊ทธ, ์ฆ‰ oplog์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ ์ž‘์—…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ๋ณธ ์„ธํŠธ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ๋ฉค๋ฒ„๋กœ์˜ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ๊ธฐ๋ณธ ๋ผ์šฐํŒ…์„ ๋‚˜ํƒ€๋‚ธ ๋‹ค์ด์–ด๊ทธ๋žจ
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

์„ธ์ปจ๋”๋ฆฌ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ์˜ oplog๋ฅผ ๋ณต์ œํ•˜๊ณ  ์ž‘์—…์„ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ์ ์šฉํ•˜์—ฌ ์„ธ์ปจ๋”๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ํ”„๋ผ์ด๋จธ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋ฐ˜์˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ์ ๊ฒฉ ์„ธ์ปจ๋”๋ฆฌ๋Š” ํˆฌํ‘œ๋ฅผ ์‹ค์‹œํ•˜์—ฌ ์ž์‹ ์„ ์ƒˆ๋กœ์šด ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ ์„ ์ถœํ•ฉ๋‹ˆ๋‹ค. ์„ธ์ปจ๋”๋ฆฌ ๊ตฌ์„ฑ์›์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ๋ณธ ์„ธํŠธ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ ๋ฉค๋ฒ„ 1๊ฐœ์™€ ๋ณด์กฐ ๋ฉค๋ฒ„ 2๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ 3๋ฉค๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋‹ค์ด์–ด๊ทธ๋žจ

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

๊ธฐ๋ณธ, ๋ณด์กฐ, ์ค‘์žฌ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ณต์ œ ์„ธํŠธ์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

์ค‘์žฌ์ž๋Š” ํ•ญ์ƒ ์ค‘์žฌ์ž ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ์„ ๊ฑฐ ๊ธฐ๊ฐ„ ์ค‘์—๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ํ›„๋ณด๊ฐ€ ๋ฌผ๋Ÿฌ๋‚˜์„œ ์„ธ์ปจ๋”๋ฆฌ ํ›„๋ณด๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ  ์„ธ์ปจ๋”๋ฆฌ ํ›„๋ณด๊ฐ€ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ›„๋ณด๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ์ปจ๋”๋ฆฌ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ์˜ oplog๋ฅผ ๋ณต์ œํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘์—…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ธ์ปจ๋”๋ฆฌ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋ฐ˜์˜ํ•˜๋„๋ก ํ•˜๋ฉด ํ•œ ๋ช… ์ด์ƒ์˜ ๊ตฌ์„ฑ์›์ด ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ณต์ œ๋ณธ ์„ธํŠธ๊ฐ€ ๊ณ„์† ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณต์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ๋ณธ ์„ธํŠธ Oplog ๋ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด์ œ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๊ฐ€ ๋А๋ฆฐ ์ž‘์—… ์ž„๊ณ—๊ฐ’๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” oplog ํ•ญ๋ชฉ์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋А๋ฆฐ oplog ๋ฉ”์‹œ์ง€์˜ ํŠน์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • diagnostic log์— ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„์— ๋Œ€ํ•ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

  • applied op: <oplog entry> took <num>ms ํ…์ŠคํŠธ์™€ ํ•จ๊ป˜ REPL ๊ตฌ์„ฑ ์š”์†Œ ์•„๋ž˜์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

  • ๋กœ๊ทธ ์ˆ˜์ค€(์‹œ์Šคํ…œ ๋˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ ์ˆ˜์ค€)์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํ”„๋กœํŒŒ์ผ๋ง ์ˆ˜์ค€์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • slowOpSampleRate์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋Š” ๋А๋ฆฐ oplog ํ•ญ๋ชฉ์„ ์บก์ฒ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ณต์ œ ์ง€์—ฐ์€ ํ”„๋ผ์ด๋จธ๋ฆฌ์—์„œ ์ด๋ฃจ์–ด์ง„ ์ž‘์—…๊ณผ ๊ทธ ์ž‘์—…์ด oplog์—์„œ ์„ธ์ปจ๋”๋ฆฌ๊นŒ์ง€ ์ ์šฉ๋  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์•ฝ๊ฐ„์˜ ์ง€์—ฐ์€ ํ—ˆ์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณต์ œ ์ง€์—ฐ์ด ์ฆ๊ฐ€ํ•˜๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ์— ์บ์‹œ ๋ถ€ํ•˜๊ฐ€ ๊ฐ€์ค‘๋˜๋Š” ๋“ฑ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

MongoDB 4.2๋ถ€ํ„ฐ ๊ด€๋ฆฌ์ž๋Š” majority committed ์ง€์—ฐ์„ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€๊ฐ’ flowControlTargetLagSeconds์ดํ•˜๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ๊ธฐ๋ณธ์ด ์“ฐ๊ธฐ๋ฅผ ์ ์šฉํ•˜๋Š” ์†๋„๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํ๋ฆ„ ์ œ์–ด๋Š” enabled ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ 

ํ๋ฆ„ ์ œ์–ด๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋ณต์ œ๋ณธ ์„ธํŠธ/์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— 4.2 ์˜ featureCompatibilityVersion(fCV) ๊ณผ majority enabled์˜ ์ฝ๊ธฐ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, fCV๊ฐ€ 4.2 ๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ ์ฝ๊ธฐ ๋ฌธ์ œ ๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ํ™œ์„ฑํ™”๋œ ํ๋ฆ„ ์ œ์–ด๋Š” ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ๋ฆ„ ์ œ์–ด๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด ์ง€์—ฐ์ด flowControlTargetLagSeconds ์— ๊ฐ€๊นŒ์›Œ์ง์— ๋”ฐ๋ผ ๊ธฐ๋ณธ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ๋Š” ์“ฐ๊ธฐ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ž ๊ธˆ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ํ‹ฐ์ผ“์„ ์–ป์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๋‹น ๋ฐœํ–‰๋˜๋Š” ํ‹ฐ์ผ“ ์ˆ˜๋ฅผ ์ œํ•œํ•จ์œผ๋กœ์จ ํ๋ฆ„ ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ง€์—ฐ์„ ๋ชฉํ‘œ ๋ฏธ๋งŒ์œผ๋กœ ์œ ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ ์ง€์—ฐ ํ™•์ธ ๋ฐ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ electionTimeoutMillis์˜ ์‹œ๊ฐ„(๊ธฐ๋ณธ๊ฐ’์€ 10์ดˆ)์„ ์ดˆ๊ณผํ•˜์—ฌ ์„ธํŠธ์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์›๊ณผ ํ†ต์‹ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ ๊ฒฉ ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ์ž์‹ ์„ ์ƒˆ ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ ์ง€๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ํˆฌํ‘œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ƒˆ๋กœ์šด ํ”„๋ผ์ด๋จธ๋ฆฌ ํˆฌํ‘œ๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ์ •์ƒ ์ž‘์—…์„ ์žฌ๊ฐœํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์˜ˆ๋น„ ์„ ๊ฑฐ์˜ ๋‹ค์ด์–ด๊ทธ๋žจ. ๋‘ ๊ฐœ์˜ ๋ณด์กฐ๊ฐ€ ์žˆ๋Š” 3๋ช…์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ ๋ณต์ œ๋ณธ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋…ธ๋“œ๊ฐ€ ์†์‹ค๋˜๋ฉด ๋ณด์กฐ ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ๋ณธ ๋…ธ๋“œ๊ฐ€ ๋˜๋Š” ์„ ํƒ์ด ์ด‰๋ฐœ๋ฉ๋‹ˆ๋‹ค.
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

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

ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ƒˆ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ์ค‘์•™๊ฐ’์€ ๊ธฐ๋ณธ๊ฐ’ 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)' ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฏธ๋Ÿฌ๋ง๋œ ์ฝ๊ธฐ๋Š” ๋‹ค์Œ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • count

  • distinct

  • find

  • 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 } )

MongoDB 4.0๋ถ€ํ„ฐ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋Œ€ํ•ด ๋‹ค์ค‘ ๋ฌธ์„œ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์— ํฌํ•จ๋œ ์ฝ๊ธฐ ์ž‘์—…์€ primary๋กœ ์ฝ๊ธฐ ์„ค์ •์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํŠธ๋žœ์žญ์…˜์˜ ๋ชจ๋“  ์ž‘์—…์€ ๋™์ผํ•œ ๋…ธ๋“œ๋กœ ๋ผ์šฐํŒ…๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋  ๋•Œ๊นŒ์ง€ ํŠธ๋žœ์žญ์…˜์—์„œ ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์žญ์…˜ ์™ธ๋ถ€์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํŠธ๋žœ์žญ์…˜์ด ์—ฌ๋Ÿฌ ์ƒค๋“œ์— ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ชจ๋“  ์™ธ๋ถ€ ์ฝ๊ธฐ ์ž‘์—…์ด ์ปค๋ฐ‹๋œ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ƒค๋“œ ์ „์ฒด์— ํ‘œ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๊ณ  ์“ฐ๊ธฐ 1์ด ์ƒค๋“œ A์— ํ‘œ์‹œ๋˜์ง€๋งŒ ์“ฐ๊ธฐ 2๊ฐ€ ์ƒค๋“œ B์— ์•„์ง ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "local"์˜ ์™ธ๋ถ€ ์ฝ๊ธฐ๋Š” ์“ฐ๊ธฐ 2๋ฅผ ๋ณด์ง€ ์•Š๊ณ  ์“ฐ๊ธฐ 1์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB 3.6๋ถ€ํ„ฐ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์™€ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์ŠคํŠธ๋ฆผ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณต์žกํ•œ ๋ฐฉ์‹ ๋ฐ oplog๋ฅผ ํ…Œ์ผ๋งํ•˜๋Š” ์œ„ํ—˜ ์—†์ด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณ€๊ฒฝ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ๋˜๋Š” ๋ณต์ˆ˜ ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ตฌ๋…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ๋ฉค๋ฒ„์˜ members[n].priority๋ฅผ ์กฐ์ •ํ•˜์—ฌ ํˆฌํ‘œ ๊ฒฐ๊ณผ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ๋Š” ๋ณด๊ณ , ์žฌํ•ด ๋ณต๊ตฌ ๋˜๋Š” ๋ฐฑ์—… ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ์ „์šฉ ๊ตฌ์„ฑ์›๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์šฐ์„  ์ˆœ์œ„๊ฐ€ 0์ธ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„, ์ˆจ๊ฒจ์ง„ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ ๋ฐ ์ง€์—ฐ๋œ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

[1](1, 2) ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋‘ ๋…ธ๋“œ๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ์ž์‹ ์ด ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด ์ค‘ ์ตœ๋Œ€ ํ•˜๋‚˜๋งŒ { w: "majority" } ์“ฐ๊ธฐ ๊ณ ๋ ค๋กœ ์“ฐ๊ธฐ๋ฅผ ์™„๋ฃŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. { w: "majority" } ์“ฐ๊ธฐ๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ๋Š” ํ˜„์žฌ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ์ด๊ณ , ๋‹ค๋ฅธ ๋…ธ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์ธํ•ด ์•„์ง ๊ฐ•๋“ฑ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•œ ์ด์ „ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ด์ „ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ฝ๊ธฐ ๊ธฐ๋ณธ ์„ค์ • primary๋ฅผ ์š”์ฒญํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ฒŒ ๋˜๋ฉฐ, ์ด์ „์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์“ฐ๊ธฐ๋Š” ๊ฒฐ๊ตญ ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค.