Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

임베디드에서 전용 구성 서버로 전환

임베디드 config 서버 에서 전용 config 서버 로 전환하려면 config 샤드의 데이터가 클러스터 의 나머지 샤드로 마이그레이션되었는지 확인해야 합니다. 이 절차에서는 데이터를 안전하게 마이그레이션 하고 전환을 완료하는 방법을 설명합니다.

  1. 이 절차에서는sh.moveCollection()메서드를 사용하여 구성 샤드 에서 컬렉션을 이동합니다. 이 절차를 시작하기 전에 moveCollection 고려 사항 및 요구 사항을 검토 명령 동작을 이해하세요.

  2. 전용 config 서버 로 전환하려면 먼저 를 사용하여 클러스터의 인스턴스 중 mongos 하나에 mongosh 연결합니다.

1

구성 샤드 에서 데이터를 마이그레이션 하려면 밸런서 프로세스 활성화해야 합니다. 밸런서 상태 확인하려면 메서드를 sh.getBalancerState() 사용합니다.

sh.getBalancerState()

작업이 true 을 반환하면 밸런서 가 활성화된 것입니다.

작업이 false 을 반환하는 경우 밸런서 활성화를 참조하세요.

2

를 실행하여 구성 샤드 샤드 목록에 나타나는지 listShards 확인합니다.

db.adminCommand( { listShards: 1 } )

출력에서 shards._id 필드 샤드 이름이 포함됩니다. 구성 샤드 일반적으로 "config"_id 가 있습니다.

{
shards: [
{
_id: 'config',
...
},
...
],
ok: 1
...
}
3

admin 데이터베이스 에서 명령을 실행 transitionToDedicatedConfigServer .

use admin
db.adminCommand( { transitionToDedicatedConfigServer: 1 } )

구성 샤드 배출 상태 가 되고 밸런서 구성 샤드 에서 클러스터 의 나머지 샤드로 청크를 마이그레이션하기 시작합니다. 네트워크 용량 과 데이터 양에 따라 이 작업을 완료하는 데 몇 분에서 며칠까지 걸릴 수 있습니다.

4

집계 단계를 사용하여 구성 샤드 에 여전히 상주하는 샤딩되지 않은 컬렉션을 식별합니다.$listClusterCatalog

use admin
db.aggregate([
{ $listClusterCatalog: { shards: true } },
{
$match: {
sharded: false,
shards: "config",
type: { $nin: ["timeseries", "view"] },
ns: { $not: { $regex: "^enxcol_\\..*(\\.esc|\\.ecc|\\.ecoc|\\.ecoc\\.compact)$" } },
$or: [
{ ns: { $not: { $regex: "\\.system\\." } } },
{ ns: { $regex: "\\.system\\.buckets\\." } }
],
db: { $nin: ["config", "admin"] }
}
},
{ $project: { _id: 0, ns: 1 } }
])

출력의 각 네임스페이스 에 대해 를 사용하여 sh.moveCollection() 샤딩되지 않은 컬렉션 구성 샤드 에서 수신자 샤드 로 이동합니다.

sh.moveCollection(
"<database>.<collection>",
"<ID of recipient shard>"
)

구성 샤드 에 샤딩되지 않은 컬렉션이 남아 있지 않을 때까지 이 단계를 반복합니다.

5

admin 데이터베이스 db.printShardingStatus() 에서 를 실행 .

use admin
db.printShardingStatus()

출력의 databases 섹션에서 각 데이터베이스의 primary 필드 확인합니다. 프라이머리 config 샤드 인 애플리케이션 데이터베이스(configadmin 이외의 데이터베이스)의 경우 프라이머리 샤드 다른 샤드 로 변경합니다.

데이터베이스의 프라이머리 샤드 변경하려면 를 실행 movePrimary.

db.adminCommand({
movePrimary: "<dbName>",
to: "<recipientShard>"
})

이전 단계에서 이동하지 않은 컬렉션은 가 실행되는 동안 movePrimary 사용할 수 없습니다.

6

전환 진행 상황을 확인하려면 데이터베이스 transitionToDedicatedConfigServer admin 에서 를 다시 실행합니다.

use admin
db.adminCommand( { transitionToDedicatedConfigServer: 1 } )

전환이 성공적으로 완료될 때까지 상태를 계속 확인하고, 출력은 다음 예시 와 유사합니다.

{
state: 'completed',
msg: 'removeshard completed successfully',
shard: 'config',
ok: 1
}
7

config 샤드 'completed'state 를 보고한 후 내장된 config 서버 에서 전용 config 서버 로의 전환을 커밋 .

use admin
db.adminCommand( { commitTransitionToDedicatedConfigServer: 1 } )

커밋 성공적인 다음 출력이 반환됩니다.

{
ok: 1,
'$clusterTime': {
...
},
operationTime: ...
}

성공적인 하면 MongoDB 클러스터 메타데이터 에서 config 샤드 제거하고 전용 config 서버 로의 전환을 마무리합니다. 구성 샤드 완전히 비워지지 않으면 명령이 실패하며 재시도하기 전에 { state: 'completed' } 의 전환 상태를 계속 확인해야 합니다.

전환이 커밋된 후에는 는 더 이상 샤드 목록에 config 샤드 포함하지 않습니다. 이제 클러스터 전용 config 서버 사용하며 config 서버 더 이상 애플리케이션 데이터를 샤드 로 저장하지listShards 않습니다.

돌아가기

샤드 제거

이 페이지의 내용