지연된 복제본 세트 멤버를 참조하십시오.
지연 멤버에는 복제본 세트의 데이터 세트 복사본이 포함되어 있습니다. 그러나 지연 멤버의 데이터 세트 는 설정하다 의 이전 또는 지연된 상태 를 반영합니다. 예를 예시, 현재 시간이 09:52 이고 멤버의 지연이 1시간 있는 경우, 지연 멤버 는 08:52 보다 최근의 작업이 없습니다.
지연 멤버는 데이터 세트의 "롤링 백업" 또는 실행 중인 "기록" 스냅샷이므로 다양한 종류의 인적 오류를 복구하는 데 도움이 될 수 있습니다. 예를 들어, 지연 멤버를 사용하면 애플리케이션 업그레이드 실패 및 데이터베이스와 컬렉션 제거 등의 연산자 오류를 복구할 수 있습니다.
고려 사항
요구 사항:
지연 멤버:
필수 우선 순위 0 멤버입니다. 지연 멤버가 프라이머리가 되지 않도록 하려면 우선순위를 0으로 설정합니다.
필수 숨겨진 멤버입니다. 애플리케이션이 지연 멤버를 확인하거나 쿼리하지 못하도록 항상 방지합니다.
members[n].votes
를 1로 설정한 경우 프라이머리에 대해 투표를 실시합니다.members[n].votes
를 0으로 설정하여 지연 멤버가 투표권을 갖지 못하도록 하면 성능 향상에 도움이 됩니다.
중요
복제본 세트에 지연 멤버가 포함되어 있는 경우 지연 멤버가 숨겨져 있고 투표권이 없는지 확인합니다.
지연된 복제 세트 멤버를 숨기면 애플리케이션에서 해당 멤버에 직접 연결하지 않고도 지연된 데이터를 보고 쿼리할 수 없습니다. 지연된 복제 세트 멤버를 투표권이 없는 것으로 설정하면 쓰기 고려 "majority"
이(가) 있는 쓰기 작업을 승인하는 데 포함되지 않는다는 것을 의미합니다.
지연된 멤버를 숨기지 않고 하나 이상의 노드를 사용할 수 없게 되면 복제본 세트는 지연된 멤버를 기다려야 하며 커밋 지점이 지연됩니다. 커밋 지점이 지연되면 성능 문제가 발생할 수 있습니다.
예를 들어 지연된 세컨더리가 10분 지연으로 투표하는 프라이머리-세컨더리-지연 복제본 세트 구성을 생각해 봅니다.
지연되지 않은 세컨더리를 사용할 수 없는 경우 프라이머리 지연의 저하된 구성이 "majority"
을(를) 사용하여 쓰기 작업을 승인하려면 최소 10분 이상 기다려야 합니다. 대부분의 커밋 지점이 진행되는 데 시간이 더 오래 걸려 세컨더리를 사용하는 프라이머리 및 중재자(PSA) 복제본 세트에서 캐시 압력과 유사한 성능 문제가 발생합니다.
과반수 커밋 포인트에 대한 자세한 내용은 인과적 일관성 및 읽기 및 쓰기 고려를 참조하세요. 성능 문제 해결에 대한 자세한 내용은 복제본 세트 유지 관리 튜토리얼을 참조하세요.
행동
지연 멤버는 지연된 상태에서 소스 oplog의 작업을 복사하여 적용합니다. 지연 시간을 선택할 때 지연 정도를 고려합니다.
예상 유지 관리 기간보다 크거나 같아야 합니다.
oplog의 용량보다 작아야 합니다. oplog 크기에 대한 자세한 내용은 Oplog 크기를 참조하세요.
쓰기 고려
지연 복제본 세트 멤버는 w: <number>
로 발행된 쓰기 작업을 승인할 수 있습니다. 그러나 w : "majority"
로 실행된 쓰기 작업의 경우 지연 멤버도 투표 멤버(예: members[n].votes
가 0
초과인 경우)여야 "majority"
쓰기 작업을 승인할 수 있습니다. 투표권이 없는 복제본 세트 멤버(예: members[n].votes
가 0
인 경우)는 majority
쓰기 고려를 가진 쓰기 작업을 승인하는 데 기여할 수 없습니다.
지연된 세컨더리는 구성된 secondaryDelaySecs
보다 이전에 완료된 쓰기 확인을 반환할 수 없습니다.
샤딩
샤딩된 클러스터에서는 밸런서가 활성화된 경우 지연 멤버의 유용성이 제한됩니다. 지연 멤버는 지연 상태인 청크 마이그레이션을 복제하기 때문에, 지연 기간 동안 마이그레이션이 발생하는 경우 샤딩된 클러스터의 지연 멤버 상태는 샤딩된 클러스터의 이전 상태로 복구하는 데 유용하지 않습니다.
예시
다음 5개 멤버로 구성된 복제본 세트에서 프라이머리 및 모든 세컨더리에는 데이터 세트의 복사본이 있습니다. 1개 멤버가 3600초(1시간) 지연된 상태에서 작업을 적용합니다. 이 지연 멤버도 숨겨지고 우선 순위가 0인 멤버입니다.
구성
지연 멤버의 members[n].priority
는 0
, members[n].hidden
은 true
, members[n].secondaryDelaySecs
는 지연된 시간(초)과 같습니다.
{ "_id" : <num>, "host" : <hostname:port>, "priority" : 0, "secondaryDelaySecs" : <seconds>, "hidden" : true }
지연 멤버 를 구성하려면 지연 자체 관리 복제본 세트 멤버 구성을 참조하세요.