자체 관리형 복제본 세트 멤버에 대한 유지 관리 수행
개요
복제본 세트를 사용하면 대부분의 유지 관리 기간 동안 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
매개 변수를 제거해야 합니다.