4 개의 서버로 구성된 복제 세트를 설정했습니다.RS102 MongoDB on ReplicaSet
테스트 목적으로 GridFS를 사용하여 최대 150 억 개의 사진 행을 데이터베이스에 채울 수있는 스크립트를 작성했습니다. 내 사진은 약 15KB입니다.
replSet error RS102 too stale to catch up, at least from 192.168.0.1:27017
: 몇 시간 후, 약 50 백만 열이 후
(?!이 작은 파일을 gridfs을 사용하는 문제가되지 않습니다)하지만 나는 로그이 메시지가 있었다
그리고 여기가 replSet 상태입니다 :
rs.status();
{
"set" : "rsdb",
"date" : ISODate("2012-07-18T09:00:48Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "192.168.0.1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"optime" : {
"t" : 1342601552000,
"i" : 245
},
"optimeDate" : ISODate("2012-07-18T08:52:32Z"),
"self" : true
},
{
"_id" : 1,
"name" : "192.168.0.2:27018",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 64770,
"optime" : {
"t" : 1342539026000,
"i" : 5188
},
"optimeDate" : ISODate("2012-07-17T15:30:26Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:47Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
},
{
"_id" : 2,
"name" : "192.168.0.3:27019",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 64735,
"optime" : {
"t" : 1342539026000,
"i" : 5188
},
"optimeDate" : ISODate("2012-07-17T15:30:26Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:47Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
},
{
"_id" : 3,
"name" : "192.168.0.4:27020",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 65075,
"optime" : {
"t" : 1342539085000,
"i" : 3838
},
"optimeDate" : ISODate("2012-07-17T15:31:25Z"),
"lastHeartbeat" : ISODate("2012-07-18T09:00:46Z"),
"pingMs" : 0,
"errmsg" : "error RS102 too stale to catch up"
}
],
"ok" : 1
세트 여전히 받고있다 datas,하지만 난 "DOWN"제 3 개 서버를 가지고 어떻게 datas를 삭제하고보다 (더 좋은 복구를 진행해야 다시 동기화 wh ich는 오래 걸리지 만 효과가 있을까요?)
특히 : 너무 폭력적인 스크립트로 인해 발생합니까? 프로덕션에서 거의 절대 발생하지 않는다는 것을 의미합니까?
CentOS 6에서 실행 중이며 모든 서버의 크기는 2TB이고 운영 파일 크기는 약 100GB입니다. 4 명의 회원이 있다는 사실을 알기 위해서는 보조 회원을 중재자로 변경하는 것이 좋습니다. 매우 상세한 답변을 보내 주셔서 감사합니다! –
또한 약 12 시간의 삽입 후에 너무 오래된 상태가 나타났습니다. 이는 12 시간 후에 내 oplog가 비동기 로그로 가득 찼다는 것을 의미합니까? –
마지막으로, 4 번째 서버가있는 지점은 3 대의 서버 중 하나가 다운 된 경우 보안을 제공하는 것이 었습니다.이 서버의 역할을 다음과 같이 변경하는 것이 좋습니다 : Arbiter, delayed, hidden ..? –