replSetStepDown
์ค๋ช
replSetStepDown
๋ณต์ ๋ณธ ์ธํธ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๊ฐ ์ธ์ปจ๋๋ฆฌ ๊ฐ ๋๋๋ก ์ง์ํฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ ๊ฐ ๊ฐ๋ฑ๋ ํ์๋ ์๊ฒฉ์ ๊ฐ์ถ ์ธ์ปจ๋๋ฆฌ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ ํฌํ ๋ฅผ ์น๋ฅด๊ฒ ๋ฉ๋๋ค.
์ด ๋ช ๋ น์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ฆ์ ๊ฐ๋ฑ์ํค์ง ์์ต๋๋ค. If no
electable
secondaries are up to date with the primary, the primary waits up tosecondaryCatchUpPeriodSecs
(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
๋ช
๋ น์ ์ธ๋ฑ์ค ๋น๋, ์ฐ๊ธฐ ์์
๋๋ ๋งต ๋ฆฌ๋์ค ์์
๊ณผ ๊ฐ์ด ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ๋จ๊ณ์ ์ผ๋ก ์ค๋จ๋๋ ๊ฒ์ ์ฐจ๋จํ๋ ์ฅ๊ธฐ ์คํ ์ฌ์ฉ์ ์์
์ ์ข
๋ฃํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ ๊ฒฉ ์ธ์ปจ๋๋ฆฌ์ ๊ฐ์ฉ์ฑ
๊ทธ๋ฐ ๋ค์ ๋ช
๋ น์ ์ธ์ปจ๋๋ฆฌ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ต์ ์ํ๊ฐ ๋ ๋๊น์ง ์ต๋ 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 } )