자체 관리형 복제본 세트에서 구성원 제거
복제본 세트의 노드는 다음 절차 중 하나를 사용하여 제거 가능합니다.
다음을 사용하여 멤버 제거 rs.remove()
제거하려는 멤버의
mongod
인스턴스를 종료합니다. 인스턴스를 종료하려면mongosh
를 사용하여 연결하고db.shutdownServer()
메서드를 사용합니다.복제본 세트의 현재 프라이머리에 연결합니다. 현재 프라이머리를 확인하려면 복제본 세트의 무작위 멤버에 연결된 상태에서
db.hello()
를 사용합니다.다음 양식 중
rs.remove()
를 사용하여 멤버를 제거합니다.rs.remove("mongod3.example.net:27017") rs.remove("mongod3.example.net") 복제본 세트에서 새 프라이머리를 선택해야 하는 경우 MongoDB는 셸 연결을 잠시 해제할 수 있습니다. 이러한 경우 셸이 자동으로 다시 연결됩니다. 명령이 성공하더라도 셸에
DBClientCursor::init call() failed
오류가 표시될 수 있습니다.
다음을 사용하여 멤버 제거 rs.reconfig()
members
배열에서 해당 멤버가 제거된 복제본 구성 문서를 사용하여 복제본 세트 재구성하는 방식으로 멤버를 제거할 수 있습니다.
rs.reconfig()
는 한 번에 최대 1
voting
개 이하의 멤버를 추가하거나 제거할 수 있습니다. 복제본 세트에서 여러 투표 멤버를 제거하려면 rs.reconfig()
작업을 실행하여 한 번에 멤버를 하나씩 제거합니다. 자세한 내용은 재구성 시 한 번에 하나 이하의 투표 멤버를 추가하거나 제거할 수 있음에서 확인 가능합니다.
절차
제거하려는 멤버의
mongod
인스턴스를 종료합니다. 인스턴스를 종료하려면mongosh
를 사용하여 연결하고db.shutdownServer()
메서드를 사용합니다.복제본 세트의 현재 프라이머리에 연결합니다. 현재 프라이머리를 확인하려면 복제본 세트의 무작위 멤버에 연결된 상태에서
db.hello()
를 사용합니다.rs.conf()
메서드를 실행하여 현재 구성 문서를 확인하고members
배열에서 제거할 멤버의 위치를 결정합니다.예시
mongod_C.example.net
은 아래 구성 파일의2
위치에 있습니다.{ "_id" : "rs", "version" : 7, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" }, { "_id" : 2, "host" : "mongod_C.example.net:27017" } ] } 현재 구성 문서를
cfg
변수에 할당합니다.cfg = rs.conf() cfg
객체를 수정하여 멤버를 제거합니다.예시
mongod_C.example.net:27017
를 제거하려면 다음 JavaScript 작업을 사용합니다.cfg.members.splice(2,1) 다음을 실행하여 복제본 세트 구성 문서를 새 구성으로 덮어씁니다.
rs.reconfig(cfg) 새 구성을 확인하려면
rs.conf()
실행합니다.위의 예에서 출력은 다음과 같습니다:
{ "_id" : "rs", "version" : 8, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" } ] }