Docs Menu
Docs Home
/
MongoDB ๋งค๋‰ด์–ผ
/

๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”

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

  • ์ดˆ๊ธฐ ๋™๊ธฐํ™”
  • ๋ณต์ œ

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

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค local ๋Š” ์ดˆ๊ธฐ ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค ์—์„œ ์‚ฌ์šฉํ•˜๋Š” oplog ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ ๋ฉค๋ฒ„์˜ local ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์— ์ดˆ๊ธฐ ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค ๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ oplog ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ดˆ๊ธฐ ๋™๊ธฐํ™” ์ค‘์— MongoDB๋Š” ๋Œ€์ƒ ๋ฉค๋ฒ„์˜ oplog๋ฅผ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ oplog ์ž˜๋ฆผ์€ oplog ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๋ณ€๊ฒฝ ์ŠคํŠธ๋ฆผ๊ณผ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

initialSyncSourceReadPreference ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํ˜ธํ•˜๋Š” ์ดˆ๊ธฐ ๋™๊ธฐํ™” ์†Œ์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” mongod์„(๋ฅผ) ์‹œ์ž‘ํ•  ๋•Œ๋งŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB 5.2๋ถ€ํ„ฐ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋Š” ๋…ผ๋ฆฌ์  ๋™๊ธฐํ™” ๋˜๋Š” ํŒŒ์ผ ๋ณต์‚ฌ ๊ธฐ๋ฐ˜ ๋™๊ธฐํ™” ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ์  ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด MongoDB๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œํ•˜๋ ค๋ฉด mongod ๊ฐ€ ๊ฐ ์†Œ์Šค ๋ฉค๋ฒ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ ๋ชจ๋“  ์ปฌ๋ ‰์…˜ ์„ ์Šค์บ”ํ•˜๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋Ÿฌํ•œ ์ปฌ๋ ‰์…˜์˜ ์ž์ฒด ๋ณต์‚ฌ๋ณธ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  2. ๊ฐ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ๋ฌธ์„œ๊ฐ€ ๋ณต์‚ฌ๋  ๋•Œ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ์ค‘์— ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ oplog ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋Œ€์ƒ ๋ฉค๋ฒ„์˜ local ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์— ์ด ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ ๋‹จ๊ณ„ ๋™์•ˆ ์ด๋Ÿฌํ•œ oplog ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅ ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

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

์ดˆ๊ธฐ ๋™๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋…ธ๋“œ๊ฐ€ STARTUP2์ƒํƒœ์—์„œ SECONDARY๋กœ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์ž์ฒด ๊ด€๋ฆฌํ˜• ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ฉค๋ฒ„ ์žฌ๋™๊ธฐํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB Enterprise์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ๋ณต์‚ฌ ๊ธฐ๋ฐ˜ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŒŒ์ผ์„ ๋ณต์‚ฌ ๋ฐ ์ด๋™ํ•˜์—ฌ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋™๊ธฐํ™” ๋ฐฉ๋ฒ•์€ ๋…ผ๋ฆฌ์  ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋ณด๋‹ค ๋น ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์š”

ํŒŒ์ผ ๋ณต์‚ฌ๋ณธ ๊ธฐ๋ฐ˜ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋กœ ์ธํ•ด ๋ถ€์ •ํ™•ํ•œ ์นด์šดํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ๋ณต์‚ฌ ๊ธฐ๋ฐ˜ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ์ฟผ๋ฆฌ ์กฐ๊ฑด์ž ์—†์ด count() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ˜ํ™˜๋˜๋Š” ๋ฌธ์„œ ์ˆ˜๊ฐ€ ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์กฐ๊ฑด์ž๊ฐ€ ์—†๋Š” count ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค: db.<collection>.count().

์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ฟผ๋ฆฌ ์กฐ๊ฑด์ž(predicate)๊ฐ€ ์—†๋Š” ๋ถ€์ •ํ™•ํ•œ ์นด์šดํŠธ๋ฅผ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒŒ์ผ ๋ณต์‚ฌ ๊ธฐ๋ฐ˜ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด, ์ดˆ๊ธฐ ๋™๊ธฐํ™” ๋Œ€์ƒ ๋…ธ๋“œ์—์„œ initialSyncMethod ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ fileCopyBased ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‹œ์ž‘ ๋‹จ๊ณ„์—์„œ๋งŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

