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

replSetStepDown

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

  • ์„ค๋ช…
  • ํ˜ธํ™˜์„ฑ
  • ๊ตฌ๋ฌธ
  • ๋ช…๋ น ํ•„๋“œ
  • ํ–‰๋™
  • ์˜ˆ์‹œ
replSetStepDown

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

์ด ๋ช…๋ น์€ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ฆ‰์‹œ ๊ฐ•๋“ฑ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. If no electable secondaries are up to date with the primary, the primary waits up to secondaryCatchUpPeriodSecs (by default 10 seconds) for a secondary to catch up. ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์„ธ์ปจ๋”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋ช…๋ น์ด ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๊ฐ•๋“ฑํ•ฉ๋‹ˆ๋‹ค.

์ผ๋‹จ ์ค‘๋‹จ๋˜๊ณ  ๋‚˜๋ฉด ์›๋ž˜์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ์„ธ์ปจ๋”๋ฆฌ๋กœ ๋ฐ”๋€Œ๋ฉฐ, replSetStepDown: <seconds>(์œผ)๋กœ ์ง€์ •๋œ ๊ธฐ๊ฐ„ ์ค‘ ๋‚จ์€ ์‹œ๊ฐ„ ๋™์•ˆ ๋‹ค์‹œ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์ž๊ฒฉ์„ ์žƒ์Šต๋‹ˆ๋‹ค.

๋ช…๋ น ์‹คํ–‰์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ๋™์ž‘ ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฐธ๊ณ 

์ด ๋ช…๋ น์€ ํ”„๋ผ์ด๋จธ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋งŒ ์œ ํšจํ•˜๋ฉฐ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋ฉค๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํŒ

mongosh์—์„œ ์ด ๋ช…๋ น์„ rs.stepDown() ํ—ฌํผ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ—ฌํผ ๋ฉ”์„œ๋“œ๋Š” mongosh ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ช…๋ น๊ณผ ๋™์ผํ•œ ์ˆ˜์ค€์˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŽธ์˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ๋ฆฌํ„ด ํ•„๋“œ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

replSetStepDown ๋Š” admin ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์€ ๋‹ค์Œ ํ™˜๊ฒฝ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฐฐํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MongoDB Atlas: ํด๋ผ์šฐ๋“œ์—์„œ์˜ MongoDB ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค

์ค‘์š”

์ด ๋ช…๋ น์€ M,0 M, M,2 5M10+ ๋ฐ Flex ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • MongoDB Enterprise: MongoDB์˜ ๊ตฌ๋… ๊ธฐ๋ฐ˜ ์ž์ฒด ๊ด€๋ฆฌ ๋ฒ„์ „

  • MongoDB Community: MongoDB์˜ ์†Œ์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฌด๋ฃŒ ์ž์ฒด ๊ด€๋ฆฌ ๋ฒ„์ „

๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

db.adminCommand(
{
replSetStepDown: <seconds>,
secondaryCatchUpPeriodSecs: <seconds>,
force: <true|false>
}
)

์ด ๋ช…๋ น์€ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ
์œ ํ˜•
์„ค๋ช…

replSetStepDown

์ˆซ์ž

ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๊ฐ•๋“ฑ์‹œํ‚ค๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(์ดˆ)์œผ๋กœ, ์ด ์‹œ๊ฐ„ ๋™์•ˆ์—๋Š” ๊ฐ•๋“ฑ๋œ ๋ฉค๋ฒ„๊ฐ€ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ์ง€์ •ํ•˜๋ฉด ์ด ๋ช…๋ น์ด 60์ดˆ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ•๋“ฑ ๊ธฐ๊ฐ„์€ mongod์ด(๊ฐ€) ๋ช…๋ น์„ ๋ฐ›์€ ์‹œ์ ๋ถ€ํ„ฐ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๊ฐ•๋“ฑ ๊ธฐ๊ฐ„์€ secondaryCatchUpPeriodSecs๋ณด๋‹ค ์ปค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

secondaryCatchUpPeriodSecs

์ˆซ์ž

์„ ํƒ ์‚ฌํ•ญ. mongod ๊ฐ€ ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋”ฐ๋ผ์žก์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

์ง€์ •๋˜๋ฉด secondaryCatchUpPeriodSecs ๊ฐ€ ๊ธฐ๋ณธ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ธ 10 ์ดˆ๋ฅผ ์žฌ์ •์˜ํ•˜๊ณ , force: true ์ธ ๊ฒฝ์šฐ์—๋Š” 0 ์ดˆ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

force

๋ถ€์šธ

์„ ํƒ ์‚ฌํ•ญ. ๋Œ€๊ธฐ ๊ธฐ๊ฐ„ ๋‚ด์— ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์ตœ์‹  ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•๋“ฑํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ถ€์šธ์ž…๋‹ˆ๋‹ค.

true ์ธ ๊ฒฝ์šฐ ์ ํ•ฉํ•œ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๊ฐ€ ์—†๋”๋ผ๋„ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•๋“ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ณต์ œ ์ง€์—ฐ์ด ์žˆ๋Š” ๋ณด์กฐ ์„œ๋ฒ„๊ฐ€ ์ƒˆ ๊ธฐ๋ณธ ์„œ๋ฒ„๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ ๋กค๋ฐฑ ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

false ์ธ ๊ฒฝ์šฐ, ์ ํ•ฉํ•œ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๊ฐ€ ์—†์œผ๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•๋“ฑ๋˜์ง€ ์•Š๊ณ  ๋ช…๋ น์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’์€ false์ž…๋‹ˆ๋‹ค.

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

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

