๋ณต์ ๋ณธ ์ธํธ๋ฅผ 7.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ธฐ
์ด ํ์ด์ง์ ๋ด์ฉ
์ด ํํ ๋ฆฌ์ผ์ ์ฌ์ฉํ์ฌ MongoDB 6.0์์ MongoDB 7.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ธ์. ๋์ผํ ๋ฆด๋ฆฌ์ค ์๋ฆฌ์ฆ ๋ด์์ ์ ํจ์น ๋ฆด๋ฆฌ์ค๋ก MongoDB์ ์ต์ ์์ฒด ๊ด๋ฆฌํ ํจ์น ๋ฆด๋ฆฌ์ค๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
MongoDB 7.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๊ธฐ ์ ์ ์ฌ์ ์๊ตฌ ์ฌํญ์ ์ฒ ์ ํ ๊ฒํ ํ๊ณ ์ด ๋ฌธ์์ ๋ด์ฉ์ ์์งํ์ธ์.
The following steps outline the procedure to upgrade a
mongod
that is a replica set member from version
6.0 to 7.0.
7.0๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ด ํ์ํ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ MongoDB ์ ๋ฌธ ์๋น์ค ํ์ MongoDB ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ฅ์ ์ฃผ์ง ์๊ณ ์ํํ๊ฒ ์ ํํ ์ ์๋๋ก ์ฃผ์ ๋ฒ์ ์ ๊ทธ๋ ์ด๋ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์ ๊ทธ๋ ์ด๋ ๊ถ์ฅ ์ฌํญ ๋ฐ ์ฒดํฌ๋ฆฌ์คํธ
์ ๊ทธ๋ ์ด๋ํ ๋๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ธ์:
์ ๊ทธ๋ ์ด๋ ๋ฒ์ ๊ฒฝ๋ก
๊ธฐ์กด์ MongoDB ๋ฐฐํฌ์๋ฒ๋ฅผ 7.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด 6.0 ์๋ฆฌ์ฆ ๋ฆด๋ฆฌ์ค๋ฅผ ์คํ ์ค์ด์ด์ผ ํฉ๋๋ค.
6.0 ์๋ฆฌ์ฆ ์ด์ ๋ฒ์ ์์ ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด 6.0 ์๋ฆฌ์ฆ๋ก ์ ๊ทธ๋ ์ด๋ํ ๋๊น์ง ๋ฉ์ด์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ฐ์์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 5.0 ์๋ฆฌ์ฆ๋ฅผ ์คํ ์ค์ธ ๊ฒฝ์ฐ ๋จผ์ 6.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํด์ผ 7.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค.
๋๋ผ์ด๋ฒ ํธํ์ฑ ํ์ธ
MongoDB๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ธฐ ์ ์ MongoDB 7.0 ํธํ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค. ํน์ ๋๋ผ์ด๋ฒ์ ๋๋ผ์ด๋ฒ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ฌ MongoDB 7.0๊ณผ์ ํธํ์ฑ์ ํ์ธํ์ธ์.
ํธํ๋์ง ์๋ ๋๋ผ์ด๋ฒ์์ ์คํ๋๋ ์ ๊ทธ๋ ์ด๋๋ ๋ฐฐํฌ์์ ์๊ธฐ์น ์๊ฑฐ๋ ์ ์๋์ง ์์ ๋์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ค๋น
์ ๊ทธ๋ ์ด๋๋ฅผ ์์ํ๊ธฐ ์ ์ MongoDB 7.0์ ํธํ์ฑ ๋ณ๊ฒฝ ์ฌํญ๋ฅผ ์ฐธ์กฐํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ฐฐํฌ๊ฐ MongoDB 7.0๊ณผ ํธํ๋๋์ง ํ์ธํ์ธ์. ์ ๊ทธ๋ ์ด๋๋ฅผ ์์ํ๊ธฐ ์ ์ ๋ฐฐํฌ์ ๋นํธํ์ฑ์ ํด๊ฒฐํ์ธ์.
MongoDB๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ธฐ ์ ์ ํ๋ก๋์ ํ๊ฒฝ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ํญ์ ์คํ ์ด์ง ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ญ์์ค.
๋ค์ด๊ทธ๋ ์ด๋ ๊ณ ๋ ค ์ฌํญ
์ง์ ์ ๋์ ์์ด๋ ๋ฐฐํฌ์ ๋ฐ์ด๋๋ฆฌ ๋ฒ์ ์ ๋ค์ด๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค.
ํ์ต ๋ด์ฉ์ 8.0 ์ 7.0 ์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ์ ์กฐ๊ฑด
๋ชจ๋ ํ์ ๋ฒ์
All replica set members must be running version 6.0. To upgrade a replica set from 5.0-series and earlier, first upgrade all members of the replica set to the latest 6.0-series release, and then follow the procedure to upgrade from MongoDB 6.0 to 7.0.
๊ธฐ๋ฅ ํธํ์ฑ ๋ฒ์
The 6.0 replica set must have
featureCompatibilityVersion
set to "6.0"
.
๋ณต์ ์ธํธ์ ๋ชจ๋ ๊ตฌ์ฑ์์ด featureCompatibilityVersion
("6.0"
) ๋ก ์ค์ ๋์๋์ง ํ์ธํ๋ ค๋ฉด ๊ฐ ๋ณต์ ์ธํธ ๊ตฌ์ฑ์์ ์ฐ๊ฒฐํ๊ณ featureCompatibilityVersion
๋ฅผ ํ์ธํฉ๋๋ค.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
๋ชจ๋ ๋ฉค๋ฒ๋ "featureCompatibilityVersion" : { "version" : "6.0" }
์ ํฌํจํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
0}์ ์ค์ ํ๊ฑฐ๋ ์
๋ฐ์ดํธํ๋ ค๋ฉด featureCompatibilityVersion
๊ธฐ๋ณธ๊ฐ์์ ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ ๊ตฌ์ฑ์์ ๋๋ถ๋ถ์ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
์์ธํ ๋ด์ฉ์ setFeatureCompatibilityVersion
๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ณต์ ๋ณธ ์ธํธ ๋ ธ๋ ์ํ.
8} ๋ช
๋ น์ replSetGetStatus
์คํํ์ฌ ๋๋ ROLLBACK
์ํ์ ์๋ RECOVERING
๋ณต์ ์ธํธ ๋ฉค๋ฒ๊ฐ ์๋์ง ํ์ธํฉ๋๋ค.
db.adminCommand( { replSetGetStatus: 1 } )
7.0 ๋ค์ด๋ก๋ ๋ฐ์ด๋๋ฆฌ
Use a Package Manager
MongoDB apt
, yum
, dnf
๋๋ zypper
๋ฆฌํฌ์งํ ๋ฆฌ์์ MongoDB๋ฅผ ์ค์นํ ๊ฒฝ์ฐ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ 7.0์ผ๋ก ์
๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค.
Linux ์์คํ ์ ์ ํฉํ 7.0 ์ค์น ์ง์นจ์ ๋ฐ๋ฆ ๋๋ค. ์ฌ๊ธฐ์๋ ์ ๋ฆด๋ฆฌ์ค์ ๋ํ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ ๋ค์ ์ค์ ์ ๊ทธ๋ ์ด๋ ํ๋ก์ธ์ค๋ฅผ ์ํํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
์๋์ผ๋ก
ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ MongoDB๋ฅผ ์ค์นํ์ง ์์ ๊ฒฝ์ฐ, MongoDB ๋ค์ด๋ก๋ ์ผํฐ์์ MongoDB ๋ฐ์ด๋๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ 7.0 ์ค์น ์ง์นจ์ ์ฐธ์กฐํ์ธ์.
์ ๊ทธ๋ ์ด๋ ์ ์ฐจ
You can upgrade from MongoDB 6.0 to 7.0 using a "rolling" upgrade to minimize downtime by upgrading the members individually while the other members are available.
๋ณต์ ๋ณธ ์ธํธ์ ๋ณด์กฐ ๊ตฌ์ฑ์์ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ๋ณด์กฐ ๋ฉค๋ฒ๋ฅผ ํ ๋ฒ์ ํ๋์ฉ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
6.0 ๋ฐ์ด๋๋ฆฌ๋ฅผ 7.0 ๋ฐ์ด๋๋ฆฌ๋ก ๋ฐ๊ฟ๋๋ค.
๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๊ธฐ๋ณธ๊ฐ์ ๋ด๋ ค๋์ต๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ์ mongosh
๋ฅผ ์ฐ๊ฒฐํ๊ณ rs.stepDown()
์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๊ฐ๋ฑํ๊ณ ๊ฐ์ ๋ก ์ ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ํ ํฌํ๋ฅผ ์งํํฉ๋๋ค.
๊ธฐ๋ณธ ๊ณ์ ์ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
2}์์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ด ๋ฌผ๋ฌ๋๊ณ ๋ค๋ฅธ ๊ตฌ์ฑ์์ด ์ํ๋ฅผ rs.status()
๋งก๊ฒ PRIMARY
๋๋ฉด, ๋ฌผ๋ฌ๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ์์ ์
๊ทธ๋ ์ด๋ํฉ๋๋ค.
Shut down the stepped-down primary and replace the
mongod
binary with the 7.0 binary.๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
์ด์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ 7.0 ๊ธฐ๋ฅ์ ํ์ฑํํฉ๋๋ค.
์ด ์์ ์์๋ 6.0๊ณผ ํธํ๋์ง ์๋ 7.0 ๊ธฐ๋ฅ ์์ด 7.0 ๋ฐ์ด๋๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
์ด๋ฌํ 7.0 ๊ธฐ๋ฅ์ ํ์ฑํํ๋ ค๋ฉด ๊ธฐ๋ฅ ํธํ์ฑ ๋ฒ์ (FCV
)๋ฅผ 7.0์ผ๋ก ์ค์ ํฉ๋๋ค.
ํ
์ด์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ์ฑํํ๋ฉด ๋ค์ด๊ทธ๋ ์ด๋ํ๊ธฐ ์ ์ ์ด์ ๋ฒ์ ๊ณผ ํธํ๋์ง ์๋ ์ง์์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ฑฐํด์ผ ํ๋ฏ๋ก ๋ค์ด๊ทธ๋ ์ด๋ ํ๋ก์ธ์ค๊ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
์ ๊ทธ๋ ์ด๋ ํ์๋ ๋ค์ด๊ทธ๋ ์ด๋ ๊ฐ๋ฅ์ฑ์ ์ต์ํํ๊ธฐ ์ํด ๋ฒ์ธ ๊ธฐ๊ฐ ๋์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ์ฑํํ์ง ์๊ณ ๋ฐฐํฌ๋ฅผ ์คํํ๋๋ก ํ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค์ด๊ทธ๋ ์ด๋ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋ฎ๋ค๊ณ ํ์ ํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ๊ธฐ๋ฅ์ ํ์ฑํํ์ญ์์ค.
ํ
์ด๊ธฐ ๋๊ธฐํ๊ฐ ์งํ ์ค์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด๊ธฐ ๋๊ธฐํ๊ฐ ์งํ ์ค์ผ ๋ setFeatureCompatibilityVersion
๋ช
๋ น์ ์คํํ๋ฉด ์ด๊ธฐ ๋๊ธฐํ๊ฐ ๋ค์ ์์๋ฉ๋๋ค.
๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์
setFeatureCompatibilityVersion
๋ช
๋ น์ ์คํํฉ๋๋ค.
db.adminCommand( { setFeatureCompatibilityVersion: "7.0" } )
์ค์ featureCompatibilityVersion (FCV) : "7.0"
implicitly performs a replSetReconfig
to add the
term
field to the configuration document and blocks
until the new configuration propagates to a majority of replica
set members.
์ด ๋ช ๋ น์ ๋ด๋ถ ์์คํ ์ปฌ๋ ์ ์ ๋ํ ์ฐ๊ธฐ๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ์ด๋ค ์ด์ ๋ก๋ ๋ช ๋ น์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ง ์๋ ๊ฒฝ์ฐ ์์ ์ ๋ฌด๋ ฅํ๋ฏ๋ก ์ฃผ ์๋ฒ์์ ๋ช ๋ น์ ์์ ํ๊ฒ ์ฌ์๋ํ ์ ์์ต๋๋ค.
์ถ๊ฐ ์ ๊ทธ๋ ์ด๋ ์ ์ฐจ
๋ ๋ฆฝ ์คํํ์ ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ๋ ๋ฆฝ ์คํํ์ 7.0์ผ๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ 7.0์ผ๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.