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

์ž์ฒด ๊ด€๋ฆฌํ˜• ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

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

  • ๋ฐธ๋Ÿฐ์„œ ๋น„ํ™œ์„ฑํ™”
  • ๊ฐ config MongoDB Server๋ฅผ ๋ณ„๋„๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
  • mongos ์ธ์Šคํ„ด์Šค ๋‹ค์‹œ ์‹œ์ž‘
  • ์ƒค๋“œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
  • ๋ฐธ๋Ÿฐ์„œ ๋‹ค์‹œ ํ™œ์„ฑํ™”

์ด ํŠœํ† ๋ฆฌ์–ผ์€ MongoDB 7.0์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. MongoDB์˜ ์ด์ „ ๋ฒ„์ „์— ๋Œ€ํ•ด์„œ๋Š” ํ•ด๋‹น ๋ฒ„์ „์˜ MongoDB ๋งค๋‰ด์–ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ config ์„œ๋ฒ„๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ ์„œ๋ฒ„๋Š” WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ์‹คํ–‰ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ˆ์ฐจ๋Š” ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•œ ๋‹ค์šดํƒ€์ž„ ์—†์ด ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒˆ ํ•˜๋“œ์›จ์–ด ์‹œ์Šคํ…œ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

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

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

๋ฐธ๋Ÿฐ์„œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์˜ mongos ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. [1]

sh.stopBalancer()

๋ฐธ๋Ÿฐ์„œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด sh.getBalancerState() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐธ๋Ÿฐ์„œ ๋น„ํ™œ์„ฑํ™”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

[1] MongoDB์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ 6.0.3๋ถ€ํ„ฐ ์ž๋™ ์ฒญํฌ ๋ถ„ํ• ์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐธ๋Ÿฐ์‹ฑ ์ •์ฑ… ๊ฐœ์„  ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž๋™ ๋ถ„ํ•  ๋ช…๋ น์€ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜์ง€๋งŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MongoDB 6.0.3 ์ด์ „ ๋ฒ„์ „์—์„œ sh.stopBalancer()๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ž๋™ ๋ถ„ํ• ๋„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ตฌ์„ฑ ์„œ๋ฒ„๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ(CSRS)๋กœ ๋ฐฐํฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์„œ๋ฒ„์— ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ‘œ์ค€ ๋ณต์ œ๋ณธ ์„ธํŠธ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ํ”„๋กœํ† ์ฝœ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ตฌ์„ฑ ์„œ๋ฒ„ ์ „์ฒด์—์„œ ์ผ๊ด€์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ตฌ์„ฑ ์„œ๋ฒ„์— ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์ œ๋ณธ ์„ธํŠธ์— ์ตœ๋Œ€ 50๋ช…์˜ ๊ตฌ์„ฑ์›์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— 3๊ฐœ ์ด์ƒ์˜ ๊ตฌ์„ฑ ์„œ๋ฒ„๋ฅผ ๋ณด์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์„œ๋ฒ„๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ๋กœ ๋ฐฐํฌํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ ์„œ๋ฒ„์—์„œ WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

config ์„œ๋ฒ„์— ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์ค‘์žฌ์ž๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ง€์—ฐ๋œ ๋ฉค๋ฒ„๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: members[n].buildIndexes ์„ค์ •์ด false๋กœ ์„ค์ •๋œ ๋…ธ๋“œ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).

config ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๊ฐ ๋ฉค๋ฒ„์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๊ต์ฒดํ•˜๊ธฐ ์ „์— ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

1

--configsvr, --replSet, --bind_ip ์˜ต์…˜ ๋ฐ ๋ฐฐํฌ์„œ๋ฒ„์— ์ ํ•ฉํ•œ ๊ธฐํƒ€ ์˜ต์…˜์„ ์ง€์ •ํ•˜์—ฌ mongod ์ธ์Šคํ„ดํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ IP ์ฃผ์†Œ์— ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์ „์— ๋ฌด๋‹จ ์ ‘๊ทผ์œผ๋กœ๋ถ€ํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ ๊ถŒ์žฅ ์‚ฌํ•ญ์˜ ์ „์ฒด ๋ชฉ๋ก์€ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฐํฌ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฒ€์‚ฌ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์ตœ์†Œํ•œ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋„คํŠธ์›Œํฌ ์ธํ”„๋ผ๋ฅผ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

mongod --configsvr --replSet <replicaSetName> --bind_ip localhost,<hostname(s)|ip address(es)>
2

