๋ฌธ์„œ ๋ฉ”๋‰ด
๋ฌธ์„œ ํ™ˆ
/
MongoDB ๋งค๋‰ด์–ผ
/

์ฑ„์›Œ์ง„ ์ปฌ๋ ‰์…˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ

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

  • ํ–‰๋™
  • ์ธ๋ฑ์Šค ์ž‘์„ฑ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ
  • ๋ณต์ œ๋œ ํ™˜๊ฒฝ์—์„œ์˜ ์ธ๋ฑ์Šค ๋นŒ๋“œ
  • ๋นŒ๋“œ ์‹คํŒจ ๋ฐ ๋ณต๊ตฌ
  • ์ง„ํ–‰ ์ค‘์ธ ์ธ๋ฑ์Šค ๋นŒ๋“œ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์ง„ํ–‰ ์ค‘์ธ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ข…๋ฃŒ
  • ์ธ๋ฑ์Šค ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค

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

์ธ๋ฑ์Šค๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋นŒ๋“œ๋˜๊ฑฐ๋‚˜ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๊ฑธ์ณ ๋™์‹œ์— ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ํ‘œ์‹œํ•˜๊ธฐ ์ „์— ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ ๋ณด์œ  ํˆฌํ‘œ ๋ฉค๋ฒ„(์ž์‹  ํฌํ•จ)๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. "ํˆฌํ‘œ" ๋…ธ๋“œ๋Š” members[n].votes์„ค์ •์ด 0๋ณด๋‹ค ํฐ ๋ชจ๋“  ๋ณต์ œ๋ณธ ์„ธํŠธ ๋…ธ๋“œ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ๋œ ํ™˜๊ฒฝ์—์„œ์˜ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

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

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

db.currentOp() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง„ํ–‰ ์ค‘์ธ ์ธ๋ฑ์Šค ๋นŒ๋“œ์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

MongoDB๋Š” createIndexes ๋˜๋Š” ํ•ด๋‹น ์…ธ ํ—ฌํผ์ธ createIndex() ๋ฐ createIndexes()์— ์ง€์ •๋œ background ์ธ๋ฑ์Šค ๋นŒ๋“œ ์˜ต์…˜์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค์–ด ์ฑ„์›Œ์ง„ ์ปฌ๋ ‰์…˜ inventory ์„ ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๊ฐ€ product_sku ํ•„๋“œ์— ๊ณ ์œ  ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ์— product_sku ์— ๋Œ€ํ•ด ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ์œ„๋ฐ˜ ์‚ฌํ•ญ์ด ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋ฉด mongod ๊ฐ€ ๋นŒ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด product_sku ๊ฐ’์„ ์ค‘๋ณตํ•˜์—ฌ inventory ์ปฌ๋ ‰์…˜์— ๋ฌธ์„œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ์œ„๋ฐ˜ ์‚ฌํ•ญ์ด ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋ฉด mongod ๊ฐ€ ๋นŒ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜์œผ๋กœ ์ธํ•œ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์‹คํŒจ ์œ„ํ—˜์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

  • ์ปฌ๋ ‰์…˜ ๋‚ด์˜ ๋ฌธ์„œ๋“ค์ด ์ธ๋ฑ์Šค ์ œ์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์œ„๋ฐ˜ ์—†๋Š” ์“ฐ๊ธฐ ์ž‘์—…์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์“ฐ๊ธฐ๋ฅผ ์ค‘.

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

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์œ„ํ—˜์„ ์ค„์ด๋ ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

  • ์ปฌ๋ ‰์…˜ ๋‚ด์˜ ๋ฌธ์„œ๋“ค์ด ์ธ๋ฑ์Šค ์ œ์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ์œ„๋ฐ˜ ์—†๋Š” ์“ฐ๊ธฐ ์ž‘์—…์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์“ฐ๊ธฐ๋ฅผ ์ค‘.

ํŒ

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

๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„๋Š” ์ตœ๋Œ€ 3๊ฐœ์˜ ๋™์‹œ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ—ˆ์šฉ๋˜๋Š” ๋™์‹œ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด maxNumActiveUserIndexBuilds ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๋™์‹œ์— ์ง„ํ–‰๋˜๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ์˜ ์ˆ˜๊ฐ€ maxNumActiveUserIndexBuilds์— ์˜ํ•ด ์ง€์ •๋œ ํ•œ๋„์— ๋„๋‹ฌํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ์ถ”๊ฐ€ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜๊ณ  ๋™์‹œ ์ธ๋ฑ์Šค ๋นŒ๋“œ์˜ ์ˆ˜๊ฐ€ ํ•œ๋„ ์•„๋ž˜๋กœ ๋–จ์–ด์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

๋Œ€์ƒ ์ปฌ๋ ‰์…˜์— ์“ฐ๊ธฐ ๋ถ€ํ•˜๊ฐ€ ๋งŽ์€ ๊ธฐ๊ฐ„์— ์ธ๋ฑ์Šค๋ฅผ ๋นŒ๋“œํ•˜๋ฉด ์“ฐ๊ธฐ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ  ์ธ๋ฑ์Šค ๋นŒ๋“œ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

maxIndexBuildMemoryUsageMegabytes ์„œ๋ฒ„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์„ ๋†’๊ฒŒ ์„ค์ •ํ•˜๋ฉด ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ๋” ๋นจ๋ฆฌ ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ œํ•œ์„ ์‹œ์Šคํ…œ์˜ ๋ฏธ์‚ฌ์šฉ RAM์— ๋น„ํ•ด ๋„ˆ๋ฌด ๋†’๊ฒŒ ์„ค์ •ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ณ ๊ฐˆ๋˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ RAM์ด ์ œํ•œ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ mongod RAM ์‚ฌ์šฉ๋Ÿ‰์„ ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ์œ ์ง€ ๊ด€๋ฆฌ ๊ธฐ๊ฐ„์„ ์˜ˆ์•ฝํ•˜์—ฌ ์ด ์‹œ์Šคํ…œ RAM์„ ๋Š˜๋ ค์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

featureCompatibilityVersion 4.4 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ mongod ์„ธํŠธ ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐ 4.4 ์—๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ ๊ฐ„์— ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ๋™์‹œ์— ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก featureCompatibilityVersion ์ด ์ด์ƒ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

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

๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค:

  1. ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” createIndexes ๋ช…๋ น์„ ๋ฐ›๊ณ  ์ฆ‰์‹œ "startIndexBuild" oplog ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•˜์—ฌ ์ธ๋ฑ์Šค ๋นŒ๋“œ์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  2. ์„ธ์ปจ๋”๋ฆฌ๋Š” "startIndexBuild" oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•œ ํ›„ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  3. ์ปฌ๋ ‰์…˜์˜ ๋ฐ์ดํ„ฐ ์ธ๋ฑ์‹ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ๊ฐ ๋ฉค๋ฒ„๊ฐ€ ๋นŒ๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ธฐ ์œ„ํ•ด 'ํˆฌํ‘œ'ํ•ฉ๋‹ˆ๋‹ค.

  4. ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„๊ฐ€ ํˆฌํ‘œ ์ฟผ๋Ÿผ์„ ํ™•์ธํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์“ฐ๊ธฐ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  5. ํˆฌํ‘œ ์ฟผ๋Ÿผ์„ ํ™•๋ณดํ•œ ํ›„ ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ์ค‘๋ณต ํ‚ค ์˜ค๋ฅ˜์™€ ๊ฐ™์€ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    • ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ์‚ฌํ•ญ์ด ์—†์œผ๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•˜๊ณ , ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ํ‘œ์‹œํ•œ ํ›„ "commitIndexBuild" oplog ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๊ด€๋ จ " AbortIndexBuild " oplog ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  6. ๋ณด์กฐ ๋…ธ๋“œ๋Š” "commitIndexBuild" oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•˜์—ฌ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

    ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ๋Œ€์‹  "abortIndexBuild" oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•˜๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋นŒ๋“œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋Š” ์ธ๋ฑ์‹ฑ๋˜๋Š” ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ƒค๋“œ์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์ธ๋ฑ์Šค ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š” .

