2015-01-12 2 views
0

최근에 나는 elasticsearch 클러스터에 3 개의 데이터 노드로 구성된 snapshot 인덱스를 만들었습니다.클러스터를 통한 ElasticSearch 스냅 샷

내 주 목적은 다른 클러스터에서이 인덱스를 이동하는 것입니다.

명령은 내가 사용 :

PUT /_snapshot/my_backup 

{ 
    "type": "fs", 
    "settings": { 
     "location": "/home/me/backup", 
     "compress": true 
    } 
} 


PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true 
{ 
    "indices": "daily-20141127" 
} 

참고 : 쿼리는 동일한 데이터 노드에서 실행 된 위. 해당 노드에서 백업 인덱스의 파편을 포함 : (인덱스 이름)

Snapshot이 성공적으로 내가 쿼리이 백업 위치에있는 각 노드가 폴더를했다 명중 곳에서 다른 노드에 위의 위치에 있지만 년에 만들어졌습니다.

예 :
노드 1 : 집/나/my_backup/인덱스/1,2,3
노드 2 : 홈/ME/my_backup/인덱스/4,5,6
노드 3 : 홈/ME/my_backup/인덱스/7,8,9

그래서 클러스터를 통해 모든 인덱스 폴더를 스냅 샷의 메타 데이터가있는 노드에 수동으로 복사하여 백업을 완료해야했습니다. 그런 다음 백업 폴더를 새 클러스터에 복사하고 복원했습니다 (복원 절차는 정상입니다).

백업 색인의 모든 색인 폴더는 클러스터를 통해 분할되지 않고 1 개의 노드에 있습니까?

답변

5

지정하는 location은 "공유"위치 여야하며 저장소에 지정된 경로는 모든 노드에서 공유되는 동일한 디렉토리를 가리켜 야합니다. 노드의 로컬 디렉토리 일 수는 없습니다. 예를 들어 위치는 별도의 컴퓨터에서 네트워크 공유 마운트가 될 수 있으며 모든 노드가이를 가리켜 야하며 액세스 할 수 있어야합니다.

이유는 각 노드가 샤드의 기본 또는 복제본을 보유 할 수 있으며 특정 샤드에 포함 된 문서의 복사본을 만든 다음 "공유"위치로 옮길 수 있어야하기 때문입니다.

+1

나는 잠시 지났지 만, 왜 이것이 또한 localhost에도 해당되는지 궁금합니다. 나는 ES가 파일을 만들 수 없다고 주장하는 문제에 직면 해있다. 오류가 계속 "이 설정이 비어 있기 때문에 path.repo에 지정된 위치와 일치하지 않습니다."라고 말하면서 아직 내 elasticsearch.yml에 경로가 있습니다. – JChao

+1

@JChao 각 노드에 지정된 경로가 있습니까? –

+0

이봐,이게 해결 됐어. 문제는 내 어리 석고 입력 된 path.repo로 인해 경로, repo ...... – JChao