mongosh ๋ฅผ config ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ์— ์—ฐ๊ฒฐํ•˜๊ณ  rs.add() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

MongoDB 5.0 ์ด์ „์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ๊ด€๋  ๋•Œ๊นŒ์ง€ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋ณด์กฐ ์„œ๋ฒ„๊ฐ€ ์ฝ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ ์„œ๋ฒ„๊ฐ€ ๋  ์ˆ˜ ์—†๋”๋ผ๋„ ์—ฌ์ „ํžˆ ํˆฌํ‘œ ๋ฉค๋ฒ„๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. 5.0 ์ด์ „ ๋ฒ„์ „์˜ MongoDB๋ฅผ ์‹คํ–‰ ์ค‘์ด๊ณ  votes ๋ฐ priority ์„ค์ •์ด 0๋ณด๋‹ค ํฐ ๋ณด์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ, ํˆฌํ‘œ ํšŒ์›์˜ ๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ์˜จ๋ผ์ธ ์ƒํƒœ์ด์ง€๋งŒ ๊ธฐ๋ณธ ํšŒ์›์„ ์„ ์ถœํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด priority :0 ๋ฐ votes :0๋กœ ์ƒˆ ๋ณด์กฐ๋ฅผ ์ฒ˜์Œ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ rs.status()๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฉค๋ฒ„๊ฐ€ SECONDARY ์ƒํƒœ๋กœ ์ „ํ™˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ rs.reconfig() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šฐ์„  ์ˆœ์œ„์™€ ํˆฌํ‘œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.

rs.add( { host: "<hostnameNew>:<portNew>", priority: 0, votes: 0 } )

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

mongos ์ธ์Šคํ„ด์Šค๋Š” ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ ๋„ config ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

3
  1. ์ƒˆ ๋ฉค๋ฒ„๊ฐ€ SECONDARY ์ƒํƒœ์— ๋„๋‹ฌํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด rs.status()๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    rs.status()
  2. ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์ƒˆ ๋ฉค๋ฒ„์˜ ํˆฌํ‘œ์™€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    var cfg = rs.conf();
    cfg.members[n].priority = 1; // Substitute the correct array index for the new member
    cfg.members[n].votes = 1; // Substitute the correct array index for the new member
    rs.reconfig(cfg)

    ์—ฌ๊ธฐ์„œ n๋Š” members ๋ฐฐ์—ด์— ์žˆ๋Š” ์ƒˆ ๋…ธ๋“œ์˜ ๋ฐฐ์—ด ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

  • rs.reconfig() 2} ์…ธ ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ ๊ธฐ๋ณธ๊ฐ’์ด ๊ฐ•์ œ๋กœ ๋ฌผ๋Ÿฌ๋‚˜๋„๋ก ํ•˜์—ฌ ์„ ๊ฑฐ๋ฅผ ์‹ค์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋˜๋ฉด mongod ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ 10~20์ดˆ ์ •๋„ ์†Œ์š”๋˜์ง€๋งŒ ์˜ˆ์•ฝ๋œ ์œ ์ง€ ๊ด€๋ฆฌ ๊ธฐ๊ฐ„ ๋™์•ˆ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•ด ๋ณด์„ธ์š”.

  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ทœ์น™์€ MongoDB ๋ฒ„์ „๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ MongoDB ๋ฒ„์ „์˜ ๋ฉค๋ฒ„๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๋‹ค์‹œ ๊ตฌ์„ฑํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

4

ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฒฝ์šฐ ์ข…๋ฃŒํ•˜๊ธฐ ์ „์— ๋จผ์ € ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„์˜ ๋‹จ๊ณ„๋ฅผ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค.

5

๊ต์ฒด config ์„œ๋ฒ„์˜ ์ดˆ๊ธฐ ๋™๊ธฐํ™”๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ์— ์—ฐ๊ฒฐ๋œ mongosh ์„ธ์…˜์—์„œ rs.remove()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด์ „ ๋ฉค๋ฒ„๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

rs.remove("<hostnameOld>:<portOld>")

mongos ์ธ์Šคํ„ด์Šค๋Š” ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ ๋„ config ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ mongos ์ธ์Šคํ„ด์Šค๋Š” --configdb ๋˜๋Š” sharding.configDB ์„ค์ •์—์„œ ๊ตฌ์„ฑ ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ ์ด๋ฆ„๊ณผ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ์˜ mongos ์ธ์Šคํ„ด์Šค๋Š” ๋™์ผํ•œ config ์„œ๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์•ผ ํ•˜์ง€๋งŒ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋‹ค๋ฅธ ๋ฉค๋ฒ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