ํŒŒ์ผ ๋ณต์‚ฌ ๊ธฐ๋ฐ˜ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ๋Š” ๋™๊ธฐํ™” ์‹œ ๋Œ€์ƒ ๋ฉค๋ฒ„์˜ local ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฅผ ์†Œ์Šค ๋ฉค๋ฒ„์˜ local ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ๋ณต์‚ฌ ๊ธฐ๋ฐ˜ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ์ค‘์ž…๋‹ˆ๋‹ค:

    • ์†Œ์Šค ๋ฉค๋ฒ„๋‚˜ ๋Œ€์ƒ ๋ฉค๋ฒ„ ๋ชจ๋‘์—์„œ ๋ฐฑ์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    • ๋Œ€์ƒ ๋ฉค๋ฒ„์˜ local ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ์ดˆ๊ธฐ ๋™๊ธฐํ™” ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์†Œ์Šค ๋ฉค๋ฒ„์—์„œ๋งŒ ์‹คํ–‰ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•”ํ˜ธํ™”๋จ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์„ ์‚ฌ์šฉํ•  ๋•Œ MongoDB ๋Š” ์†Œ์Šค ๋ฉค๋ฒ„ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ์„ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

Atlas ์ž๋™ ํ™•์žฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋กœ์ปฌ NVMe(Non-Volatile Memory Express) SSD ์ €์žฅ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Atlas NVMe ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ €์žฅ ๊ณต๊ฐ„์˜ 90%๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ๋‹ค์Œ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ ์ž๋™ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋Š” ํ›„์† ๋™๊ธฐํ™”์— ๋น„ํ•ด ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ๋™๊ธฐํ™”์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

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

์ดˆ๊ธฐ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์ƒ ๋…ธ๋“œ๋Š” ์ผ์‹œ์ ์ธ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜, ์ปฌ๋ ‰์…˜ ์ œ๊ฑฐ ๋˜๋Š” ์ปฌ๋ ‰์…˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ ๋‹ค์‹œ ๋™๊ธฐํ™”๋ฅผ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’ ๋Œ€์ƒ ๋ฉค๋ฒ„๋Š” 24 ์‹œ๊ฐ„ ๋™์•ˆ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ๋ฅผ ์žฌ๊ฐœํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. initialSyncTransientErrorRetryPeriodSeconds ์„œ๋ฒ„ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ ๋ฉค๋ฒ„๊ฐ€ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ๋ฅผ ์žฌ๊ฐœํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ƒ ๊ตฌ์„ฑ์›์ด ๊ตฌ์„ฑ๋œ ๊ธฐ๊ฐ„ ๋™์•ˆ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์žฌ๊ฐœํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ์—์„œ ์ƒˆ๋กœ์šด ์ •์ƒ ์†Œ์Šค ๊ตฌ์„ฑ์›์„ ์„ ํƒํ•˜๊ณ  ์ดˆ๊ธฐ ๋™๊ธฐํ™” ํ”„๋กœ์„ธ์Šค ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์„ธ์ปจ๋”๋ฆฌ๋Š” ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ์ตœ๋Œ€ 10๋ฒˆ๊นŒ์ง€ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ๋™๊ธฐํ™” ์†Œ์Šค ์„ ํƒ์€ mongod ์Šคํƒ€ํŠธ์—… ๋งค๊ฐœ ๋ณ€์ˆ˜ initialSyncSourceReadPreference์˜ ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  • ๋กœ ์„ค์ •ํ•˜๋‹ค initialSyncSourceReadPreference primary chainingAllowed ์˜ ๊ฒฝ์šฐ( ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’ ), ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฅผ ์†Œ์Šค ๋ฉค๋ฒ„๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋กœ๊ทธ ํ•˜๊ณ  ์ฃผ๊ธฐ์ ์œผ๋กœ ํ”„๋ผ์ด๋จธ๋ฆฌ ๊ฐ€์šฉ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • ๋กœ ์„ค์ •ํ•˜๋‹ค ์˜ ๊ฒฝ์šฐ(ํˆฌํ‘œํ•˜๋Š” initialSyncSourceReadPreference ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์˜ primaryPreferred ๊ธฐ๋ณธ๊ฐ’ ), ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฅผ ์†Œ์Šค ๋ฉค๋ฒ„๋กœ ์„ ํƒํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ ์ค‘์—์„œ ๋™๊ธฐํ™” ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • ์ง€์›๋˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์ฝ๊ธฐ ๋ชจ๋“œ์˜ ๊ฒฝ์šฐ ๋Œ€์ƒ ๋ฉค๋ฒ„์—์„œ ๋™๊ธฐํ™” ์†Œ์Šค ๋ฉค๋ฒ„ ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ์†Œ์Šค ๋ฉค๋ฒ„ ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉค๋ฒ„๋Š” ๋ชจ๋“  ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ ๋ชฉ๋ก์„ ๋‘ ๋ฒˆ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.

