Skip to content

Latest commit

ย 

History

History
31 lines (26 loc) ยท 1.85 KB

File metadata and controls

31 lines (26 loc) ยท 1.85 KB

MongoDB์˜ CreateIndex - ๋ ˆํ”Œ๋ฆฌ์นด์…‹์˜ ๋กค๋ง ์ธ๋ฑ์Šค ๋นŒ๋“œ

๋ ˆํ”Œ๋ฆฌ์นด์…‹์œผ๋กœ ๊ตฌ์„ฑ๋œ MongoDB์—์„œ์˜ ์ธ๋ฑ์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•

๋กค๋ง ์ธ๋ฑ์Šค ๋นŒ๋“œ(Rolling Index Build)

  • ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋…ธ๋“œ๋งŒ ์ค‘๋‹จ์‹œํ‚ด
  • ์„ธ์ปจ๋”๋ฆฌ(์ •ํ™•ํžˆ๋Š” ๋ ˆํ”Œ๋ฆฌ์นด์…‹ ๋‘๋ฒˆ์งธ ๋…ธ๋“œ)๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ•ด๋‹น ๋…ธ๋“œ์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๋นŒ๋“œ

์ž‘์—… ์ˆœ์„œ

  1. ์„ธ์ปจ๋”๋ฆฌ ๋…ธ๋“œ ์„ค์ •
    1. ์„ธ์ปจ๋”๋ฆฌ ๋…ธ๋“œ๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ๋ชจ๋“œ๋กœ ์„ค์ • rs.stepDown() -> ์ด ์ƒํƒœ์—์„œ ์„ธ์ปจ๋”๋ฆฌ ๋…ธ๋“œ๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ๋Œ€์‹  ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์—…, ์ธ๋ฑ์Šค ์ƒ์„ฑ๋งŒ ๊ด€๋ฆฌ
    2. ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ ๊ด€๋ฆฌ -> ์„ธ์ปจ๋”๋ฆฌ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ๋ถ€ํ„ฐ oplog ๊ณ„์† ์ˆ˜์‹  -> oplog ๋ˆ„์ ๋œ ๊ฒƒ์„ ์žฌ์ ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์œ ์ง€ํ•จ
    3. MongoDB 4.2 ์ด์ „์—๋Š” ์ธ๋ฑ์Šค ์ƒ์„ฑ ์‹œ ์ „์ฒด ์ปฌ๋ ‰์…˜์— ๋ฝ์„ ๊ฑธ์—ˆ์—ˆ์Œ -> ์ดํ›„ ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„์ฐจ๋‹จ(non-blocking) ์ „๋žต์„ ์‚ฌ์šฉ
      • **๊ธฐ๋ณธ: ๊ณต์œ  ๋ฝ(Shared Lock)**์œผ๋กœ ์ž‘์—… ์ค‘ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ๋ฅผ ํ—ˆ์šฉ.
      • ๋‹จ๊ณ„์  ๋นŒ๋“œ ์ฒ˜๋ฆฌ: ์ผ๋ถ€ ๋ฐ์ดํ„ฐ ์ฒญํฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฝ์„ ํ•ด์ œํ•˜๋ฉฐ ๋‹ค์Œ ์ฒญํฌ๋กœ ์ด๋™.
    4. ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ
    5. ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋…ธ๋“œ ๋ณต๊ตฌ ํ›„ ๋‹ค์Œ ์„ธ์ปจ๋”๋ฆฌ๋กœ ์ด๋™ -> ์„ธ์ปจ๋”๋ฆฌ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ์ƒํƒœ๋ฅผ ์žฌ๋™๊ธฐํ™” ํ•ด์„œ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•จ
  2. Primary ๋…ธ๋“œ ์ฒ˜๋ฆฌ
    1. ์„ธ์ปจ๋”๋ฆฌ ๋…ธ๋“œ๋“ค ์ž‘์—… ์™„๋ฃŒ๋˜๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์„ธ์ปจ๋”๋ฆฌ๋กœ ๊ฐ•๋“ฑ ํ›„ ์ž‘์—… ์ˆ˜ํ–‰ -> ๋‹ค๋ฅธ ์„ธ์ปจ๋”๋ฆฌ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ ์Šน๊ฒฉ๋จ
    2. ์ž‘์—… ์™„๋ฃŒ ํ›„ ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋‹ค์‹œ ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ ๋ณต๊ตฌ
// Secondary ๋…ธ๋“œ ์œ ์ง€๋ณด์ˆ˜ ๋ชจ๋“œ
rs.secondaryOk(); 
db.getMongo().setSlaveOk(); // Secondary์—์„œ ์ž‘์—… ๊ฐ€๋Šฅ

// ์ธ๋ฑ์Šค ์ƒ์„ฑ
db.collection.createIndex({ field: 1 });

// ์ž‘์—… ํ›„ ๋ณต๊ตฌ
rs.slaveOk(false);