MongoDB副本集问题
PHPz
PHPz 2017-04-24 09:11:00
0
2
796

假设有这样一个场景,有一个MongoDB的副本集,由于故障导致只剩下两个节点可用,而这两个节点目前都是slave节点。其他的故障节点也无法再重新启动,即无法重新加入到副本集中。
Q:这种情况下是否因为这个副本集就无法使用了?

PHPz
PHPz

学习是最好的投资!

모든 응답(2)
Ty80

대부분의 노드가 다운되고 서로 연결할 수 있는 나머지 노드 수가 절반을 초과하지 않는 경우 설명서를 참조하여 복제본 세트를 재구성할 수 있습니다.
- http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

문서에는 두 가지 방법이 언급되어 있습니다.

  1. 하나는 이 복제본 세트를 강제로 재구성하고, 이 복제본 세트에서 다운된 노드를 삭제하고, 나머지 실행 노드만 새 복제본 세트를 형성하여 새 마스터 노드가 선출될 수 있도록(기본) 하는 것입니다. MongoDB 버전이 2.0 이상인 경우 이 방법을 사용할 수 있습니다.
  2. 또 다른 옵션은 복제 세트를 교체하는 것입니다. MongoDB 버전이 2.0 미만인 경우 이 방법을 사용할 수 있습니다.
迷茫

이는 레플리카 세트의 총 노드 수에 따라 다릅니다. 레플리카 세트에서 서로 연결할 수 있는 노드 수가 총 노드 수의 절반보다 클 경우 새로운 기본 노드를 선택할 수 있습니다. , 복제 세트는 정상적으로 작동할 수 있습니다. 상호 연결된 노드 수가 요약 지점의 절반 이하이면 모든 노드가 보조 노드가 됩니다. 이때 복제 세트는 읽기 전용이 되며, 모든 쓰기 작업이 실패합니다.

이 현상이 발생하는 이유는 mongodb 복제본 세트가 여러 개의 기본 노드를 허용하지 않기 때문입니다. 연결 가능한 노드 수가 전체 노드 수의 절반 이하일 때, 기본 노드가 여전히 가능하다면. 선택하면 여러 개의 기본 노드가 나타나 전체 복제본 세트에 데이터 혼란이 발생할 수 있으며, 실패한 노드가 복원되면 모든 노드가 보조 노드가 될 수 있습니다.

일반 노드가 기본 노드를 선택하기에 충분하지 않은 경우 문제를 해결하는 방법에는 여러 가지가 있습니다.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