๋ณต์ ์ธํธ ๋ฌธ์ ํด๊ฒฐ
์ด ํ์ด์ง์ ๋ด์ฉ
์ด ์น์ ์์๋ ๋ณต์ ๋ณธ ์ธํธ ๋ฐฐํฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ ๋ต์ ๋ํด ์ค๋ช ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ์ํ ํ์ธ
๋ณต์ ๋ณธ ์ธํธ์ ํ์ฌ ์ํ์ ๊ฐ ๋ฉค๋ฒ์ ํ์ฌ ์ํ๋ฅผ ํ์ํ๋ ค๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐ๋ mongosh
์ธ์
์์ rs.status()
๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค. rs.status()
๊ฐ ํ์ํ๋ ์ ๋ณด์ ๋ํ ์ค๋ช
์ replSetGetStatus๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฐธ๊ณ
rs.status()
๋ฉ์๋๋ replSetGetStatus
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช
๋ น์ ์คํํ๋ ๋ํผ(wrapper)์
๋๋ค.
๋ณต์ ์ง์ฐ ํ์ธ
๋ณต์ ์ง์ฐ์ ํ๋ผ์ด๋จธ๋ฆฌ์์ ์์ ๊ณผ oplog์์ ์ธ์ปจ๋๋ฆฌ๋ก์ ์์ ์ ์ฉ ๊ฐ์ ์ง์ฐ์ ๋๋ค. ๋ณต์ ์ง์ฐ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ ์ ์์ผ๋ฉฐ MongoDB ๋ณต์ ๋ณธ ์ธํธ ๋ฐฐํฌ์ ์ฌ๊ฐํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ณต์ ์ง์ฐ์ด ๋๋ฌด ์ฌํ๋ฉด '์ง์ฐ๋' ๋ฉค๋ฒ๊ฐ ์ ์ํ๊ฒ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๊ฐ ๋ ์ ์๊ฒ ๋๊ณ ๋ถ์ฐ ์ฝ๊ธฐ ์์ ์ด ์ผ๊ด๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋๋ค.
ํ์ฌ ๋ณต์ ์ง์ฐ ์๊ฐ์ ํ์ธํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐ๋
mongosh
์ธ์ ์์rs.printSecondaryReplicationInfo()
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.๊ฐ ๋ฉค๋ฒ์ ๋ํ
syncedTo
๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด ๊ฐ์ ๋ค์ ์์ ์ ๊ฐ์ด ๋ง์ง๋ง oplog ํญ๋ชฉ์ด ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ ๊ธฐ๋ก๋ ์๊ฐ์ ๋ณด์ฌ์ค๋๋ค.source: m1.example.net:27017 syncedTo: Thu Apr 10 2014 10:27:47 GMT-0400 (EDT) 0 secs (0 hrs) behind the primary source: m2.example.net:27017 syncedTo: Thu Apr 10 2014 10:27:47 GMT-0400 (EDT) 0 secs (0 hrs) behind the primary ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ์ ๋นํ์ฑ ๊ธฐ๊ฐ์ด
members[n].secondaryDelaySecs
๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ ์ง์ฐ๋ ๋ฉค๋ฒ๋ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ณด๋ค0
์ด ๋ค์ฒ์ง ๊ฒ์ผ๋ก ํ์๋ ์ ์์ต๋๋ค.์ฐธ๊ณ
rs.status()
๋ฉ์๋๋replSetGetStatus
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋ น์ ๊ฐ์ธ๋ ๋ํผ(wrapper)์ ๋๋ค.MongoDB 7.0 (๋ฐ 6.0.13)๋ถํฐ 5.0.24), ๋๋ฆฐ ์ฟผ๋ฆฌ ๋ก๊ทธ ๋ฉ์์ง์
totalOplogSlotDurationMicros
๋ ์ฐ๊ธฐ ์์ ์์ ์ปค๋ฐ ํ์์คํฌํ๋ฅผ ๊ฐ์ ธ์ ์คํ ๋ฆฌ์ง ์์ง ์ฐ๊ธฐ๋ฅผ ์ปค๋ฐํ ํ ์ค์ ๋ก ์ปค๋ฐํ๊ธฐ๊น์ง์ ์๊ฐ์ ๋ณด์ฌ์ค๋๋ค.mongod
๋ ๋ณ๋ ฌ ์ฐ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ปค๋ฐ ํ์์คํฌํ๊ฐ ์๋ ์ฐ๊ธฐ ์์ ์ ์์์ ๊ด๊ณ์์ด ์ปค๋ฐํฉ๋๋ค.์์
์ปค๋ฐ ํ์์คํฌํ๊ฐ ์๋ ๋ค์ ์ฐ๊ธฐ๋ฅผ ์๊ฐํด ๋ณด์ธ์.
ํ์์คํฌํ1์ด ์๋ writeA
ํ์์คํฌํ2๋ฅผ ์ฌ์ฉํ writeB
ํ์์คํฌํ3์ ์ฌ์ฉํ writeC
writeB๊ฐ Timestamp2์์ ์ฒ์์ผ๋ก ์ปค๋ฐํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ณต์ ์์ oplog๋ฅผ ๋ณด์กฐ ๋ณต์ ์ธํธ ๋ฉค๋ฒ๋ก ๋ณต์ ํ๋ ค๋ฉด Timestamp1์ด ํฌํจ๋ WriteA์ oplog ํญ๋ชฉ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ WriteA๊ฐ ์ปค๋ฐํ ๋๊น์ง ๋ณต์ ๊ฐ ์ผ์ ์ค์ง๋ฉ๋๋ค.
Cloud Manager ๋ฐ Ops Manager์์ ์ฌ์ฉํ ์ ์๋ Replication Lag ๊ทธ๋ํ์์ 0์ด ์๋๊ฑฐ๋ ์ฆ๊ฐํ๋ oplog ์๊ฐ ๊ฐ์ ํ์ธํ์ฌ ๋ณต์ ์๋๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
๋ณต์ ์ง์ฐ ์์ธ
๋ณต์ ์ง์ฐ์ ์์ธ์ผ๋ก๋ ์์ธ์ ๋ค์์ด ํด๋นํ ์ ์์ต๋๋ค.
๋คํธ์ํฌ ์ง์ฐ ์๊ฐ
์ธํธ ๋ฉค๋ฒ ๊ฐ์ ๋คํธ์ํฌ ๊ฒฝ๋ก๋ฅผ ํ์ธํ์ฌ ํจํท ์์ค์ด๋ ๋คํธ์ํฌ ๋ผ์ฐํ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
ping
๋ฑ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์งํฉ ๋ฉค๋ฒ ๊ฐ์ ์ง์ฐ ์๊ฐ์ ํ ์คํธํ๊ณtraceroute
์ ์ฌ์ฉํ์ฌ ํจํท ๋คํธ์ํฌ ์๋ํฌ์ธํธ์ ๋ผ์ฐํ ์ ๋ ธ์ถํ ์ ์์ต๋๋ค.๋์คํฌ ์ฒ๋ฆฌ๋
์ธ์ปจ๋๋ฆฌ์ ํ์ผ ์์คํ ๊ณผ ๋์คํฌ ์ฅ์น๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ๋ก ๋น ๋ฅด๊ฒ ํ๋ฌ์ํ ์ ์๋ ๊ฒฝ์ฐ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋์คํฌ ๊ด๋ จ ๋ฌธ์ ๋ ๊ฐ์ํ๋ ์ธ์คํด์ค๋ฅผ ํฌํจํ ๋ฉํฐํ ๋ํธ ์์คํ ์ ๋งค์ฐ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ฉฐ ์์คํ ์ด IP ๋คํธ์ํฌ๋ฅผ ํตํด ๋์คํฌ ์ฅ์น์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ(์: Amazon์ EBS ์์คํ ) ์ผ์์ ์ผ๋ก ๋ฐ์ํ ์ ์์ต๋๋ค.
iostat
๋๋vmstat
์ ํฌํจํ ์์คํ ์์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋์คํฌ ์ํ๋ฅผ ํ๊ฐํฉ๋๋ค.๋์์ฑ
๊ฒฝ์ฐ์ ๋ฐ๋ผ ํ๋ผ์ด๋จธ๋ฆฌ์์ ์ฅ๊ธฐ๊ฐ ์คํ๋๋ ์์ ์ผ๋ก ์ธํด ์ธ์ปจ๋๋ฆฌ์์์ ๋ณต์ ๊ฐ ์ฐจ๋จ๋ ์ ์์ต๋๋ค. ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ๊ตฌ์ฑํ์ฌ ์ธ์ปจ๋๋ฆฌ๋ก์ ๋ณต์ ํ์ธ์ด ํ์ํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ณต์ ๊ฐ ์ฐ๊ธฐ ๋ถํ๋ฅผ ๋ฐ๋ผ์ก์ ์ ์๋ ๊ฒฝ์ฐ ์ฐ๊ธฐ ์์ ์ด ๋ฐํ๋์ง ์์ต๋๋ค.
๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋กํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ฐ ๋ฐ์์ ํด๋นํ๋ ๋๋ฆฐ ์ฟผ๋ฆฌ๋ ์ฅ๊ธฐ ์คํ ์์ ์ด ์๋์ง ํ์ธํ ์๋ ์์ต๋๋ค.
์ ์ ํ ์ฐ๊ธฐ ๊ณ ๋ ค
ํนํ
unacknowledged write concern
์ ๊ฐ์ด ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ง์ ์์ ์ฐ๊ธฐ๊ฐ ํ์ํ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์์ง ๋๋ ๋๋ ๋ก๋ ์์ ์ ์ํํ๋ฉด ์ธ์ปจ๋๋ฆฌ์์๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ผ์ก์ ์ ์์ ๋งํผ ์ถฉ๋ถํ ๋น ๋ฅด๊ฒ oplog๋ฅผ ์ฝ์ ์ ์๊ฒ ๋ฉ๋๋ค.์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด 100ํ, 1,000ํ ๋๋ ๋ค๋ฅธ ๊ฐ๊ฒฉ๋ง๋ค ์ฐ๊ธฐ ๊ณ ๋ ค ์น์ธ ์์ฑ์ ์์ฒญํ์ฌ ์ธ์ปจ๋๋ฆฌ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋ฐ๋ผ์ก์ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
ํ๋ฆ ์ ์ด
๊ด๋ฆฌ์๋ majority
committed
์ง์ฐ์ ๊ตฌ์ฑ ๊ฐ๋ฅํ ์ต๋๊ฐ flowControlTargetLagSeconds
์ดํ๋ก ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ฐ๊ธฐ๋ฅผ ์ ์ฉํ๋ ์๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ฆ ์ ์ด๋ enabled
์
๋๋ค.
์ฐธ๊ณ
ํ๋ฆ ์ ์ด๊ฐ ์๋ํ๋ ค๋ฉด ๋ณต์ ๋ณธ ์ธํธ/์ค๋ฉ๋ ํด๋ฌ์คํฐ์ 4.2
์ featureCompatibilityVersion(fCV) ๊ณผ majority enabled
์ ์ฝ๊ธฐ ์ฐ๋ ค ์ฌํญ์ด ์์ด์ผ ํฉ๋๋ค. ์ฆ, fCV๊ฐ 4.2
๊ฐ ์๋๊ฑฐ๋ ์ฝ๊ธฐ ๋ฌธ์ ๊ณผ๋ฐ์๊ฐ ๋นํ์ฑํ๋ ๊ฒฝ์ฐ ํ์ฑํ๋ ํ๋ฆ ์ ์ด๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํ๋ฆ ์ ์ด๊ฐ ํ์ฑํ๋๋ฉด ์ง์ฐ์ด flowControlTargetLagSeconds
์ ๊ฐ๊น์์ง์ ๋ฐ๋ผ ๊ธฐ๋ณธ์ ๋ํ ์ฐ๊ธฐ๋ ์ฐ๊ธฐ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ์ ๊ธ์ ์ํํ๊ธฐ ์ ์ ํฐ์ผ์ ์ป์ด์ผ ํฉ๋๋ค. ์ด๋น ๋ฐํ๋๋ ํฐ์ผ ์๋ฅผ ์ ํํจ์ผ๋ก์จ ํ๋ฆ ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ง์ฐ์ ๋ชฉํ ๋ฏธ๋ง์ผ๋ก ์ ์งํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ๊ฐ ํ๋ฆ ์ ์ด๋ฅผ ์์ํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ๋ก๋๋ฅผ ๋ฐ์ง ๋ชปํ๋ฉด ๋ณต์ ์ง์ฐ์ด ๋ฐ์ํ ์ ์์ต๋๋ค(์: ์๋ตํ์ง ์๋ ์ธ์ปจ๋๋ฆฌ ๋ณต์ ๋ณธ์ ๊ฒฝ์ฐ).
ํ๋ฆ ์ ์ด ์ํ๋ฅผ ๋ณด๋ ค๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
rs.printSecondaryReplicationInfo()
๋ฉ์๋๋ฅผ ์คํํ์ฌ ์ง์ฐ๋๊ณ ์๋ ๋ ธ๋๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.rs.printSecondaryReplicationInfo() ์ถ๋ ฅ ์์:
source: 192.0.2.2:27017 { syncedTo: 'Mon Jan 31 2022 18:58:50 GMT+0000 (Coordinated Universal Time)', replLag: '0 secs (0 hrs) behind the primary ' } --- source: 192.0.2.3:27017 { syncedTo: 'Mon Jan 31 2022 18:58:05 GMT+0000 (Coordinated Universal Time)', replLag: '45 secs (0 hrs) behind the primary ' } serverStatus
๋ช ๋ น์ ์คํํ๊ณflowControl.isLagged
๊ฐ์ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ฆ ์ ์ด๊ฐ ์ ์ฉ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.db.runCommand( { serverStatus: 1 } ).flowControl.isLagged ์ถ๋ ฅ ์์:
false ํ๋ฆ ์ ์ด๊ฐ ์๋ํ์ง ์๋ ๊ฒฝ์ฐ ์ธ์ปจ๋๋ฆฌ๋ฅผ ์กฐ์ฌํ์ฌ ํ๋์จ์ด, ๋คํธ์ํฌ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ฝ๊ณผ ๊ฐ์ ๋ณต์ ์ง์ฐ์ ์์ธ์ ํ์ ํ์ธ์.
ํ๋ก์ฐ ์ ์ด ํต๊ณ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
$currentOp.waitingForFlowControl
๊ฐ์ธ์ ๋ณด ์ ์ฑ ์$currentOp.flowControlStats
currentOp.waitingForFlowControl
๊ฐ์ธ์ ๋ณด ์ ์ฑ ์currentOp.flowControlStats
Oplog ํญ๋ชฉ ์ง์ฐ ์ ์ฉ
์ด์ ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ๋๋ฆฐ ์์ ์๊ณ๊ฐ๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฌ๋ oplog ํญ๋ชฉ์ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ฌํ ๋๋ฆฐ oplog ๋ฉ์์ง์ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
diagnostic log
์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ ๋ํด ๊ธฐ๋กํฉ๋๋ค.applied op: <oplog entry> took <num>ms
ํ ์คํธ์ ํจ๊ปREPL
๊ตฌ์ฑ ์์ ์๋์ ๊ธฐ๋ก๋ฉ๋๋ค.๋ก๊ทธ ์์ค(์์คํ ๋๋ ๊ตฌ์ฑ ์์ ์์ค)์ ์์กดํ์ง ์์ต๋๋ค.
ํ๋กํ์ผ๋ง ์์ค์ ์์กดํ์ง ์์ต๋๋ค.
slowOpSampleRate
์ ์ํฅ์ ๋ฐ์ต๋๋ค.
ํ๋กํ์ผ๋ฌ๋ ๋๋ฆฐ oplog ํญ๋ชฉ์ ์บก์ฒํ์ง ์์ต๋๋ค.
๋ชจ๋ ๋ฉค๋ฒ ๊ฐ ์ฐ๊ฒฐ ํ ์คํธ
๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๊ตฌ์ฑ์์ด ๋ณต์ ๋ฅผ ์ง์ํ๋ ค๋ฉด ์ธํธ์ ๋ค๋ฅธ ๋ชจ๋ ๋ฉค๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค. ํญ์ '์๋ฐฉํฅ'์ผ๋ก ์ฐ๊ฒฐ์ ํ์ธํ์ธ์. ๋คํธ์ํน ํ ํด๋ก์ง์ ๋ฐฉํ๋ฒฝ ๊ตฌ์ฑ์ผ๋ก ์ธํด ์ ์์ ์ธ ํ์ ์ฐ๊ฒฐ์ด ์ฐจ๋จ๋์ด ๋ณต์ ๋ฅผ ์ฐจ๋จํ ์ ์์ต๋๋ค.
๊ฒฝ๊ณ
์ธ์คํด์ค๋ฅผ ๊ณต๊ฐ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ IP ์ฃผ์์ ๋ฐ์ธ๋ฉํ๊ธฐ ์ ์ ๋ฌด๋จ ์ ๊ทผ์ผ๋ก๋ถํฐ ํด๋ฌ์คํฐ๋ฅผ ๋ณดํธํด์ผ ํฉ๋๋ค. ๋ณด์ ๊ถ์ฅ ์ฌํญ์ ์ ์ฒด ๋ชฉ๋ก์ ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์ ๋ํ ๋ณด์ ๊ฒ์ฌ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์. ์ต์ํ ์ธ์ฆ์ ํ์ฑํํ๊ณ ๋คํธ์ํฌ ์ธํ๋ผ๋ฅผ ๊ฐํํ๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค.
2} ๋ฐmongod
MongoDB mongos
๋ฐ์ด๋๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ํธ์คํธ์ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค. ๋ฐ์ด๋๋ฆฌ์ ๋ํด net.ipv6
๊ตฌ์ฑ ํ์ผ ์ค์ ๋๋ --ipv6
๋ช
๋ น์ค ์ต์
์ด ์ค์ ๋์ด ์์ผ๋ฉด ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ก์ปฌ ํธ์คํธ IPv6 ์ฃผ์์ ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ํธ์คํธ์ ๋ฐ์ธ๋ฉ๋ mongod
๋ฐ mongos
๋ ๋์ผํ ์ปดํจํฐ์์ ์คํ ์ค์ธ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ๋ง ํ์ฉํฉ๋๋ค. ์ด ๋ฐ์ธ๋ฉ ๋์์๋ mongosh
๋ฐ ๋ณต์ ๋ณธ ์งํฉ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๋ฉค๋ฒ๊ฐ ํฌํจ๋ฉ๋๋ค. ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ ํธ์คํธ์๋ง ๋ฐ์ธ๋ฉ๋ ๋ฐ์ด๋๋ฆฌ์๋ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ๋ฐ์ธ๋ฉ์ ์ฌ์ ์ํ๊ณ ๋ค๋ฅธ IP ์ฃผ์์ ๋ฐ์ธ๋ฉํ๋ ค๋ฉด net.bindIp
๊ตฌ์ฑ ํ์ผ ์ค์ ๋๋ --bind_ip
๋ช
๋ น์ค ์ต์
์ ์ฌ์ฉํ์ฌ ํธ์คํธ ์ด๋ฆ ๋๋ IP ์ฃผ์ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค.
๊ฒฝ๊ณ
MongDB ๋ถํฐ 5.0 ์์, ๋ถํ ์ํ DNS IP ์ฃผ์๋ก๋ง ๊ตฌ์ฑ๋ ๋
ธ๋๋ ์์ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ๊ณ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. disableSplitHorizonIPCheck
๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ฅผ ๋ค์ด ๋ค์ mongod
์ธ์คํด์ค๋ ๋ก์ปฌ ํธ์คํธ์ IP ์ฃผ์ 198.51.100.1
์ ์ฐ๊ฒฐ๋ ํธ์คํธ๋ช
My-Example-Associated-Hostname
์ ๋ชจ๋ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
mongod --bind_ip localhost,My-Example-Associated-Hostname
์ด ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ค๋ฉด ์๊ฒฉ ํด๋ผ์ด์ธํธ๊ฐ ํธ์คํธ ์ด๋ฆ ๋๋ ๊ด๋ จ IP ์ฃผ์ 198.51.100.1
๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
mongosh --host My-Example-Associated-Hostname mongosh --host 198.51.100.1
๋คํธ์ํน์ ์๋ฐฉํฅ ํ ์คํธ์ ๋ํ ๋ค์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์
์ธ ๊ฐ์ ํธ์คํธ์์ ์คํ๋๋ ์ธ ๋ช ์ ๋ฉค๋ฒ๋ก ๊ตฌ์ฑ๋ ๋ณต์ ๋ณธ ์ธํธ๊ฐ ์์ต๋๋ค.
m1.example.net
m2.example.net
m3.example.net
์ธ ๊ฐ ๋ชจ๋ ๊ธฐ๋ณธ ํฌํธ 27017
์ ์ฌ์ฉํฉ๋๋ค.
๋ค์
m1.example.net
์์ ์งํฉ์ ์ฌ์ฉํ์ฌm1.example.net
์์ ๋ค๋ฅธ ํธ์คํธ๋ก์ ์ฐ๊ฒฐ์ ํ ์คํธํฉ๋๋ค.mongosh --host m2.example.net --port 27017 mongosh --host m3.example.net --port 27017 ๋ค์๊ณผ ๊ฐ์ด
m2.example.net
์ ์์ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌm2.example.net
์์ ๋ค๋ฅธ ๋ ํธ์คํธ๋ก์ ์ฐ๊ฒฐ์ ํ ์คํธํฉ๋๋ค.mongosh --host m1.example.net --port 27017 mongosh --host m3.example.net --port 27017 m2.example.net
์m1.example.net
๊ฐ ์๋ฐฉํฅ ์ฐ๊ฒฐ ํ ์คํธ๊ฐ ์๋ฃ๋์์ต๋๋ค.๋ค์๊ณผ ๊ฐ์ด
m3.example.net
์ ์์ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌm3.example.net
ํธ์คํธ์์ ๋ค๋ฅธ ๋ ํธ์คํธ๋ก์ ์ฐ๊ฒฐ์ ํ ์คํธํฉ๋๋ค.mongosh --host m1.example.net --port 27017 mongosh --host m2.example.net --port 27017
์ด๋ค ๋ฐฉํฅ์ผ๋ก๋ ์ฐ๊ฒฐ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋คํธ์ํน ๋ฐ ๋ฐฉํ๋ฒฝ ๊ตฌ์ฑ์ ํ์ธํ๊ณ ์ด๋ฌํ ์ฐ๊ฒฐ์ ํ์ฉํ๋๋ก ํ๊ฒฝ์ ์ฌ๊ตฌ์ฑํ์ธ์.
๋ ์ด์์ ์ธ์ปจ๋๋ฆฌ ๋ณต์ ๋ณธ์ ์ฌ๋ถํ ํ ๋ ์์ผ ์์ธ
๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ฅผ ์ฌ๋ถํ
ํ ๋๋ ์ ์ง ๊ด๋ฆฌ ์ค์ ํด๋น ์ธํธ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ ํํ ์ ์๋์ง ํ์ธํ์ธ์. ์ฆ, ์ธํธ์ members[n].votes
๋๋ถ๋ถ์ ์ฌ์ฉํ ์ ์๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
์ธํธ์ ํ์ฑ ๋ฉค๋ฒ๊ฐ ๋ ์ด์ ๊ณผ๋ฐ์๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋๋ฉด ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๊ฐ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ก ๊ฐ๋ฑ๋ฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ๋ ๊ฐ๋ฑ ์ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์ข ๋ฃํ์ง ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ๋ ๋ฉค๋ฒ๊ฐ ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ ์ถํ ๋๊น์ง ๋ณต์ ๋ณธ ์ธํธ์ ์ธ ์ ์์ต๋๋ค.
์์
3๊ฐ์ ๋ฉค๋ฒ๊ฐ ํ ํ๋ฅผ ๊ฐ๊ณ ์๋ ๋ณต์ ๋ณธ ์งํฉ์ ๊ฒฝ์ฐ ์ต์ ๋ ๋ช ์ ๊ตฌ์ฑ์์ด ์๋ก ์ฐ๊ฒฐํ ์ ์์ผ๋ฉด ์ด ์งํฉ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ ์ถํ ์ ์์ต๋๋ค. ๋ ๊ฐ์ ์ธ์ปจ๋๋ฆฌ๋ฅผ ๋์์ ์ฌ๋ถํ ํ๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ๊ฐ๋ฑ๋์ด ์ธ์ปจ๋๋ฆฌ๊ฐ ๋ฉ๋๋ค. ๋ค๋ฅธ ์ธ์ปจ๋๋ฆฌ ๋ณต์ ๋ณธ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ ๋๊น์ง(์ฆ, ์ฌ๋ถํ ๋ ์ธ์ปจ๋๋ฆฌ ๋ณต์ ๋ณธ ์ค ํ๋ ์ด์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ ๋๊น์ง) ํด๋น ์ธํธ์๋ ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ์ด ์กด์ฌํ์ง ์์ผ๋ฉฐ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ์ ์ ํํ ์ ์์ต๋๋ค.
ํฌํ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณต์ ๋ณธ ์ธํธ ์ ๊ฑฐ๋ฅผ ์ฐธ์กฐํ์ธ์. ์ฐ๊ฒฐ ์ค๋ฅ์ ๋ํ ๊ด๋ จ ์ ๋ณด๋ TCP keepalive
์๊ฐ์ด MongoDB ๋ฐฐํฌ์ ์ํฅ์ ๋ฏธ์น๋์?๋ฅผ ์ฐธ์กฐํ์ธ์.
Oplog์ ํฌ๊ธฐ ํ์ธ
oplog๊ฐ ํด์๋ก ๋ ํ๋ฆฌ์นด ์ธํธ์ ์ง์ฐ์ ๋ํ ํ์ฉ ์ค์ฐจ๊ฐ ์ปค์ง๊ณ ์ธํธ์ ๋ณต์๋ ฅ์ด ํฅ์๋ ์ ์์ต๋๋ค.
์ฃผ์ด์ง ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ๋ํ oplog์ ํฌ๊ธฐ๋ฅผ ํ์ธํ๋ ค๋ฉด mongosh
์์ ๋ฉค๋ฒ์ ์ฐ๊ฒฐํ์ฌ rs.printReplicationInfo()
๋ฉ์๋๋ฅผ ์คํํฉ๋๋ค.
์ถ๋ ฅ์๋ oplog์ ํฌ๊ธฐ์ oplog์ ํฌํจ๋ ์์ ์ ๋ ์ง ๋ฒ์๊ฐ ํ์๋ฉ๋๋ค. ๋ค์ ์์์ oplog๋ ์ฝ 10MB์ด๋ฉฐ ์ฝ 26์๊ฐ(94400์ด)์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
configured oplog size: 10.10546875MB log length start to end: 94400 (26.22hrs) oplog first event time: Mon Mar 19 2012 13:50:38 GMT-0400 (EDT) oplog last event time: Wed Oct 03 2012 14:59:10 GMT-0400 (EDT) now: Wed Oct 03 2012 15:00:21 GMT-0400 (EDT)
oplog๋ ๋ณด์กฐ ์๋ฒ์์ ์์ํ๋ ๊ฐ์ฅ ๊ธด ๊ฐ๋ ์ค์ง ์๊ฐ ๋์ ๋ชจ๋ ํธ๋์ญ์ ์ ๋ณด๊ดํ ์ ์์ ๋งํผ ๊ธธ์ด์ผ ํฉ๋๋ค. [1] oplog๋ ์ต์ 24์๊ฐ ๋์ ์ด์ํ ์ ์์ผ๋ 72์๊ฐ ๋๋ ์ผ์ฃผ์ผ ๋์ ์ด์ํ๊ธฐ๋ฅผ ์ํ๋ ์ฌ์ฉ์๊ฐ ๋ง์ต๋๋ค.
oplog ํฌ๊ธฐ๊ฐ ์์ ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
์ฐธ๊ณ
์ผ๋ฐ์ ์ผ๋ก oplog๋ ๋ชจ๋ ๋ฉค๋ฒ์์ ๋์ผํ ํฌ๊ธฐ์ฌ์ผ ํฉ๋๋ค. oplog์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฉค๋ฒ์์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ธ์.
Oplog ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์์ฒด ๊ด๋ฆฌํ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ Oplog ํฌ๊ธฐ ๋ณ๊ฒฝ ํํ ๋ฆฌ์ผ์ ์ฐธ์กฐํ์ธ์.
[1] | 2}๊ฐ ์ญ์ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด oplog๊ฐ ๊ตฌ์ฑ๋ ํฌ๊ธฐ ์ ํ์ ์ด๊ณผํ์ฌ ์ปค์ง ์ majority commit point ์์ต๋๋ค. |