๋ฉค๋ฒ„๋Š” ์ดˆ๊ธฐ ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ ํŒจ์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๋‹ค์Œ ๊ธฐ์ค€์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” PRIMARY ๋˜๋Š” ๋ณต์ œ ์ƒํƒœ ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค .SECONDARY

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์˜จ๋ผ์ธ ์ด๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • initialSyncSourceReadPreference ๊ฐ€ secondary ๋˜๋Š” ์ธ ๊ฒฝ์šฐ ์†Œ์Šค secondaryPreferred ๋ฉค๋ฒ„๋Š” ์„ธ์ปจ๋”๋ฆฌ ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • ์†Œ์Šค ๋ฉค๋ฒ„๊ฐ€ visible๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ์˜ ์ตœ์‹  oplog ํ•ญ๋ชฉ์œผ๋กœ๋ถ€ํ„ฐ 30์ดˆ ์ด๋‚ด์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • builds indexes ๋ฉค๋ฒ„์ธ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋นŒ๋“œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • votes ๋ฉค๋ฒ„๊ฐ€ ๋ณต์ œ๋ณธ ์„ธํŠธ ํˆฌํ‘œ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๋„ ํˆฌํ‘œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • ๋ฉค๋ฒ„๊ฐ€ ์ด delayed member ์•„๋‹Œ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๊ฐ€ ์ง€์—ฐ ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉค๋ฒ„ ๊ฐ€ delayed member ์ธ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„์˜ ๊ตฌ์„ฑ๋œ ์ง€์—ฐ์ด ๋” ์งง์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ํ˜„์žฌ ์ตœ์ƒ์˜ ๋™๊ธฐํ™” ์†Œ์Šค๋ณด๋‹ค ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค .

์ฒซ ๋ฒˆ์งธ ์ „๋‹ฌ ํ›„์—๋„ ํ›„๋ณด ์†Œ์Šค ๋ฉค๋ฒ„๊ฐ€ ๋‚จ์•„ ์žˆ์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ๋ฉค๋ฒ„๋Š” ์™„ํ™”๋œ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๋ฒˆ์งธ ์ „๋‹ฌ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Sync Source Selection (Second Pass) ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฉค๋ฒ„๋Š” ์ดˆ๊ธฐ ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๋‹ค์Œ ๊ธฐ์ค€์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” PRIMARY ๋˜๋Š” ๋ณต์ œ ์ƒํƒœ ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค .SECONDARY

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์˜จ๋ผ์ธ ์ด๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • initialSyncSourceReadPreference secondary๊ฐ€ ์ธ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์„ธ์ปจ๋”๋ฆฌ ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • builds indexes ๋ฉค๋ฒ„์ธ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋นŒ๋“œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ํ˜„์žฌ ์ตœ์ƒ์˜ ๋™๊ธฐํ™” ์†Œ์Šค๋ณด๋‹ค ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค .

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

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

์ƒˆ oplogํ•ญ๋ชฉ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก oplog์˜ ํฌ๊ธฐ๋ฅผ ๋„‰๋„‰ํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ ๋™๊ธฐํ™” ๋™์•ˆ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€๋น„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ Oplog ํฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

