2017-11-15 22 views
2

Kuvernnetes에서 ArangoDB 3.2.2를 사용합니다. 하나의 master db와 하나의 slave db가 있습니다. 나는 다음과 같은 명령을 입력 arangosh 내부 슬레이브 DB에 : 몇 초 동안Arangodb는 얼마 후 비동기 복제를 중단합니다.

db._useDatabase("mydb"); 

equire("@arangodb/replication").setupReplication({ 
    endpoint: "tcp://master:8529", 
    username: "root", 
    password: "123456", 
    database: "mydb", 
    verbose: true, 
    includeSystem: false, 
    incremental: true, 
    autoResync: true, 
    maxConnectRetries: 20, 
    adaptivePolling: false, 
    idleMinWaitTime: 0.001, 
    idleMaxWaitTime: 1.5, 
    chunkSize: 5000 
}); 

명령 블록을 한 후 복제가 시작되고 나는 마스터 DB의 컬렉션이 복제되는 것을 볼 수 있습니다 노예. 그러나 얼마 후 복제가 중지됩니다. 내가 실행하면

: 는 ("@의 arangodb/복제")를 필요로 이것은 내가 볼 것입니다 을 applier.state :. 내가 다시 복제 명령을 실행하면

{ 
    "state" : { 
    "running" : true, 
    "lastAppliedContinuousTick" : "6384020", 
    "lastProcessedContinuousTick" : "6384026", 
    "lastAvailableContinuousTick" : "6389353", 
    "safeResumeTick" : "6382367", 
    "progress" : { 
     "time" : "2017-11-15T12:14:09Z", 
     "message" : "fetching master log from tick 6382367, first regular tick 6367894, barrier: 0, open transactions: 0", 
     "failedConnects" : 0 
    }, 
    "totalRequests" : 1155, 
    "totalFailedConnects" : 0, 
    "totalEvents" : 83, 
    "totalOperationsExcluded" : 0, 
    "lastError" : { 
     "errorNum" : 0 
    }, 
    "time" : "2017-11-15T12:15:47Z" 
    }, 
    "server" : { 
    "version" : "3.2.2", 
    "serverId" : "77969163868004" 
    }, 
    "endpoint" : "tcp://master:8529", 
    "database" : "mydb" 
} 

가 나는 것을 볼 수 컬렉션이 다시 복제되고 있습니다 ...

어떻게 안정적인 복제 프로세스를 초기화 할 수 있습니까? 이것이 비동기 복제임을 이해하지만 사용 사례에서 가능한 빨리 슬레이브를 업데이트해야합니다 ... 내 복제 구성이 내 필요에 맞습니까?

+0

정확하게 알고있는 경우 복제 적용자는 해당 상태를 "실행 중"으로보고하고 다른 분석 결과는 실제로 마스터에서 변경 사항을 적용하지 않는 것으로 나타납니다. 어떻게하면 applier가 작동하지 않는다는 결론을 내릴 수 있는지 이해하고 싶습니다. 컬렉션의 문서 수를보고 있습니까? 아니면 applier의'state()'명령의 여러 진행 결과를보고 있습니까? 여기서 적어도 틱 값과'totalRequests' 값은 시간이 지남에 따라 증가해야합니다. 그렇지 않은 경우, 지원자는 실제로 교수형에 처해있는 것처럼 보입니다. – stj

+0

그런데, 설정된 'chunkSize'값은 다소 낮습니다. 마스터가 반환하는 배치가 그다지 크지 않다는 것을 의미하는 5KB입니다. 많은 문서가 삽입/수정/제거되거나 문서 크기가 일반적으로 약 100 바이트보다 큰 경우 5KB는 그리 많지 않습니다. 'chunkSize' 값을 약 1MB로 늘리고 도움이되는지, 기본값을 사용하는지 확인하는 것이 좋습니다. 'adaptivePolling'을 켜기를 제안합니다. 그 이유는 할 일이 많지 않을 때 슬레이브에서 마스터로 보내는 HTTP 요청이 적어지기 때문입니다. – stj

+0

복제 할 수없는 일부 데이터에 대해 ArangoDB 로그 파일에 오류가 기록 되었습니까? – stj

답변

0

ArangoDB 3.2.2의 버그 인 것 같습니다. ArangoDB 3.2.8에서 복제가 작동하는 것처럼 보입니다 (rocksdb조차도).