๊ธฐ๋ณธ์ ์œผ๋กœ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋Š” "votingMembers"์˜ ์ฟผ๋Ÿผ ์ปค๋ฐ‹, ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•œ ๋ชจ๋“  ํˆฌํ‘œ ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ด ์•„๋‹Œ ์ฟผ๋Ÿผ ์ปค๋ฐ‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด commitQuorum ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ createIndexes ๋˜๋Š” ํ•ด๋‹น ์…ธ ํ—ฌํผ db.collection.createIndex() ๋ฐ db.collection.createIndexes()๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ง„ํ–‰ ์ค‘์ธ ๋™์‹œ ์ธ๋ฑ์Šค ๋นŒ๋“œ์— ํ•„์š”ํ•œ ์ฟผ๋Ÿผ ์ปค๋ฐ‹์„ ์ˆ˜์ •ํ•˜๋ ค๋ฉด setIndexCommitQuorum ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

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

์ฟผ๋Ÿผ ์ปค๋ฐ‹๊ณผ ์“ฐ๊ธฐ ๊ณ ๋ ค ๊ฐ„์—๋Š” ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค ๋นŒ๋“œ๋Š” ์ฟผ๋Ÿผ ์ปค๋ฐ‹ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ ์ž‘์—…์€ ์“ฐ๊ธฐ ๊ณ ๋ ค ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๊ฐ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋…ธ๋“œ๋Š” ํˆฌํ‘œ๊ถŒ์„ ๊ฐ€์ง„ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

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

์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ์“ฐ๊ธฐ ์ž‘์—…์ด ์ง€์ •๋œ ์ˆ˜์˜ ์ธ์Šคํ„ด์Šค๋กœ ์ „ํŒŒ๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

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

MongoDB 5 ๋ถ€ํ„ฐ ์‹œ์ž‘.0, ํ”„๋ผ์ด๋จธ๋ฆฌ mongod ๊ฐ€ "force" : true ๋กœ ๊นจ๋—ํ•œ shutdown ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ค‘์— SIGTERM ์‹ ํ˜ธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  commitQuorum ์ด ๊ธฐ๋ณธ๊ฐ’ votingMembers ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ง„ํ–‰ ์ƒํ™ฉ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ์—. mongod ๋Š” ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•˜๊ณ  ์ €์žฅ๋œ ์ฒดํฌํฌ์ธํŠธ๋ถ€ํ„ฐ ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

MongoDB 5 ๋ถ€ํ„ฐ ์‹œ์ž‘.0, ์„ธ์ปจ๋”๋ฆฌ mongod ๊ฐ€ "force" : true ๋กœ ๊นจ๋—ํ•œ shutdown ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ค‘์— SIGTERM ์‹ ํ˜ธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  commitQuorum ์ด ๊ธฐ๋ณธ๊ฐ’ votingMembers ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ง„ํ–‰๋ฅ ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋””์Šคํฌ์—. mongod ๋Š” ๋‹ค์‹œ ์‹œ์ž‘๋  ๋•Œ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•˜๊ณ  ์ €์žฅ๋œ ์ฒดํฌํฌ์ธํŠธ๋ถ€ํ„ฐ ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

mongod ๋Š” ๋ณต๊ตฌ ์ค‘์ธ ์ธ๋ฑ์Šค๊ฐ€ ๋นŒ๋“œ๋˜๋Š” ๋™์•ˆ ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mongod ๋ฅผ ๋…๋ฆฝํ˜•์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: replication.replSetName ์ œ๊ฑฐ ๋˜๋Š” ์ฃผ์„ ์ฒ˜๋ฆฌ ๋˜๋Š” --replSetName ์ƒ๋žต) mongod ์—์„œ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๋Š” ์ˆ˜๋™์œผ๋กœ dropped ๋  ๋•Œ๊นŒ์ง€ ์ผ์‹œ ์ค‘์ง€๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ๋นŒ๋“œ ์ค‘์— mongod ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ž‘์—…๊ณผ ๋ชจ๋“  ์ง„ํ–‰ ์ƒํ™ฉ์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค. mongod ์„(๋ฅผ) ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋Š” ๋‹ค์‹œ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๋ฉด createIndex() ์ž‘์—…์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