If no electable secondary meets this criterion by the end of the waiting period, the primary does not step down and the command errors. ์ด ๋™์ž‘์„ ์žฌ์ •์˜ํ•˜๊ณ  force: true ์˜ต์…˜์œผ๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ฆ‰์‹œ ๋ฌผ๋Ÿฌ๋‚˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฐ•๋“ฑ๋˜๋ฉด ํ•ด๋‹น ๋…ธ๋“œ๋Š” ๋ช…๋ น์„ ๋ฐ›์€ ์‹œ์ ๋ถ€ํ„ฐ ์‹œ์ž‘๋œ replSetStepDown: <seconds> ๊ธฐ๊ฐ„์˜ ๋‚˜๋จธ์ง€ ๊ธฐ๊ฐ„ ๋™์•ˆ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

replSetStepDown ์ด ๋ช…๋ น์€ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ๋‹ซ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

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

replSetStepDown์ด(๊ฐ€) ์‹คํ–‰๋˜๋ฉด ์ง„ํ–‰ ์ค‘์ด๋˜ ์“ฐ๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ค‘์ธ ํŠธ๋žœ์žญ์…˜ ์—ญ์‹œ TransientTransactionError ๋•Œ๋ฌธ์— ์‹คํŒจํ•˜๋ฉฐ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ตœ๋Œ€ ๊ธฐ๊ฐ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

secondaryCatchUpPeriodSecs (๊ธฐ๋ณธ 10์ดˆ) + electionTimeoutMillis(๊ธฐ๋ณธ 10์ดˆ)

force ํ•„๋“œ๋ฅผ true(์œผ)๋กœ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  rs.stepDown() ๋˜๋Š” replSetStepDown ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๊ฐ•๋“ฑํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ•๋“ฑ๋œ ํ”„๋ผ์ด๋จธ๋ฆฌ๋Š” ์ฆ‰์‹œ ํˆฌํ‘œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์ ๊ฒฉ ์„ธ์ปจ๋”๋ฆฌ๋ฅผ ์ง€๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ”„๋ผ์ด๋จธ๋ฆฌ์—์„œ ์‹คํ–‰๋˜๋Š” ๋‹ค์Œ ์˜ˆ์‹œ๋Š” 120 ์ดˆ ๋™์•ˆ ๋ฉค๋ฒ„๋ฅผ ๊ฐ•๋“ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

The operation waits up to the default 10 seconds for a secondary to catch up. ์ ํ•ฉํ•œ ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•๋“ฑ๋˜์ง€ ์•Š๊ณ  ๋ช…๋ น์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

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

replSetStepDown์ด(๊ฐ€) ์‹คํ–‰๋˜๋ฉด ์ง„ํ–‰ ์ค‘์ด๋˜ ์“ฐ๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ค‘์ธ ํŠธ๋žœ์žญ์…˜ ์—ญ์‹œ TransientTransactionError ๋•Œ๋ฌธ์— ์‹คํŒจํ•˜๋ฉฐ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ตœ๋Œ€ ๊ธฐ๊ฐ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

secondaryCatchUpPeriodSecs (๊ธฐ๋ณธ 10์ดˆ) + electionTimeoutMillis(๊ธฐ๋ณธ 10์ดˆ)

db.adminCommand( { replSetStepDown: 120 } )

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

์ฐธ๊ณ 

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

replSetStepDown์ด(๊ฐ€) ์‹คํ–‰๋˜๋ฉด ์ง„ํ–‰ ์ค‘์ด๋˜ ์“ฐ๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ค‘์ธ ํŠธ๋žœ์žญ์…˜ ์—ญ์‹œ TransientTransactionError ๋•Œ๋ฌธ์— ์‹คํŒจํ•˜๋ฉฐ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ตœ๋Œ€ ๊ธฐ๊ฐ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

secondaryCatchUpPeriodSecs (๊ธฐ๋ณธ 10์ดˆ) + electionTimeoutMillis(๊ธฐ๋ณธ 10์ดˆ)

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15 } )

ํ˜„์žฌ ํ”„๋ผ์ด๋จธ๋ฆฌ์—์„œ ์‹คํ–‰๋˜๋Š” ๋‹ค์Œ ์˜ˆ์ œ๋Š” 120 ์ดˆ ๋™์•ˆ ๋ฉค๋ฒ„๋ฅผ ๊ฐ•๋“ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ , ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ๋”ฐ๋ผ์žก์„ ๋•Œ๊นŒ์ง€ ์ตœ๋Œ€ 15 ์ดˆ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. force: true ์˜ต์…˜์œผ๋กœ ์ธํ•ด ์ ํ•ฉํ•œ ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ์—†๋”๋ผ๋„ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•๋“ฑ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

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

replSetStepDown์ด(๊ฐ€) ์‹คํ–‰๋˜๋ฉด ์ง„ํ–‰ ์ค‘์ด๋˜ ์“ฐ๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰ ์ค‘์ธ ํŠธ๋žœ์žญ์…˜ ์—ญ์‹œ TransientTransactionError ๋•Œ๋ฌธ์— ์‹คํŒจํ•˜๋ฉฐ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ตœ๋Œ€ ๊ธฐ๊ฐ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

secondaryCatchUpPeriodSecs (๊ธฐ๋ณธ 10์ดˆ) + electionTimeoutMillis(๊ธฐ๋ณธ 10์ดˆ)

db.adminCommand( { replSetStepDown: 120, secondaryCatchUpPeriodSecs: 15, force: true } )

ํŒ

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

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

replSetResizeOplog