• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Primary 서버가 다운됐을 때에도 durability가 보장되나요?

22.07.12 01:03 작성 조회수 91

0

  • - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
  • - 먼저 유사한 질문이 있었는지 검색해보세요.
  • - 서로 예의를 지키며 존중하는 문화를 만들어가요.
  • - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

Replica Set 강의를 듣고 궁금한점이 생겨 질문드립니다.

Primary server가 CUD 작업을 한 뒤에, 죽었다고 가정을 하겠습니다.

Secondary server가 Primary로 승급이 될텐데 해당 Secondary server에서도 Primary server의 마지막 CUD 작업이 반영이 되어있나요?

Primary server가 죽는 경우에도 비동기적으로 Secondary 서버에 CUD작업이 업데이트 되는건지 궁금합니다.

답변 1

답변을 작성해보세요.

1

좋은 질문입니다

두가지 경우가 있는데요

레플리카 A, B 이렇게 두개가 있다고 가정하고 설명해드릴게요

1. 레플리카 A가 최신 업데이트를 받았고 레플리카 B는 최신 업데이트를 받지 않았는데 프라이머리가 죽은 상황이 오면 레플리카 A가 프라이머리로 승격되고 데이터 손실이 발생하지 않스니다.

2. 레플리카 A, B 모두 최신 업데이트를 받기 전에 프라이머리가 죽었다면 프라이머리만 가지고 있는 최신 업데이트는 레플리카들에 반영되지 않습니다. 레플리카 A, B중에 하나가 프라이머리로 승격이 되요. 그리고 기존 프라이머리가 다시 살아나면 앞서 복제되지 않았던 업데이트들을 롤백해주고 새로 생긴 프라이머리로부터 새로운 업데이트 기록들을 받아서 동기화 해줘요.

 

디폴트 설정이 write=majority로 되어있을건데요. 그러면 레플리카까지 해서 과반 이상이 업데이트를 완료했을 때 성공 리스폰스를 리턴해주게 됩니다. 그러면 2.번의 상황이 생기지 않게 되죠. Transaction을 걸게 되면 무조건 write=majority가 강제 되기 때문에 더더욱 문제 될 일은 없고요

명쾌하게 알려주셔서 감사합니다!

connection string뒷단에 붙어있는 쿼리가 이런 의미였단걸 강사님 덕분에 알게 됐습니다.

좋은 강의 잘 듣고 있습니다, 더운 여름 몸 건강히 보내시길 기도 드리겠습니다.

감사합니다 :)