ElasticSearch 데이터를 스냅샷으로 백업하고 복원하는 방법입니다.
스냅샷을 생성하기 전에 먼저 elasticsearch.yml 파일에 스냅샷이 저장될 레포지토리를 설정합니다.
elasticsearch.yml 파일은 /usr/share/elasticsearch/config/ 디렉토리에 있습니다.
docker로 ElasticSearch 실행 중이라 elasticsearch.yml 파일 위치는 다를 수 있습니다.
수정한 elasticsearch.yml 파일의 내용을 반영하기 위해 ElasticSearch를 재부팅해야 합니다.
docker로 ElasticSearch 실행 중이기 때문에 컨테이너 재부팅했습니다.
스냅샷을 생성하기 전에 먼저 디렉토리를 생성합니다.
test_backup은 생성될 스냅샷이 저장되는 위치입니다.
소유권이 elasticsearch 계정으로 되어있지 않으면 "access_denied_exception" 예외가 발생합니다.
위의 kibana에서 실행한 요청은 스냅샷의 레포지토리를 앞에서 생성한 디렉토리로 등록합니다.
해당 요청에 대해 설명하면
PUT 메소드는 새로운 리소스를 생성하거나 수정하는 HTTP 요청 메소드입니다.
_snapshot은 ElasticSearch에서 스냅샷을 관리하는 엔드포인트입니다.
test_backup은 생성될 스냅샷 레포지토리 이름입니다.
본문 type 속성은 레포지토리가 저장되는 유형으로 fs는 file system을 가리킵니다.
fs 말고 s3, hdfs, asure 등 다양한 타입이 있습니다.
본문 settings.location 속성은 스냅샷이 저장되는 위치입니다.
위의 kibana에서 실행한 요청은 앞에서 등록한 레포지토리에 스냅샷을 생성합니다.
해당 요청에 대해 설명하면
PUT 메소드는 새로운 리소스를 생성하거나 수정하는 HTTP 요청 메소드입니다.
test_backup 이름의 레포지토리에 snapshot_1 이름의 스냅샷을 생성합니다.
본문 indices 속성은 백업할 인덱스 이름입니다.
저는 앞에서 첨부파일 저장한 fine_info 인덱스를 설정했습니다.
백업할 인덱스가 2개 이상이면 "indices": "index1, index2, index3" 이런 식으로 설정하면 됩니다.
본문 ignore_unavailable 속성은 존재하지 않는 인덱스를 신경 쓰는지 확인하는 것으로
true로 설정하면 존재하지 않는 인덱스가 있어도 스냅샷이 정상적으로 생성됩니다.
false로 설정하면 존재하지 않는 인덱스가 있으면 스냅샷이 정상적으로 생성되지 않습니다.
본문 include_global_state 속성은 ElasticSearch의 글로벌 상태, 즉 클러스터의 전체 설정과 메타 데이터를 포함할지 여부를 설정하는 옵션으로
true로 설정하면 스냅샷을 생성할 때 글로벌 상태를 포함하고
false로 설정하면 글로벌 상태에 포함하지 않습니다.
kibana에서 생성된 스냅샷을 확인할 수 있습니다.
아니면 직접 스냅샷 레포지토리에 가서 확인하면 스냅샷이 생성된 것을 확인할 수 있습니다.
생성된 스냅샷으로 복원되는 것을 확인하기 위해 "file_info" 인덱스를 삭제합니다.
인덱스를 삭제하기 전에 도큐먼트 수와 인덱스 사이즈를 확인합니다.
위의 kibana에서 실행한 요청은 삭제한 인덱스를 스냅샷을 통해 복원하고 있습니다.
해당 요청에 대해 설명하면
POST 메소드는 새로운 리소스를 생성하는 HTTP 요청 메소드입니다.
_restore를 통해 앞에서 생성한 test_backup 레포지토리의 snapshot_1 스냅샷을 복원합니다.
본문 indices 속성은 복원할 인덱스 이름입니다.
본문 ignore_unavailable 속성은 존재하지 않는 인덱스를 복원할 때 신경 쓰는지 확인하는 속성으로
true면 스냅샷에 포함된 인덱스가 오류가 있더라도 무시하고 복원하고
false면 인덱스에 오류가 있으면 정상적으로 복원되지 않습니다.
본문 include_global_state 속성은 ElasticSearch의 글로벌 상태를 복원에 포함하는지 설정하는 옵션으로
true면 스냅샷에 포함된 글로벌 상태를 복원하고
false면 복원하지 않습니다.
"file_info" 인덱스가 삭제하기 전과 비교했을 때 정상적으로 복원된 것을 확인할 수 있습니다.
스냅샷을 사용하면 ElasticSearch 데이터를 소실하더라도 안정적으로 복원할 수 있기 때문에 사용방법을 알아두면 좋을 거 같습니다.
'dev > ELK' 카테고리의 다른 글
ElasticSearch 집계 쿼리 (0) | 2023.06.21 |
---|---|
Elastic Search bulk API (0) | 2023.06.12 |
Elastic Search 검색 결과 다운로드 (0) | 2023.06.09 |
Elastic Search 검색 쿼리 (0) | 2023.06.09 |
Kibana Vertical Chart (0) | 2023.06.07 |