๋Œ€์ƒ ๋ฉค๋ฒ„๋Š” ๋‹ค๋ฅธ ๋ฉค๋ฒ„์˜ ํ•‘ ์‹œ๊ฐ„ ๋ฐ ๋ณต์ œ ์ƒํƒœ ์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ํ•„์š”์— ๋”ฐ๋ผ ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ๋ฉค๋ฒ„ ์„ ํƒ ๊ธฐ์ค€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ ๋™๊ธฐํ™” ์†Œ์Šค ์„ ํƒ ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์†Œ์Šค ๋ฉค๋ฒ„๋Š” ๋Œ€์ƒ ๋ฉค๋ฒ„์—๊ฒŒ ์ง€์†์ ์ธ oplog ํ•ญ๋ชฉ ์ŠคํŠธ๋ฆผ ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆฌ๋ฐ ๋ณต์ œ ๋Š” ๋ถ€ํ•˜๊ฐ€ ๋†’๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ธด ๋„คํŠธ์›Œํฌ์—์„œ ๋ณต์ œ ์ง€์—ฐ ์„ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ณด์กฐ ๋ฐ์ดํ„ฐ์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ์˜ ๋ถ€์‹คํ•จ์„ ๊ฐ์†Œ.

  • ํ”„๋ผ์ด๋จธ๋ฆฌ ํŽ˜์ผ์˜ค๋ฒ„๋กœ ์ธํ•ด w: 1 ์„ค์ •์œผ๋กœ ์“ฐ๊ธฐ ์ž‘์—…์ด ์†์‹ค๋  ์œ„ํ—˜์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

  • w: "majority" ๋ฐ w: >1(์ฆ‰, ๋ณต์ œ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๋ชจ๋“  ์“ฐ๊ธฐ ๊ณ ๋ ค)์„ ์‚ฌ์šฉํ•œ ์“ฐ๊ธฐ ์ž‘์—…์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ž…๋‹ˆ๋‹ค.

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

MongoDB๋Š” ๋™์‹œ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์“ฐ๊ธฐ ์ž‘์—…์„ ๋ฐฐ์น˜๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. MongoDB๋Š” ๋ฌธ์„œ ID(WiredTiger)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์น˜๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ณ , ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์ž‘์—… ๊ทธ๋ฃน์„ ๋™์‹œ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. MongoDB๋Š” ํ•ญ์ƒ ํŠน์ • ๋ฌธ์„œ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์ž‘์—…์„ ์›๋ž˜ ์“ฐ๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์ž‘์—…์ด ์„ธ์ปจ๋”๋ฆฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  "local" ๋˜๋Š” "majority"์˜ ์ฝ๊ธฐ ๊ณ ๋ ค ์ˆ˜์ค€์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ, ๋ณต์ œ ๋ฐฐ์น˜๊ฐ€ ์ ์šฉ๋˜๋Š” ์„ธ์ปจ๋”๋ฆฌ์— ์ฝ๊ธฐ๊ฐ€ ์ˆ˜ํ–‰๋  ๋•Œ ๋ฐ์ดํ„ฐ์˜ WiredTiger ์Šค๋ƒ…์ƒท์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

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

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

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

์ฐธ๊ณ 

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

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

๋ณต์ œ ์†Œ์Šค ๋ฉค๋ฒ„ ์„ ํƒ์€ ๋ณต์ œ๋ณธ ์„ธํŠธ chaining ์„ค์ •์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  • ์ฒด์ธ์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ(๊ธฐ๋ณธ๊ฐ’)์—์„œ ๋Œ€์ƒ ๋ฉค๋ฒ„์—์„œ ์†Œ์Šค ๋ฉค๋ฒ„ ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

๋ณต์ œ ์†Œ์Šค ๋ฉค๋ฒ„ ์„ ํƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉค๋ฒ„๋Š” ๋ชจ๋“  ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ ๋ชฉ๋ก์„ ๋‘ ๋ฒˆ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.

