Gibbs Kim's playground

[ElasticStack-10] Data Snapshot & Restore 본문

Tech 기록지/Elastic Stack

[ElasticStack-10] Data Snapshot & Restore

Lio Grande 2020. 6. 3. 14:40

ELK 6.4.1 에서 ELK 7.6.2 로의 데이터 이동을 snapshot 기능을 활용하여 수행한 과정을 기록합니다.

기존에 데이터가 저장된 ELK 버전 정보

더보기

Elasticsearch 6.4.1 || Logstash 6.4.1 || Kibana 6.4.1

저장된 데이터 Sample (CSV file)

 

ST_MetroStation_Address.csv
0.15MB

Kibana 6.4.1에 등록된 IndexPatterns : csv2el_seoulmetro

I. Snapshot

1) Kibana 6.4.1에서 Snapshot 수행을 위한 fs(file system) 경로(repository) 설정 (in DevTools)

POST /_snapshot/my_backup
{
	"type": "fs",
    "settings": {
    	"location": "path.repo",
        "compress": true
    }
}

2) elasticsearch.yml 마지막 줄에 경로 설정 (과정 1)의 location 항목을 지정해주는 과정)

# something exists above about elasticsearch.yml initial settings
## directory of path.repo is example
path.repo: ["elasticsearch/backup"]

 경로를 설정한뒤에 elasticsearch를 재시작 해줘야하고, 지정한 디렉토리의 접근 권한도 확인하여야 한다. (Linux 계열이라면 해당 부분 확인 필수)

3) Snapshot 실행

# PUT /SNAPSHOT_CMD/SNAPSHOT_OBJ?SNAPSHOT_SEQ_COMPLETE_OR_WAIT_OPTION
PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
{
	"ignore_unavailable" : true,
    "include_global_state" : true
}
## 모든 인덱스를 대상으로 snapshot 생성
## 만약, 특정인덱스(Ex: index_1)만 지정하고자 한다면 다음 옵션을 추가해준다.
## "indices": $(index_1)

  해당 과정 실행 후 'path.repo' 아래에 Elasticsearch indices 생성

4) 생성된 Snapshot 확인

GET /_snapshot/backup/snapshot_1

II. Restore

더보기

과정 I. 에서 생성한 indices 폴더를 임의의 경로(path.repo)로 복사하여 진행하였음.

(Ex: ES_HOME/elasticsearch-7.6.2/backup)

1) Snapshot 경로(repository) 설정

POST /_snapshot/my_backup
{
	"type": "fs",
    "settings": {
    	"location": "path.repo",
        "compress": true
    }
}

 path.repo는 ES_HOME/elasticsearch-7.6.2/backup와 동일

2) repository path 설정 (in elasticsearch.yml)

# basic options above about elasticsearch 7.6.2
path.repo: [ES_HOME/elasticsearch-7.6.2/backup"]

3) 데이터 resotre

POST /_snapshot/my_backup/snapshot_1/_restore
{
	"indices": "index_1,index_2",
    "ignore_unavailable": true,
    "include_global_state": true,
    "rename_pattern": "index_(.+)",
    "rename_replacement": "restored_index_$1"
}

 "indices" 옵션은 특정 인덱스를 복원할 때 사용

   index_1 : snapshot을 수행한 쪽의 인덱스 명

   index_2 : restore를 수행할 쪽의 인덱스 명

중복되는 index가 없다면 해당 옵션 무시해도 상관없음

4) 완료 후, Kibana에서 Index pattens를 생성한 후의 결과 예시 (in version 7.6.2)