자체 관리형 복제본 세트 멤버에 대한 유지 관리 수행
개요
복제본 세트를 사용하면 대부분의 유지 관리 기간 동안 MongoDB 배포를 계속 사용할 수 있습니다.
이 문서에서는 복제본 세트의 각 멤버에 대한 유지 관리를 수행하기 위한 기본 절차를 간략하게 설명합니다. 또한, 이 특정 시퀀스는 프라이머리 배포를 사용할 수 없는 시간을 최소화하고 전체 배포에 미치는 영향을 제어합니다.
해당 단계를 일반적인 복제 세트 작업, 특히 최신 버전의 MongoDB로 업그레이드하는 등 절차의 기반으로 사용합니다.
절차
복제본 세트의 각 멤버에 대해 세컨더리 멤버부터 시작하여 프라이머리 멤버로 끝나는 다음 이벤트 시퀀스를 수행합니다.
다른 포트에서 세컨더리를 독립형으로 다시 시작합니다.
운영 체제 셸 프롬프트에서 mongod
를 독립형 인스턴스로 다시 시작하세요.
구성 파일을 사용하는 경우 다음 구성 업데이트를 수행합니다.
replication.replSetName
옵션을 코멘트합니다.net.port
을(를) 다른 포트로 변경합니다. 원래 포트 설정을 코멘트로 기록해 둡니다.setParameter
섹션에서 파라미터disableLogicalSessionCacheRefresh
를true
로 설정합니다.mongod
가 샤드 또는 config 서버 멤버인 경우 다음과 같아야 합니다.sharding.clusterRole
옵션을 코멘트합니다.setParameter
섹션에서 매개변수skipShardingConfigurationChecks
을(를)true
(으)로 설정합니다.
예를 들어, 유지 관리를 위해 샤드/config 서버 복제본 세트 멤버에 대한 유지 관리를 수행하는 경우, 업데이트된 구성 파일에는 다음 예시와 같은 내용이 포함됩니다.
net: bindIp: localhost,<hostname(s)|ip address(es)> port: 27218 # port: 27018 #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true
명령줄 옵션을 사용하는 경우 다음 구성을 업데이트하여 다시 시작합니다.
--port
를 다른 포트로 수정합니다.--setParameter
옵션에서 매개 변수disableLogicalSessionCacheRefresh
를true
로 설정합니다.mongod
가 샤드 또는 config 서버 멤버인 경우 다음과 같아야 합니다.샤드 멤버인 경우
--shardsvr
를 제거하고 config 서버 멤버인 경우--configsvr
를 제거합니다.setParameter
섹션에서 매개변수skipShardingConfigurationChecks
을(를)true
(으)로 설정합니다.
예를 예시 , 샤딩된 클러스터 의 일부가 아닌 복제본 세트 멤버를 다시 시작하려면 다음을 수행합니다.
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true
예를 들어 유지 관리를 위해 샤드/구성 서버 복제본 세트 멤버를 다시 시작하려는 경우입니다.
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true
경고
인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.
복제본 세트 멤버를 독립형 인스턴스로 다시 시작하는 경우에도 항상 동일한 사용자로 mongod
를 시작하세요.
세컨더리에서 유지 관리 작업을 수행합니다.
멤버가 독립형 인 동안 mongosh
를 사용하여 유지 관리를 수행합니다.
mongo --port 27218
중요
멤버가 독립형인 동안에는 이 멤버에 대한 쓰기가 복제되지 않으며 이 멤버에 대한 쓰기가 복제본 세트의 다른 멤버에 복제되지 않습니다.
이 독립형의 모든 쓰기가 복제본 세트에 다시 합류할 때 멤버에 적용될 oplog 쓰기와 충돌하지 않는지 확인하세요.
mongod
복제본 세트 의 멤버로 를 다시 시작합니다.
모든 유지 보수 작업을 수행한 후 다음 절차를 사용하여 일반 포트에서 복제본 세트의 멤버로 mongod
를 재시작합니다.
mongosh
에서 유지 관리를 완료한 후 독립형 서버 를 종료합니다.
use admin db.shutdownServer()
mongod
인스턴스를 원래 구성의 복제본 세트 멤버로 다시 시작합니다. 즉, 독립형으로 시작할 때 변경한 구성을 취소합니다.
팁
반드시 disableLogicalSessionCacheRefresh
매개 변수를 제거합니다.
샤드 또는 구성 서버 멤버의 경우 skipShardingConfigurationChecks
매개 변수를 제거해야 합니다.
시작되면 mongosh
를 다시 시작된 인스턴스 에 연결합니다.
세컨더리 는 프라이머리 를 따라잡는 데 시간이 걸립니다. mongosh
에서 다음 명령을 사용하여 멤버가 RECOVERING
상태 에서 SECONDARY
상태 로 따라잡았는지 확인합니다.
rs.status()
프라이머리 마지막에 유지 관리를 수행합니다.
모든 세컨더리에 대한 유지 관리 작업을 완료한 후 프라이머리에 대한 유지 관리를 수행하려면
mongosh
를 프라이머리에 연결하고rs.stepDown()
을 사용하여 프라이머리가 우선순위를 내려놓게 하고 세컨더리 중 하나가 새 프라이머리로 선택되도록 합니다. 멤버가 5분 동안 다시 프라이머리로 선출되지 않도록 대기 시간을 300초로 지정합니다.rs.stepDown(300) 프라이머리가 우선 순위를 내려놓으면 복제본 세트는 새로운 프라이머리를 선출합니다.
mongod
를 독립형 인스턴스로 다시 시작하여 다음과 같이 구성을 업데이트합니다.
구성 파일을 사용하는 경우 다음 구성 업데이트를 수행합니다.
replication.replSetName
옵션을 코멘트합니다.net.port
을(를) 다른 포트로 변경합니다. 원래 포트 설정을 코멘트로 기록해 둡니다.--setParameter
옵션에서 매개 변수disableLogicalSessionCacheRefresh
를true
로 설정합니다.mongod
가 샤드 또는 config 서버 멤버인 경우 다음과 같아야 합니다.sharding.clusterRole
옵션을 코멘트합니다.setParameter
섹션에서 매개변수skipShardingConfigurationChecks
을(를)true
(으)로 설정합니다.
예를 들어, 유지 관리를 위해 샤드/config 서버 복제본 세트 멤버에 대한 유지 관리를 수행하는 경우, 업데이트된 구성 파일에는 다음 예시와 같은 내용이 포함됩니다.
net: bindIp: localhost,<hostname(s)|ip address(es)> port: 27218 # port: 27018 #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true
경고
인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.
명령줄 옵션을 사용하는 경우 다음과 같이 구성을 업데이트합니다.
--port
를 다른 포트로 수정합니다.--setParameter
옵션에서 매개 변수disableLogicalSessionCacheRefresh
를true
로 설정합니다.mongod
가 샤드 또는 config 서버 멤버인 경우 다음과 같아야 합니다.샤드 멤버인 경우
--shardsvr
를 제거하고 config 서버 멤버인 경우--configsvr
를 제거합니다.setParameter
섹션에서 매개변수skipShardingConfigurationChecks
을(를)true
(으)로 설정합니다.
예를 예시 , 샤딩된 클러스터 의 일부가 아닌 복제본 세트 멤버를 다시 시작하려면 다음을 수행합니다.
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter disableLogicalSessionCacheRefresh=true
예를 들어 유지 관리를 위해 샤드/구성 서버 복제본 세트 멤버를 다시 시작하려는 경우입니다.
mongod --port 27218 --dbpath /srv/mongodb --bind_ip localhost,<hostname(s)|ip address(es)> --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true
경고
인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.
이제 독립형에서 유지 관리 작업을 수행합니다.
중요
멤버가 독립형인 동안에는 이 멤버에 대한 쓰기가 복제되지 않으며 이 멤버에 대한 쓰기가 복제본 세트의 다른 멤버에 복제되지 않습니다.
이 독립형의 모든 쓰기가 복제본 세트에 다시 합류할 때 멤버에 적용될 oplog 쓰기와 충돌하지 않는지 확인하세요.
모든 유지 관리 작업을 수행한 후
mongod
인스턴스를 원래 구성의 복제본 세트 멤버로 다시 시작합니다. 즉, 독립형으로 시작할 때 수행한 구성 변경을 실행 취소합니다.팁
반드시
disableLogicalSessionCacheRefresh
매개 변수를 제거합니다.샤드 또는 구성 서버 멤버의 경우
skipShardingConfigurationChecks
매개 변수를 제거해야 합니다.