๋ฉค๋ฒ„๋Š” ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ ์ „๋‹ฌ์„ ๋งŒ๋“ค ๋•Œ ๊ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๋‹ค์Œ ๊ธฐ์ค€์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” PRIMARY ๋˜๋Š” ๋ณต์ œ ์ƒํƒœ ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค .SECONDARY

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์˜จ๋ผ์ธ ์ด๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ํ•ด๋‹น ๋ฉค๋ฒ„๋ณด๋‹ค ์ตœ์‹  oplog ํ•ญ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ์ฆ‰, ์†Œ์Šค ๋ฉค๋ฒ„๊ฐ€ ๋ฉค๋ฒ„ ๋ณด๋‹ค ์•ž์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๊ฐ€ visible๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ์˜ ์ตœ์‹  oplog ํ•ญ๋ชฉ์œผ๋กœ๋ถ€ํ„ฐ 30์ดˆ ์ด๋‚ด์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • builds indexes ๋ฉค๋ฒ„์ธ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋นŒ๋“œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • votes ๋ฉค๋ฒ„๊ฐ€ ๋ณต์ œ๋ณธ ์„ธํŠธ ํˆฌํ‘œ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๋„ ํˆฌํ‘œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • ๋ฉค๋ฒ„๊ฐ€ ์ด delayed member ์•„๋‹Œ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๊ฐ€ ์ง€์—ฐ ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฉค๋ฒ„ ๊ฐ€ delayed member ์ธ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„์˜ ๊ตฌ์„ฑ๋œ ์ง€์—ฐ์ด ๋” ์งง์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ํ˜„์žฌ ์ตœ์ƒ์˜ ๋™๊ธฐํ™” ์†Œ์Šค๋ณด๋‹ค ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค .

์ฒซ ๋ฒˆ์งธ ์ „๋‹ฌ ์ดํ›„์— ํ›„๋ณด ์†Œ์Šค ๋ฉค๋ฒ„๊ฐ€ ๋‚จ์•„ ์žˆ์ง€ ์•Š์œผ๋ฉด ๋ฉค๋ฒ„๋Š” ์™„ํ™”๋œ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๋ฒˆ์งธ ์ „๋‹ฌ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Sync Source Selection (Second Pass) ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฉค๋ฒ„๋Š” ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๋‹ค์Œ ๊ธฐ์ค€์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” PRIMARY ๋˜๋Š” ๋ณต์ œ ์ƒํƒœ ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค .SECONDARY

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์˜จ๋ผ์ธ ์ด๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค .

  • builds indexes ๋ฉค๋ฒ„์ธ ๊ฒฝ์šฐ ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋นŒ๋“œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค ๋ฉค๋ฒ„๋Š” ํ˜„์žฌ ์ตœ์ƒ์˜ ๋™๊ธฐํ™” ์†Œ์Šค๋ณด๋‹ค ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค .

๋‘ ๋ฒˆ ํ†ต๊ณผํ•œ ํ›„์—๋„ ๋ฉค๋ฒ„๊ฐ€ ๋™๊ธฐํ™” ์†Œ์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋กœ๊น…ํ•˜๊ณ  1์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์„ ํƒ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„๋‹น ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ํšŸ์ˆ˜๋Š” maxNumSyncSourceChangesPerHour ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ดˆ๊ธฐ ๋™๊ธฐํ™” ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์„ ํƒํ•  ๋•Œ ์Šคํƒ€ํŠธ์—… ๋งค๊ฐœ๋ณ€์ˆ˜ initialSyncSourceReadPreference ๊ฐ€ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ settings.chainingAllowed ์„ค์ •๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๊ฐ€ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ ํ›„์—๋Š” ์†Œ์Šค ๋ฉค๋ฒ„๋ฅผ ์„ ํƒํ•  ๋•Œ chainingAllowed ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ๋™๊ธฐํ™” ์†Œ์Šค ์„ ํƒ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ดˆ๊ธฐ ๋™๊ธฐํ™” ์†Œ์Šค ์„ ํƒ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋Œ์•„๊ฐ€๊ธฐ

Oplog

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