MongoDB๋Š” ์ง„ํ–‰ ์ค‘์ธ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•˜์—ฌ ๋กค๋ฐฑ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋กค๋ฐฑ์ด ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ๋˜๋Œ๋ฆฌ์ง€ ์•Š์œผ๋ฉด MongoDB๋Š” ๋กค๋ฐฑ์„ ์™„๋ฃŒํ•œ ํ›„ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • ๋กค๋ฐฑ์œผ๋กœ ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ๋˜๋Œ๋ ค์ง„ ๊ฒฝ์šฐ์—๋Š” ๋กค๋ฐฑ ์™„๋ฃŒ ํ›„ ์ธ๋ฑ์Šค๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋“œ๋œ ์ปฌ๋ ‰์…˜์ด ์ผ๊ด€์„ฑ ์—†๋Š” ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์ฒญํฌ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฐ ์ƒค๋“œ์— ์ •ํ™•ํžˆ ๋™์ผํ•œ ์ธ๋ฑ์Šค(์ธ๋ฑ์Šค ์˜ต์…˜ ํฌํ•จ)๊ฐ€ ์—†์„ ๋•Œ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์ž‘์—… ์ค‘์—๋Š” ์ผ๊ด€์„ฑ ์—†๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„์•ผ ํ•˜์ง€๋งŒ,

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

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

config ์„œ๋ฒ„ ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์ƒค๋“œ collection์— ๋Œ€ํ•ด ์ƒค๋“œ ๊ฐ„ ์ธ๋ฑ์Šค ๋ถˆ์ผ์น˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ๊ธฐ์  ๊ฒ€์‚ฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด enableShardedIndexConsistencyCheck ๋ฐ shardedIndexConsistencyCheckIntervalMS ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

serverStatus ๋ช…๋ น์€ config ์„œ๋ฒ„ ํ”„๋ผ์ด๋จธ๋ฆฌ์—์„œ ์‹คํ–‰๋  ๋•Œ ์ธ๋ฑ์Šค ๋ถˆ์ผ์น˜๋ฅผ ๋ณด๊ณ ํ•˜๊ธฐ ์œ„ํ•ด shardedIndexConsistency ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋“œ ์ปฌ๋ ‰์…˜์— ์ธ๋ฑ์Šค๊ฐ€ ์ผ๊ด€๋˜์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ƒค๋“œ์—์„œ ์ผ๊ด€๋˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ธ๋ฑ์Šค ๋นŒ๋“œ ์ž‘์—…์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ์ƒ์„ฑ ์ž‘์—…์— ๋Œ€ํ•œ ํ˜„์žฌ db.currentOp() ์ž‘์—…์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ํ™œ์„ฑ ์ธ๋ฑ์‹ฑ ์ž‘์—… ์˜ mongosh ์˜ˆ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

msg ํ•„๋“œ์—๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ๋‹จ๊ณ„์— ๋Œ€ํ•œ ์™„๋ฃŒ์œจ ์ธก์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ๋™์•ˆ ์ง„ํ–‰๋ฅ ์ด MongoDB ๋กœ๊ทธ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ์ค‘์ง€๋˜์—ˆ๋‹ค๊ฐ€ ์žฌ๊ฐœ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

"msg":"Index build: wrote resumable state to disk",
"msg":"Found index from unfinished build",

dropIndexes ๋ช…๋ น ๋˜๋Š” ํ•ด๋‹น ์…ธ ํ—ฌํผ dropIndex() ๋˜๋Š” dropIndexes()์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง„ํ–‰ ์ค‘์ธ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง„ํ–‰ ์ค‘์ธ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ค‘์ง€๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ณต์ œ ์„ธํŠธ ๋˜๋Š” ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง„ํ–‰ ์ค‘์ธ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ข…๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด killOp๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ์ธ๋ฑ์Šค ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๊ฐ ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

