๋ฌธ์ ํ โ Cluster-to-Cluster Sync
start
์ด ํ์ด์ง์ ๋ด์ฉ
์ค๋ช
์์ค cluster์ ๋์ cluster ๊ฐ์ ๋๊ธฐํ๋ฅผ ์์ํฉ๋๋ค.
์๊ตฌ ์ฌํญ:
์ํ
start
์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด mongosync
์ด IDLE
์ํ์ ์์ด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ์ฐ๊ธฐ ์ฐจ๋จ
enableUserWriteBlocking
์ ์ค์ ํ๋ ค๋ฉด mongosync
์ฌ์ฉ์์๊ฒ setUserWriteBlockMode
๋ฐ bypassWriteBlockingMode
์์
์ ํ์ ํฌํจํ๋ ์ญํ ์ด ์์ด์ผ ํฉ๋๋ค.
์ฐธ๊ณ
enableUserWriteBlocking
์(๋ฅผ) ์ฌ์ฉํ๋ ๊ฒฝ์ฐ bypassWriteBlockingMode
์์
์ ํ์ด ์๋ ์ฌ์ฉ์์ ๋ํด์๋ง ์ฐ๊ธฐ๊ฐ ์ฐจ๋จ๋ฉ๋๋ค. ์ด ์์
์ ํ์ด ์๋ ์ฌ์ฉ์๋ ์ฐ๊ธฐ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
mongosync
์ฌ์ฉ์์ ๋ํ ์ฌ์ฉ์ ์ง์ ์ญํ ์ ์ค์ ํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
์ฌ์ฉ์ ์ง์ ์ญํ ์ ๋ง๋ค๋ ค๋ฉด
createRole
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.db.adminCommand( { createRole: "reverseSync", privileges: [ { resource: { db: "", collection: "" }, actions: [ "setUserWriteBlockMode", "bypassWriteBlockingMode" ] } ], roles: [] } ) mongosync
์ฌ์ฉ์์๊ฒ ์ฌ์ฉ์ ์ง์ ์ญํ ์ ๋ถ์ฌํ๋ ค๋ฉดgrantRolesToUser
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.db.adminCommand( { grantRolesToUser: "mongosync-user", roles: [ { role: "reverseSync", db: "admin" } ] } )
mongosync
์(๋ฅผ) ์์ํ ๋ cluster0
๋๋ cluster1
์ค์ ์ ๋ํ ์ฐ๊ฒฐ ๋ฌธ์์ด์์ ๊ตฌ์ฑ๋ ์ด mongosync
์ฌ์ฉ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ
์ค๋ ํด๋ฌ์คํฐ ๊ฐ์ ๋๊ธฐํํ mongosync
์ธ์คํด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ๊ฐ mongosync
์ธ์คํด์ค์ ๋์ผํ API ์๋ํฌ์ธํธ ๋ช
๋ น์ ๋ณด๋ด์ผ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ๋ค์ค Mongosync ์์์ ์ฐธ์กฐํ์ธ์.
์์ฒญ
POST /api/v1/start
์์ฒญ ๋ณธ๋ฌธ ๋งค๊ฐ๋ณ์
๋งค๊ฐ๋ณ์ | ์ ํ | ํ์์ฑ | ์ค๋ช
|
---|---|---|---|
source | ๋ฌธ์์ด | ํ์ ์ฌํญ | ์์ค ํด๋ฌ์คํฐ์ ์ด๋ฆ์
๋๋ค. |
destination | ๋ฌธ์์ด | ํ์ ์ฌํญ | ๋์ cluster์ ์ด๋ฆ์
๋๋ค. |
buildIndexes | ๋ฌธ์์ด | ์ต์
| ๋๊ธฐํ ์ค์ ์ธ๋ฑ์ค ๋น๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์ง์๋๋ ์ต์ :
๋ฒ์ 1.3.0์ ์ถ๊ฐ ๋์์ต๋๋ค. |
enableUserWriteBlocking | ๋ถ์ธ | ์ต์
|
์ญ๋๊ธฐํํ๋ ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ |
includeNamespaces | ๋ฐฐ์ด | ์ต์
| ๋๊ธฐํ์ ํฌํจํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ collection์ ํํฐ๋งํฉ๋๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ์์ค ํด๋ฌ์คํฐ์ ํํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ํํฐ๋ฅผ ์์ ํ์ฌ ์๋ก ์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐ ํ๋ ค๋ฉด ํํฐ๋ง๋ ๋๊ธฐํ๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์์ ํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํํฐ๋ง๋ ๋๊ธฐํ๋ฅผ ์ฐธ์กฐํ์ธ์. ํ์ฌ ์ ํ ์ฌํญ์ ํํฐ๋ง๋ ๋๊ธฐํ๋ฅผ ์ฐธ์กฐํ์ธ์. ๋ฒ์ 1.1์ ์ถ๊ฐ ๋์์ต๋๋ค. |
excludeNamespaces | ๋ฐฐ์ด | ์ต์
| ๋๊ธฐํ์์ ์ ์ธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ collection์ ํํฐ๋งํฉ๋๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ์์ค ํด๋ฌ์คํฐ์ ํํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ํํฐ๋ฅผ ์์ ํ์ฌ ์๋ก ์์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐ ํ๋ ค๋ฉด ํํฐ๋ง๋ ๋๊ธฐํ๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์์ ํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํํฐ๋ง๋ ๋๊ธฐํ๋ฅผ ์ฐธ์กฐํ์ธ์. ํ์ฌ ์ ํ ์ฌํญ์ ํํฐ๋ง๋ ๋๊ธฐํ๋ฅผ ์ฐธ์กฐํ์ธ์. ๋ฒ์ 1.6์ ์๋ก ์ถ๊ฐ๋์์ต๋๋ค. |
reversible | ๋ถ์ธ | ์ต์
|
์ญ๋๊ธฐํํ๋ ค๋ฉด ๋ค์ ๊ตฌ์ฑ์์๋ ์ด ์ต์ ์ด ์ง์๋์ง ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ ์ญ๋ฐฉํฅ ์๋ํฌ์ธํธ๋ฅผ ์ฐธ์กฐํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ |
sharding | ๋ฌธ์ | ์ต์
| ๋ณต์ ๋ณธ ์ธํธ์ ์ค๋ cluster ๊ฐ์ ๋๊ธฐํ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์์ ์ค๋ cluster๋ก ๋๊ธฐํํ๋ ค๋ฉด ์ด ์ต์ ์ด ํ์ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ค๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์ฐธ์กฐํ์ธ์. ๋ฒ์ 1.1์ ์ถ๊ฐ ๋์์ต๋๋ค. |
์ค๋ฉ ๋งค๊ฐ๋ณ์
๋ฒ์ 1.1์ ์ถ๊ฐ ๋์์ต๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์์ shard cluster๋ก ๋๊ธฐํํ๋ ค๋ฉด ๋์ cluster์์ collection์ ์ค๋ฉํ๋ sharding
์ต์
์ ์ค์ ํฉ๋๋ค.
sharding
์ต์
์๋ ๋ค์๊ณผ ๊ฐ์ ๋งค๊ฐ ๋ณ์๊ฐ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์ | ์ ํ | ์ค๋ช
|
---|---|---|
createSupportingIndexes | ๋ถ์ธ | ์ ํ ์ฌํญ. ์ค๋ ํค์ ๋ํ ์ง์ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ๋๊ธฐํ ์ ํด๋น ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ง ์ฌ๋ถ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ false ์
๋๋ค. |
shardingEntries | ๋ฌธ์ ๋ฐฐ์ด | ํ์์ ๋๋ค. ๋๊ธฐํ ์ค์ ์ค๋ฉํ collection์ ๋ค์์คํ์ด์ค ๋ฐ ํค๋ฅผ ์ค์ ํฉ๋๋ค. ์ด ๋ฐฐ์ด์ ํฌํจ๋์ง ์์ collection์ ๋์ cluster์ ์ค๋ฉ๋์ง ์์ collection๊ณผ ๋๊ธฐํ๋ฉ๋๋ค. ๋น ๋ฐฐ์ด๋ก ์ค์ ํ๋ฉด collection์ด ์ค๋ฉ๋์ง ์์ต๋๋ค. |
shardingEntries .collection | ๋ฌธ์์ด | collection์ ์ค๋ฉ์ผ๋ก ์ค์ ํฉ๋๋ค. |
shardingEntries .database | ๋ฌธ์์ด | ์ค๋ฉํ collection์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์ ํฉ๋๋ค. |
shardingEntries .shardCollection | ๋ฌธ์ | ๋์ cluster์์ ์์ฑํ ์ค๋ ํค๋ฅผ ์ค์ ํฉ๋๋ค. |
shardingEntries .shardCollection .key | ๋ฐฐ์ด | ์ค๋ ํค์ ์ฌ์ฉํ ํ๋๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ค๋ ํค๋ฅผ ์ฐธ์กฐํ์ธ์. |
mongosync
๋ณต์ ๋ณธ ์ธํธ์์ ์ค๋ ํด๋ฌ์คํฐ๋ก ๋๊ธฐํํ ๋ sharding
์ต์
์ด ์ค์ ๋์ด ์์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ต์
์ด ๋ค๋ฅธ ๊ตฌ์ฑ๊ณผ ํจ๊ป ์ค์ ๋ ๊ฒฝ์ฐmongosync
์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.sharding
์๋ต
ํ๋ | ์ ํ | ์ค๋ช
|
---|---|---|
success | ๋ถ์ธ | ์์ฒญ์ด ์ฑ๊ณตํ๋ฉด ์ด ๊ฐ์ true ์
๋๋ค. |
error | ๋ฌธ์์ด | ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ค๋ฅ์ ์ด๋ฆ์ ๋ํ๋
๋๋ค. ์ด ํ๋๋ success ์ด true ์ธ ๊ฒฝ์ฐ ์๋ต์์ ์๋ต๋ฉ๋๋ค. |
errorDescription | ๋ฌธ์์ด | ๋ฐ์ํ ์ค๋ฅ์ ๋ํ ์์ธํ ์ค๋ช
์
๋๋ค. ์ด ํ๋๋ success ์ด true ์ธ ๊ฒฝ์ฐ ์๋ต์์ ์๋ต๋ฉ๋๋ค. |
์์ : ๋๊ธฐํ ์์ ์์
๋ค์ ์๋ cluster0
์ cluster1
๊ฐ์ ๋๊ธฐํ ์์
์ ์์ํฉ๋๋ค. ์์ค ํด๋ฌ์คํฐ๋ cluster0
์ด๊ณ ๋์ ํด๋ฌ์คํฐ๋ cluster1
์
๋๋ค.
์์ฒญ
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1" } '
์๋ต
{"success":true}
์์: ์ญ๋ฐฉํฅ ๋๊ธฐํ ์์ ์์
๋ค์ ์๋ cluster0
์ cluster1
๊ฐ์ ๋๊ธฐํ ์์
์ ์์ํฉ๋๋ค. ์์ค ํด๋ฌ์คํฐ๋ cluster0
์ด๊ณ ๋์ ํด๋ฌ์คํฐ๋ cluster1
์
๋๋ค.
reversible
๋ฐ enableUserWriteBlocking
ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ธฐํ๋ฅผ ๋๋๋ฆด ์ ์์ต๋๋ค. ๋๊ธฐํ ๋ฐฉํฅ์ ๋ฐ์ ํ๋ ค๋ฉด ๋ฐ์ ์ ์ฐธ์กฐํ์ธ์ .
์์ฒญ
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", "reversible": true, "enableUserWriteBlocking": true } '
์๋ต
{"success":true}
์์: ํํฐ๋ง๋ ๋๊ธฐํ ์์ ์์
๋ค์ ์๋ cluster0
์ cluster1
๊ฐ์ ๋๊ธฐํ ์์
์ ์์ํฉ๋๋ค. ์์ค ํด๋ฌ์คํฐ๋ cluster0
์ด๊ณ ๋์ ํด๋ฌ์คํฐ๋ cluster1
์
๋๋ค.
cluster0
sales
, marketing
๋ฐ engineering
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํฌํจํฉ๋๋ค.
sales
๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ EMEA
, APAC
๋ฐ AMER
์ปฌ๋ ์
์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ด ์์ ์ includeNamespaces
๋ฐฐ์ด์ sales
๋ฐ marketing
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ๋ ๊ฐ์ ๋ํ ํํฐ๋ฅผ ์ ์ํฉ๋๋ค.
sales
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ EMEA
๋ฐ APAC
์ปฌ๋ ์
๋ ํํฐ๋งํฉ๋๋ค.
"includeNamespaces" : [ { "database" : "sales", "collections": [ "EMEA", "APAC" ] }, { "database" : "marketing" } ]
์ด ํํฐ๋ฅผ ์ ์ฉํ ์ํ์์ /start
API๋ฅผ ํธ์ถํ ํ mongosync
๋ฅผ ์คํํฉ๋๋ค.
marketing
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ์ปฌ๋ ์ ์ ๋๊ธฐํํฉ๋๋ค.engineering
๋ฐ์ดํฐ๋ฒ ์ด์ค ํํฐ๋งsales
๋ฐ์ดํฐ๋ฒ ์ด์ค์์EMEA
๋ฐAPAC
์ปฌ๋ ์ ์ ๋๊ธฐํํฉ๋๋ค.AMER
์ปฌ๋ ์ ์ ํํฐ๋งํฉ๋๋ค.
includeNamespaces
์ต์
์ ํํฐ๋ฅผ ์์ฑํฉ๋๋ค. ๋๊ธฐํ๋ฅผ ํํฐ๋งํ๋ ค๋ฉด ํํฐ๋ง๋ ๋๊ธฐํ๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ฒญ
curl -X POST "http://localhost:27182/api/v1/start" --data ' { "source": "cluster0", "destination": "cluster1", "includeNamespaces": [ { "database": "sales", "collectionsRegex": { "pattern": "^accounts_.+$", "options": "i" } }, { "database": "marketing" } ] } '
์๋ต
{"success":true}
์์: ๋ณต์ ๋ณธ ์ธํธ์์ ์ค๋ cluster๋ก ๋๊ธฐํ ์์
์์ฒญ
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", "sharding": { "createSupportingIndexes": true, "shardingEntries": [ { "database": "accounts", "collection": "us_east", "shardCollection": { "key": [ { "location": 1 }, { "region": 1 }, ] } } ] } } '
์๋ต
{"success":true}
ํ๋
์ํ
start
์์ฒญ์ด ์ฑ๊ณตํ๋ฉด mongosync
์(๋) RUNNING
์ํ๊ฐ ๋ฉ๋๋ค.
์ฌ์ ๋ถํ ์ฒญํฌ
๋ฒ์ 1.1์ ์ถ๊ฐ ๋์์ต๋๋ค.
mongosync
๊ฐ cluster์ ๋๊ธฐํ๋๋ฉด ๋์ cluster์์ sharded collection์ ๋ํ ์ฒญํฌ๋ฅผ ๋ฏธ๋ฆฌ ๋ถํ ํฉ๋๋ค. ์ด๋ ๋ค์ ๊ตฌ์ฑ์์ ์ง์๋ฉ๋๋ค:
๋ณต์ ๋ณธ ์ธํธ์์ ์ค๋ cluster๋ก ๋๊ธฐํํฉ๋๋ค.
์ค๋ ์๊ฐ ๋ค๋ฅธ ์ค๋ ํด๋ฌ์คํฐ๋ฅผ ๋๊ธฐํํฉ๋๋ค.
์ค๋ ๋ณต์ ๋ณธ ์ธํธ
๋ฒ์ 1.1์ ์ถ๊ฐ ๋์์ต๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์์ ์ค๋ ํด๋ฌ์คํฐ๋ก ๋๊ธฐํํ๋ ค๋ฉด sharding
์ต์
์ด ํ์ํฉ๋๋ค. ์ด ์ต์
์ mongosync
๊ฐ collection์ ์ค๋ฉํ๋ ๋ฐฉ๋ฒ์ ๊ตฌ์ฑํฉ๋๋ค.
sharding.shardEntries
๋ฐฐ์ด์ ์ค๋ฉํ collection์ ์ง์ ํฉ๋๋ค. ์ด ๋ฐฐ์ด์ ๋์ด๋์ง ์์ ์ปฌ๋ ์
์ ๋น์ค๋ ์ปฌ๋ ์
์ผ๋ก ๋ณต์ ๋ฉ๋๋ค.
์ง์ ์ธ๋ฑ์ค
๋ฒ์ 1.1์ ์ถ๊ฐ ๋์์ต๋๋ค.
mongosync
์์ค ํด๋ฌ์คํฐ์ ์ธ๋ฑ์ค๋ฅผ ๋์ ํด๋ฌ์คํฐ๋ก ๋๊ธฐํํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ณต์ ๋ณธ ์ธํธ์์ ์ค๋ cluster๋ก ๋๊ธฐํํ ๋ mongosync
์๋ ์์ค ํด๋ฌ์คํฐ์ ์กด์ฌํ์ง ์์ ์ ์๋ ์ค๋ ํค๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ถ๊ฐ ์ธ๋ฑ์ค๊ฐ ํ์ํ ์ ์์ต๋๋ค.
mongosync
๋๊ธฐํ ์ค์ ์ค๋ collection์ ๋ํ ์ง์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด ์์
์ sharding.createSupportingIndexes
์ต์
์ ์ค์ ํ๋ฉด ๋ฉ๋๋ค.
sharding.createSupportingIndexes
์ด false
์ธ ๊ฒฝ์ฐ(๊ธฐ๋ณธ๊ฐ):
sharding.shardEntries
์ต์ ์ ์ ๊ณตํ๋ ๊ฐ ์ค๋ ํค์๋ ์์ค cluster์ ๊ธฐ์กด ์ธ๋ฑ์ค๊ฐ ์์ด์ผ ํฉ๋๋ค.collection์์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ๋ ฌ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค๋ ํค์ ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ์ค ํ๋์ ๋จ์ ๋ฐ์ดํฐ ์ ๋ ฌ์ด ์์ด์ผ ํฉ๋๋ค.
์ค๋ ํค์ ๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์์ค ํด๋ฌ์คํฐ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ๊ณ ์ ์ฑ์ ์ง์ ํด์ผ ํฉ๋๋ค.
์์ค ํด๋ฌ์คํฐ์ ๊ณ ์ ์ธ๋ฑ์ค๊ฐ ๋์ cluster์์ ์์ฒญ๋ ์ค๋ ํค์ ํธํ๋์ง ์๋ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด ์์ฒญ๋ ์ค๋ ํค๊ฐ ๋์์ ์ ๋์ฌ๋ก ํฌํจ๋์ง ์์ ์์ค ํด๋ฌ์คํฐ์ ๊ณ ์ ์ธ๋ฑ์ค๋ก ์ธํด
mongosync
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
sharding.createSupportingIndexes
์ด true
์ธ ๊ฒฝ์ฐ:
์์ค ํด๋ฌ์คํฐ์ ์ง์ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ
mongosync
๋ ์ธ๋ฑ์ค๋ฅผ ๋์ ํด๋ฌ์คํฐ์ ๋๊ธฐํํ๊ณ ์ค๋ ํค๋ก ์ฌ์ฉํฉ๋๋ค.์ง์ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ
mongosync
๊ฐ ๋์ cluster์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
sharding.createSupportingIndexes
์ต์
์ ๋ชจ๋ ์ค๋ collection์ ์ํฅ์ ์ค๋๋ค.
๋๊ธฐํ ์ค ์ด๋ฆ ๋ณ๊ฒฝ
๋ฒ์ 1.1์ ์ถ๊ฐ ๋์์ต๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์์ cluster๋ก ๋๊ธฐํํ ๋ sharding.shardEntries
๋ฐฐ์ด์ ๋์ด๋ collection์ ๋์ cluster์์ ์ค๋ collection์ด ๋ฉ๋๋ค.
start
๋ฅผ ํธ์ถํ ํ mongosync
๊ฐ ์ปฌ๋ ์
๋ณต์ฌ๋ฅผ ์์ํ๊ธฐ ์ ์ ์์ค ํด๋ฌ์คํฐ์์ ์ปฌ๋ ์
์ด๋ฆ์ ๋ณ๊ฒฝ(์: renameCollection
๋ช
๋ น ์ฌ์ฉ)ํ๋ฉด ๋์์์ ์ปฌ๋ ์
์ค๋ฉ์ ์ฐจ๋จํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
๋ณต์ ๋ณธ ์ธํธ์์ cluster๋ก ๋๊ธฐํํ๋ ๋์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋๋ก collection ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ์ง์๋์ง ์์ต๋๋ค.
collection ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด progress
์์ ํ์ง ํ์ธํ๋ ค๋ฉด ์๋ํฌ์ธํธ๋ฅผ ํธ์ถํ๊ณ collectionCopy.estimatedCopiedBytes
๋ฐํ ๋ฌธ์์์ ํ๋ ๊ฐ์ ํ์ธํฉ๋๋ค.
๊ฐ์ด 0์ด๋ฉด
mongosync
์ด collection ๋ณต์ฌ๋ฅผ ์์ํ์ง ์์์์ ๋ํ๋ ๋๋ค.์ด ์ ์์ collection ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ฉด ์์ค์ ์ด๋ฆ ๋ณ๊ฒฝ์ด ์ ์ฉ๋๊ธฐ ์ ์ ๋ณต์ฌ๋ก์ ์ ํ์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๋์ cluster์ collection์ด ์ค๋ฉ๋์ง ์์ ์ํ๋ก ๋จ์ ์ ์์ต๋๋ค.
0๋ณด๋ค ํฐ ๊ฐ์
mongosync
์์ ๋ณต์ฌ๋ฅผ ์์ํ์์ ๋ํ๋ ๋๋ค. ์ด ์ ๋ถํฐ collection์ ์ด๋ฆ์ ๋ณ๊ฒฝํด๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ ๋์ cluster์์ ํด๋น ์ค๋ฉ์ ์ฐจ๋จํ์ง ์์ต๋๋ค.
ํ์ ์ธ๋ฑ์ค
buildIndexes
์ต์
์ never
๋ก ์ค์ ํ์ฌ /start
๋ฅผ ํธ์ถํ๋ฉด mongosync
๊ฐ ๋ถํ์ํ ์ธ๋ฑ์ค ์์ฑ์ ๊ฑด๋๋๋๋ค.
ํญ์ ๋น๋๋๋ ์ธ๋ฑ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
mongosync
๋ณต์ฌํ๋ ๋ชจ๋ collection์_id
ํ๋์ ์ธ๋ฑ์ค๋ฅผ ๋น๋ํฉ๋๋ค.mongosync
์ปค๋ฐ ํ ์ ๊ฑฐ๋๋ ๊ฐ ์ค๋ collection์ ์ค๋ ํค๋ฅผ ์ง์ํ๋๋๋ฏธ ์ธ๋ฑ์ค๋ฅผ ๋น๋ํฉ๋๋ค.buildIndexes
์never
๋ก ์ค์ ํ๋ฉดmongosync
๋ ์ปค๋ฐ ํ์๋ ์ด ์ธ๋ฑ์ค๋ฅผ ์ ์งํฉ๋๋ค.
์๋ํฌ์ธํธ ๋ณดํธ
mongosync
start
์๋ํฌ์ธํธ๋ฅผ ๋ณดํธํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก API๋ ๋ก์ปฌ ํธ์คํธ์๋ง ๋ฐ์ธ๋ฉ๋๋ฉฐ ๋ค๋ฅธ ์์ค์ ํธ์ถ์ ํ์ฉํ์ง ์์ต๋๋ค. ๋ํ start
ํธ์ถ์ ์ฐ๊ฒฐ ์๊ฒฉ ์ฆ๋ช
์ด๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ๋
ธ์ถํ์ง ์์ต๋๋ค.
progress
ย โ