MongoDB 8.0 부터는 일반적인 샤딩된 클러스터 메타데이터 외에 애플리케이션 데이터를 저장 하도록 config 서버 를 구성할 수 있습니다. 애플리케이션 데이터를 저장하는 config 서버 를 config 샤드 또는 임베디드 config 서버 라고 합니다.
복제본 세트 구성 샤드 가 샤딩된 클러스터 로 변환하면 다음을 줄일 수 있습니다.
배포서버 에 필요한 노드 수입니다.
1개의 샤드 클러스터를 유지 관리하기 위한 복잡성.
이 작업에 대하여
MongoDB 8.3부터는 구성 샤드 내장된 샤딩된 클러스터 로 복제본 세트 직접 변환할 수 있습니다.
이전 릴리스에서는 먼저 복제본 세트 전용 config 서버 복제본 세트 있는 샤딩된 클러스터 로 변환한 다음 포함된 구성 샤드 있는 클러스터로 변환해야 합니다.
액세스 제어
액세스 제어가 활성화된 경우 transitionFromDedicatedConfigServer 명령에는 transitionFromDedicatedConfigServer 권한 부여 조치가 클러스터에 필요합니다.
clusterManager 역할 에는 transitionFromDedicatedConfigServer 권한 부여 조치 가 있으며 사용자에게 할당할 수 있습니다.
시작하기 전에
MongoDB 8.3부터는 이전에 클러스터를 샤딩된 복제본 세트를 복제본 세트로 다시 변환할 수 없습니다.
샤딩된 클러스터 를 복제본 세트 로 변환하면 샤드 ID document 포함하여 이전 배포서버 의 샤딩 메타데이터 보존되어 다시 샤딩된 클러스터 되는 것을 차단합니다. 샤딩된 클러스터 로 자체 관리형 변환을 다시 시도하면 MongoDB 오류를 반환합니다.
이러한 복제본 세트를 샤딩된 클러스터로 변환하려면 기술 지원팀에문의 .
단계
다음 예시 자체 관리형 복제본 세트 복제본 세트 의 기존 사용자 데이터가 포함된 구성 샤드 로 변환합니다.
복제본 세트 유지 관리 모드 로 전환합니다.
복제본 세트 에서 롤링 재시작 수행합니다. 유지 관리 모드 에서 각 노드 config 서버 로 시작합니다.
세컨더리 노드부터 시작하여 각 노드 중지합니다. 서버 종료하려면
db.shutdownServer()메서드를 사용합니다.db.shutdownServer() 유지 관리 모드 에서 노드 config 샤드 로 다시 시작합니다.
mongod --config /etc/mongodb.conf --configsvr \ --replicaSetConfigShardMaintenanceMode \ --configsvrmongod인스턴스 config 서버로 시작합니다.--replicaSetConfigShardMaintenanceMode- 일부 스타트업 검사를 비활성화하고 서버 내장된 구성 샤드 로 변환할 수 있는 구성 샤드 유지 관리 모드 활성화합니다.
노드 복제본 세트 다시 참여할 때까지 기다렸다가 다음 노드를 다시 시작하세요.
프라이머리 노드 찾습니다.
rs.status() 메서드를 사용하여 새 프라이머리 노드 식별합니다. 큰 복제본 세트 있는 경우 db.aggregate() 메서드를 사용하여 검색 좁힙니다.
db.aggregate( [ { $documents: rs.status().members }, { $match: { stateStr: "PRIMARY" } }, { $project: { _id: 1, name: 1 } ] )
[ { _id: 3, name: "192.0.2.3:27017" } ]
프라이머리 config 샤드 로 변환합니다.
프라이머리 노드 에 연결하고 내장된 구성 샤드 로 작동하도록 재구성합니다.
rs.conf()메서드를 사용하여 현재 구성을 GET 변수에 저장 .var conf = rs.conf() configsvr필드 설정합니다.conf.configsvr = true version필드 증가시킵니다.conf.version += 1 노드 재구성합니다.
rs.reconfig(conf) 세컨더리가 변경 사항을 복제할 때까지 기다립니다. 노드 document에서 집계 파이프라인 실행 하여 상태를 확인할 수 있습니다.
db.aggregate( [ { $documents: rs.status().members }, { $group: { _id: null, allConfigSvr: { $min: { $eq: ["$configsvr", true] } } } } ] ) { _id: null, allConfigSvr: true } allConfigSvr에true이 표시되면 재구성이 클러스터 의 모든 노드에 전파되었음을 나타냅니다.
클러스터 를 다시 시작합니다.
롤링 업그레이드 수행하여 복제본 세트 config 서버 로 다시 시작합니다.
세컨더리 노드부터 시작하여 각 노드 중지합니다. 서버 종료하려면
db.shutdownServer()메서드를 사용합니다.db.shutdownServer() 더 이상 유지 관리 모드 아닌 config 서버 로 노드 다시 시작합니다.
mongod --config /etc/mongodb.conf --configsvr
라우터를 시작합니다.
mongos 라우터를 시작합니다.
mongos --config /etc/mongodb.conf
config 서버 임베디드 config 샤드 로 전환합니다.
mongos 에 연결하고 transitionFromDedicatedConfigServer 명령을 실행 클러스터에 구성 샤드 추가합니다.
db.adminCommand( { transitionFromDedidcatedConfigServer: 1 } )
라우터에서 포인트 애플리케이션 .
복제본 세트 멤버 대신 mongos 라우터에 연결하도록 애플리케이션을 업데이트합니다.