mongod ๋Š” ์ด ์ดˆ๊ธฐ ์ƒํƒœ์—์„œ ์„ธ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ์ดˆ๊ธฐ ์ธ๋ฑ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์ธ๋ฑ์‹ฑ๋˜๋Š” ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์“ฐ๊ธฐ์—์„œ ์ƒ์„ฑ๋œ ํ‚ค๋ฅผ ์ €์žฅํ•˜๋Š” ์ž„์‹œ ํ…Œ์ด๋ธ”('์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”')์ž…๋‹ˆ๋‹ค.

  • ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์„œ์— ๋Œ€ํ•œ ์ž„์‹œ ํ…Œ์ด๋ธ”('์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”')์ž…๋‹ˆ๋‹ค. ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๋Š” ๋ฌธ์„œ์˜ ์ธ๋ฑ์Šค ํ•„๋“œ์— ์ž˜๋ชป๋œ ํ‚ค๊ฐ€ ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ณ ์œ  ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ํ•„๋“œ ๊ฐ’์ด ์ค‘๋ณต๋œ ๋ฌธ์„œ ๋˜๋Š” 2dsphere ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ์ž˜๋ชป๋œ GeoJSON ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ž ๊ธˆ
mongod ์ด(๊ฐ€) ๋ฐฐํƒ€์  X ์ปฌ๋ ‰์…˜ ๋ฝ์„ ์ธํ…ํŠธ ๋ฐฐํƒ€์  IX ๋ฝ์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. mongod ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ์ด ์ž ๊ธˆ์„ ์–‘๋ณดํ•˜์—ฌ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์ž‘์—…์„ ์ค‘๊ฐ„์— ๋ผ์›Œ ๋„ฃ์Šต๋‹ˆ๋‹ค.
์Šค์บ” ์ปฌ๋ ‰์…˜

์ปฌ๋ ‰์…˜์˜ ๊ฐ ๋ฌธ์„œ์— ๋Œ€ํ•ด mongod ๋Š” ํ•ด๋‹น ๋ฌธ์„œ์˜ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ‚ค๋ฅผ ์™ธ๋ถ€ ์ •๋ ฌ๊ธฐ์— ๋คํ”„ํ•ฉ๋‹ˆ๋‹ค.

์ปฌ๋ ‰์…˜ ์Šค์บ” ์ค‘์— ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ํ‚ค๋ฅผ ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋นŒ๋“œ๊ฐ€ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

mongod ๊ฐ€ ์ปฌ๋ ‰์…˜ ์Šค์บ”์„ ์™„๋ฃŒํ•˜๋ฉด ์ •๋ ฌ๋œ ํ‚ค๋ฅผ ์ธ๋ฑ์Šค์— ๋คํ”„ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์ธก ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”

mongod ์€ ์„ ์ž…์„ ์ถœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์„ ๋น„์›๋‹ˆ๋‹ค.

์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์—์„œ ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ํ‚ค๋ฅผ ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ค‘์— ์ปฌ๋ ‰์…˜์— ๊ธฐ๋ก๋œ ๊ฐ ๋ฌธ์„œ์— ๋Œ€ํ•ด mongod ๋Š” ํ•ด๋‹น ๋ฌธ์„œ์˜ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. mongod ๋Š” ์Šค๋ƒ…์ƒท ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ํ‚ค ์ˆ˜์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

ํˆฌํ‘œํ•˜๊ณ  ์ฟผ๋Ÿผ ์ปค๋ฐ‹ ๋Œ€๊ธฐ

๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ mongod ๋Š” ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

mongod ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ปค๋ฐ‹ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ผ์ด๋จธ๋ฆฌ์— 'ํˆฌํ‘œ'๋ฅผ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ํ”„๋ผ์ด๋จธ๋ฆฌ์˜ ๋‚ด๋ถ€ ๋ณต์ œ ์ปฌ๋ ‰์…˜์— "ํˆฌํ‘œ"๋ฅผ ์”๋‹ˆ๋‹ค.

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

