2011-11-22 1 views
3

3 대의 서버로 구성된 mongo db 복제가 있습니다. 제 3 노드는 치명적인 상태에 있음을 보여줍니다 : 나는 문제의 서버에 로그인 할 때Mongodb 복제 세트 서버 상태 : 치명적인 상태가 실제로 의미하는 것은 무엇입니까?

{ 
     "_id" : 3, 
     "name" : "slave2-1:27017", 
     "health" : 1, 
     "state" : 4, 
     "stateStr" : "FATAL", 
     "uptime" : 276, 
     "optime" : { 
      "t" : 1321929689000, 
      "i" : 1 
     }, 
     "optimeDate" : ISODate("2011-11-22T02:41:29Z"), 
     "lastHeartbeat" : ISODate("2011-11-22T02:46:05Z"), 
     "pingMs" : 0 
} 

는 몽고 쉘 프롬프트는 치명적인 상태에 있음을 보여줍니다. 치명적인 상태는 실제로 무엇을 의미하며 어떻게 해결할 수 있습니까?

+0

노드를 제거하고 다시 추가 할 수 있었지만 이제는 작동합니다. 나는 아직도이 원인을 알고 싶다. – Fatmuemoo

답변

2

치명적 상태는 구성원이 복구 할 수없는 상태에 있음을 의미합니다. 다시 온라인 상태로 전환하려면 개입해야합니다. 시스템을 종료하고 문제를 진단해야합니다 (치명적인 상태에있는 이유를 모르는 경우 로그에 정보가 있어야합니다).

치명적인 상태의 일반적인 원인은 잘못된 구성입니다 (2.0 이전의 집합에서 노드 제거, 실패한 롤백 또는 처리되지 않은 예외적 인 상황).

0

사실 나는 여기에서 뭔가를 말하고 있습니다. 치명적인 상태는 회원이 회복 할 수없는 상태에 있다는 것을 의미하지 않습니다. 현재 선출 된 기본 노드가 현재의 치명적 상태 노드와 완전히 다른 상태에 있음을 의미 할 수 있습니다. 현재의 치명적 오류를 주 공격으로 만들면 어떤 코드가 수정 될까요? 치명적인 상태 노드 dbpath를 현재 선택된 기본 노드로 복제 한 다음 모든 구성원이 다시 동기화를 시작하여이를 수행 할 수있었습니다. 치명적인 상태가 손상되거나 손상된 데이터가 전혀 있다는 것을 의미하지는 않습니다!

관련 문제