Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

자체 관리형 Config 서버 교체

이 페이지의 내용

  • 개요
  • 고려 사항
  • 절차

중요

다음 절차는 5.0 config 서버에 적용됩니다. MongoDB의 이전 버전에 대해서는 해당 버전의 MongoDB 매뉴얼을 참조하세요.

config 서버 복제본 세트가 읽기 전용이 되면(즉, 프라이머리가 없는 경우) 샤딩된 클러스터는 청크 분할 및 마이그레이션과 같은 클러스터 메타데이터를 변경하는 작업을 지원할 수 없습니다. 청크를 분할하거나 마이그레이션할 수는 없지만 애플리케이션에서 샤딩된 클러스터에 데이터를 쓸 수 있습니다.

config 서버 중 하나를 사용할 수 없거나 작동할 수 없는 경우 가능한 한 빨리 수리하거나 교체합니다. 다음 절차에서는 config 서버 복제본 세트 의 멤버를 새 멤버로 바꿉니다.

이 튜토리얼은 MongoDB 5.0에만 해당됩니다. MongoDB의 이전 버전에 대해서는 해당 버전의 MongoDB 매뉴얼을 참조하세요.

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를 실행 중이고 votespriority 설정이 0보다 큰 보조를 추가하는 경우, 투표 회원의 과반수가 온라인 상태이지만 기본 회원을 선출할 수 없는 경우가 발생할 수 있습니다. 이러한 상황을 방지하려면 priority :0votes :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)

    여기서 nmembers 배열에 있는 새 노드의 배열 인덱스입니다.

경고

  • rs.reconfig() 2} 셸 메서드는 현재 기본값이 강제로 물러나도록 하여 선거를 실시할 수 있습니다. 기본 연결이 종료되면 mongod 모든 클라이언트 연결을 닫습니다. 일반적으로 10~20초 정도 소요되지만 예약된 유지 관리 기간 동안 이러한 변경을 수행해 보세요.

  • 유효성 검사 규칙은 MongoDB 버전마다 다를 수 있으므로 다른 MongoDB 버전의 멤버를 포함하는 복제본 세트를 다시 구성하지 마십시오.

4

프라이머리 멤버를 교체하는 경우 종료하기 전에 먼저 프라이머리 멤버의 단계를 낮춥니다.

5

교체 config 서버의 초기 동기화가 완료되면 프라이머리에 연결된 mongosh 세션에서 rs.remove()를 사용하여 이전 멤버를 제거합니다.

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

mongos 인스턴스는 다시 시작하지 않고도 config 서버 복제본 세트 멤버의 변경 사항을 자동으로 인식합니다.

6

복제본 세트 config 서버의 경우 mongos 인스턴스는 --configdb 또는 sharding.configDB 설정에서 구성 서버 복제본 세트 이름과 복제본 세트 멤버 중 하나 이상을 지정합니다.

따라서 mongos 인스턴스가 --configdb 또는 sharding.configDB 설정에서 제거된 복제본 세트 멤버를 지정하지 않는 경우 추가 조치가 필요하지 않습니다.

그러나 mongos 인스턴스가 --configdb 또는 configDB 설정에서 제거된 멤버를 지정한 경우 다음 중 하나를 수행합니다.

  • 다음에 mongos를 다시 시작할 때 사용할 수 있도록 설정을 업데이트하거나

  • 이전 config 서버를 제공한 시스템을 가리키는 DNS 항목을 수정하면 동일한 호스트 이름이 새 config 서버를 가리키게 됩니다.

돌아가기

config 서버 관리

이 페이지의 내용