개요
ES에서 색인을 스냅샷 형태로 저장, 다른 클러스터에서 복원하는 방법을 정리하여 포스팅한다. 스냅샷을 추출할 클러스터를 원본 클러스터, 스냅샷 복원을 통해 인덱스를 저장할 클러스터를 사본 클러스터로 표현하겠다.
원본 클러스터 TODO
원본 클러스터에서 할 일은 스냅샷용 Repository 생성 및 Repository로 스냅샷을 저장하는 것이다.
elasticsearch.yml 수정
스냅샷용 Repository를 생성하기 위해 elasticsearch.yml에서 아래와 같이 경로를 지정하여 Repository가 저장될 물리 경로를 지정한다.
ES 재시작
위의 환경설정 파일 변경 후 ES를 재시작 한다.
Repository 추가
Repository를 아래와 같이 생성한다.
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"compress": true,
"location": "/data12/backup"
}
}
Repository 보기
Repository 생성후 정상 생성되었는지 확인 해 본다.
인덱스 보기
이제 스냅샷으로 만들 인덱스를 아래와 같이 조회하여 확인해 본다. 목적은 인덱스의 용량을 가늠해 (혹시나 운영중인 클러스터 라면) 스냅샷 생성으로 인한 장애 발생 가능성을 검토하기 위함이다.
스냅샷 만들기
아래와 같이 원하는 Repository로 스냅샷을 만든다.
PUT /_snapshot/my_backup/manysong_20170206?wait_for_completion=true
{
"indices": "manysong_1_t",
"ignore_unavailable": true,
"include_global_state": true
}
스냅샷 파일로 압축하기
스냅샷이 다 만들어지면 Repository 물리경로를 압축하여 사본 클러스터로 스냅샷을 옮긴다.
사본 클러스터 TODO
사본 클러스터에서는 Repository 생성후 옮겨온 스냅샷을 복사하여 스냅샷을 복원한다.
다른 클러스의 elasticsearch.yml 수정
위의 원본 클러스터에서 한것 처럼 elasticsearch.yml를 수정한다.
ES 재기동
마찬가지로 ES를 재기동 한다.
다른 클러스터에서 Repository 추가
원본 클러스터 스냅샷을 복사하기 전 Repository를 생성해 준다.
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"compress": true,
"location": "/data12/backup"
}
}
스냅샷 파일 붙여넣기
Repository를 생성 후 스냅샷 내용을 옮겨준다.
스냅샷 확인해보기
스냅샷이 존재하는지 확인해 보면 존재하는 것을 알 수 있다.
스냅샷 으로 복원
아래의 명령어로 스냅샷을 복원하면 된다.
POST /_snapshot/my_backup/manysong_20170206/_restore
{
"indices": "manysong_1_t",
"index_settings": {
"index.number_of_replicas": 0
},
"ignore_index_settings": [
"index.refresh_interval"
]
}