mongos ์ธ์Šคํ„ด์Šค๊ฐ€ --configdb ๋˜๋Š” sharding.configDB ์„ค์ •์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์— mongos ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ๋•Œ๋ฅผ ์œ„ํ•ด config ์„œ๋ฒ„ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ ์€ ์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด mongos ์‹œ์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒค๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ƒค๋“œ์— ๋Œ€ํ•ด ์ด ์„น์…˜์—์„œ ์ ์ ˆํ•œ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ƒค๋“œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๊ฐ ๋ฉค๋ฒ„๋ฅผ ๋ณ„๋„๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ๋น„ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ ๋‹ค์Œ ํ”„๋ผ์ด ๋จธ๋ฆฌ ๋ฉค๋ฒ„๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋‘ ๋ช…์˜ ํˆฌํ‘œ ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ์ค‘์žฌ์ž ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘์— ์„ธํŠธ๊ฐ€ ํˆฌํ‘œ์˜ ๊ณผ๋ฐ˜์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์™„๋ฃŒํ•œ ํ›„ ์ค‘์žฌ์ž๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. mongod ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•˜๋ ค๋ฉด shutdown ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ(์˜ˆ: dbPath)๋ฅผ ์ƒˆ ์ปดํ“จํ„ฐ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  3. ์ƒˆ ์œ„์น˜์—์„œ mongod ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ํ˜„์žฌ ํ”„๋ผ์ด๋จธ๋ฆฌ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  5. ๋ฉค๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ rs.reconfig() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ ๋ฌธ์„œ ๋ฅผ ์ƒˆ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ๋ช…๋ น ์‹œํ€€์Šค๋Š” members ๋ฐฐ์—ด์˜ 2 ์œ„์น˜์— ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    cfg = rs.conf()
    cfg.members[2].host = "pocatello.example.net:27018"
    rs.reconfig(cfg)

    ๊ตฌ์„ฑ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ˆ์‹œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  6. ์ƒˆ ๊ตฌ์„ฑ์„ ํ™•์ธํ•˜๋ ค๋ฉด rs.conf() ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  7. ๋ฉค๋ฒ„๊ฐ€ ๋ณต๊ตฌ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ๋ฉค๋ฒ„์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด rs.status() ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

  1. ์ •์ƒ์ ์ธ ํŽ˜์ผ์˜ค๋ฒ„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค. ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ๋‚ฎ์ถ”๋ ค๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ์— ์—ฐ๊ฒฐํ•˜์—ฌ replSetStepDown ๋ช…๋ น ๋˜๋Š” rs.stepDown() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ๋Š” rs.stepDown() ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

    rs.stepDown()
  2. ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๋ฌผ๋Ÿฌ๋‚˜๊ณ  ๋‹ค๋ฅธ ๋ฉค๋ฒ„๊ฐ€ PRIMARY ์ƒํƒœ๊ฐ€ ๋œ ๊ฒฝ์šฐ. ๋ฌผ๋Ÿฌ๋‚œ ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋ ค๋ฉด ๋ณต์ œ๋ณธ ์„ธํŠธ ์ƒค๋“œ์˜ ๊ตฌ์„ฑ์› ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    rs.status() ์ถœ๋ ฅ์„ ํ™•์ธํ•˜์—ฌ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์™„๋ฃŒํ•˜๋ ค๋ฉด ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ฒญํฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์žฌ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ์˜ mongos ์ธ์Šคํ„ด์Šค ์ค‘ ํ•˜๋‚˜์— ์—ฐ๊ฒฐํ•˜๊ณ  true ์„ sh.startBalancer() ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค: [2]

sh.startBalancer()

๋ฐธ๋Ÿฐ์„œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด sh.getBalancerState() ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

[2] MongoDB 6.0.3๋ถ€ํ„ฐ๋Š” ๋ฐธ๋Ÿฐ์‹ฑ ์ •์ฑ…์˜ ๊ฐœ์„ ์œผ๋กœ ์ธํ•ด ์ž๋™ ์ฒญํฌ ๋ถ„ํ• ์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž๋™ ๋ถ„ํ•  ๋ช…๋ น์€ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜์ง€๋งŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. MongoDB 6.0.3 ์ด์ „ ๋ฒ„์ „์—์„œ sh.startBalancer()๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ž๋™ ๋ถ„ํ• ๋„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

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

๋‹ค์‹œ ์‹œ์ž‘