(Mongodb) Replica Set

*레플리카셋에는 3가지 멤버가있다.
-> Primary
-> Secondaries
-> Arbiter


*Arbiter
->Arbiter는 데이터의 복사본을 유지 하지 않는다,
그러나 Primary가 이용가능하지 않는다면 Primary를 유지하기 위한 투표에 참여한다,


<Primary>


Primary는 write 오퍼레이션을 사용하는 멤버이다,  MongoDB는 write오퍼레이션을 작동한다 그리고 Primary`s oplog에 저장한다,
Secondary는 이 로그를 복제하고 데이터셋에 적용한다,

Replica Set 멤버들은 read Operation을 사용한다.
그러나 default 조건으로 application은 primary member에서 read를 다이렉트로 한다.

레플리카셋에서 많아야 한 개의 Primary를 가진다. 만약 현재의 primary가 이용 불가능해지면 투표를 통해 primary를 선정한다.


 <Secondaries>

Secondary는 Primary`s data set의 복사본을 유지한다.
데이터를 복제하기 위해 secondary는 primary`s oplog로부터 비동기적 프로세스로 작업을 수행한다.




클라이언트는 secondaries로 부터 write를 할 수 없을 지라도, read는 가능하다.


다음은 특별한 목적에 따라 secondary를 설정할 수 있는 것들이다.
  • Primary가 투표에 참여하는 것을 막는다. 
  • 읽기 작동을 방지한다. application이 작동하는 경우 seperation이 필요하다.
  • historical snapshot을 계속 유지하는 것이 가능하다. 이것은 특별한 에러가 발생했을 때 회복시켜주는 것이다. 의도하지 않게 데이터베이스가 삭제된 경우

<Arbiter>

Arbiter는 데이터셋을 복사 할 수 없고, primary가 될 수 없다.
Replica sets 은 primary를 선정할 수 있는 arbiter가 될 수 있다.
Arbiter는 항상 1 표를 행사 할 수 있다. 그러므로 replica sets 는 홀 수개 표가 될 수 있게 만들어준다.


For replica sets with an arbiter, replica set protocol version 1 (pv1) increases the likelihood of rollback of w:1 writes compared to replica set protocol version 0  (pv0). 









댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