mongod ๊ฐ€ ์„ธ์ปจ๋”๋ฆฌ ์ธ ๊ฒฝ์šฐ "commitIndexBuild" ๋˜๋Š” "abortIndexBuild" oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  • mongod ๊ฐ€ "commitIndexBuild" oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•˜๋Š” ๊ฒฝ์šฐ, ์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์˜ ๋ฐฐ์ถœ์„ ์™„๋ฃŒํ•˜๊ณ  ์ธ๋ฑ์Šค ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  • mongod ๊ฐ€ "abortIndexBuild" oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•˜๋ฉด ์ธ๋ฑ์Šค ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๊ณ  ๋นŒ๋“œ ์ž‘์—…์ด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

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

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

mongod ์€(๋Š”) ์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์˜ ๋‚˜๋จธ์ง€ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณ„์† ๋น„์›๋‹ˆ๋‹ค. mongod ๋Š” ์ด ๋‹จ๊ณ„์—์„œ ๋ณต์ œ๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์—์„œ ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ํ‚ค๋ฅผ ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์ž ๊ธˆ
mongod ์€ ์ปฌ๋ ‰์…˜์˜ ๊ณต์œ  S ์ž ๊ธˆ์„ ์ปฌ๋ ‰์…˜์˜ ๋ฐฐํƒ€์  X ์ž ๊ธˆ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปฌ๋ ‰์…˜์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ณต์ œ๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด๋‚˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ช…๋ น์˜ ์ ์šฉ์„ ํฌํ•จํ•˜์—ฌ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์ž‘์—…์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. mongod ๋Š” ์ด ์ž ๊ธˆ์„ ์–‘๋ณดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ” ๋“œ๋กญ

mongod ์€(๋Š”) ์‚ญ์ œํ•˜๊ธฐ ์ „์— ์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์— ๋‚จ์•„ ์žˆ๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ด๋“œ ์“ฐ๊ธฐ ํ…Œ์ด๋ธ”์—์„œ ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‚˜์ค‘์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด๋‹น ํ‚ค๋ฅผ ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ mongod ์—์„œ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์ด ์ง€์ ์—์„œ ์ธ๋ฑ์Šค์—๋Š” ์ปฌ๋ ‰์…˜์— ๊ธฐ๋ก๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ” ์ฒ˜๋ฆฌ

mongod ์ด ํ”„๋ผ์ด๋จธ๋ฆฌ ์ธ ๊ฒฝ์šฐ, ์„ ์ž…์„ ์ถœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์„ ๋น„์›๋‹ˆ๋‹ค.

  • ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์— ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ‚ค๊ฐ€ ์—†๊ฑฐ๋‚˜ ํ…Œ์ด๋ธ”์ด ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ mongod ๋Š” ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๊ณ  "commitIndexBuild" oplog ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ณด์กฐ ๋…ธ๋“œ๋Š” oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•œ ํ›„ ๊ด€๋ จ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์˜ ํ‚ค์—์„œ ์—ฌ์ „ํžˆ ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ mongod ์—์„œ ๋นŒ๋“œ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. mongod ๋Š” ๋ณด์กฐ ๋…ธ๋“œ๊ฐ€ ์ธ๋ฑ์Šค ๋นŒ๋“œ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ํ๊ธฐํ•ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด€๋ จ "abortIndexBuild" oplog ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

mongod ๊ฐ€ ์„ธ์ปจ๋”๋ฆฌ ์ธ ๊ฒฝ์šฐ ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ ๋Š” "commitOplogEntry" oplog ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์ œ์•ฝ ์กฐ๊ฑด ์œ„๋ฐ˜ ํ…Œ์ด๋ธ”์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋น„์›Œ์•ผ ํ•˜๋ฏ€๋กœ ์„ธ์ปจ๋”๋ฆฌ๋Š” ์œ„๋ฐ˜์ด ์—†๋‹ค๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค์„ ์ค€๋น„๋จ์œผ๋กœ ํ‘œ์‹œ

mongod ๋Š” ์ธ๋ฑ์Šค ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ž ๊ธˆ
mongod ์€ ์ปฌ๋ ‰์…˜์˜ X ์ž ๊ธˆ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

ํŒ

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

โ†ย ๊ธฐ์กด ์ธ๋ฑ์Šค๋ฅผ ๊ณ ์œ  ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