BackEnd/Elasticsearch
19. 스냅숏(Snapshot)을 이용한 백업과 복구
hanseom
2021. 10. 12. 17:41
반응형
엘라스틱서치에서 제공하는 _snapshot API을 이용해 개별 인덱스를 백업할 수도 있고 클러스터 전체를 스냅숏으로 만드는 것도 가능합니다.
1. 백업
# 1) config 폴더 내 elasticsearch.yml 설정 파일에 스냅숏 경로 지정
path.repo: ["/home/snapshot/elastic/backup"]
# 2) 검색엔진 재시작
# 3) 리포지토리(스냅숏들을 저장하는 논리적인 공간) 생성
PUT _snapshot/movie_data_backup
{
"type": "fs",
"settings": {
"location": "/home/snapshot/elastic/backup",
"compress": true
}
}
# 4) 스냅숏 생성
# 기본적으로 스냅숏 대상이 되는 인덱스는 더 이상 변경이 없는 인덱스여야 한다.
# wait_for_completion=true : 스냅숏 생성이 완료될 때까지 wait
PUT _snapshot/movie_data_backup/movie_shapshot_part1?wait_for_completion=true
{
"indices": "movie_search_211012",
"ignore_unavailable": true,
"include_global_state": false
}
# 스냅숏 생성 시 스냅숏 이름은 유일해야 하며
# 백업을 하게 되면 백업한 인덱스명, 엘라스틱서치 버전, 스냅숏 버전 ID 등을 반환합니다.
# 5) 백업된 스냅숏 정보 확인
GET _snapshot/movie_data_backup/_all
[스냅숏 설정 시 제공되는 옵션]
location | 스냅숏의 저장 경로를 설정한다. |
compress | 스냅숏 생성 시 압축을 수행한다. 이때 데이터는 압축되지 않으며 메타데이터만 압축 대상이 된다. |
chunk_size | 생성되는 파일을 특정 크기로 나눠서 생성할 수 있다. 기본적으로 스냅숏은 하나의 파일로 생성된다. |
max_restore_bytes_per_sec | 스냅숏 복원 시 속도를 설정한다. 기본적으로 초당 40MB의 속도를 낸다. |
max_snapshot_bytes_per_sec | 스냅숏 생성 시 속도를 설정한다. 기본적으로 초당 40MB의 속도를 낸다. |
readonly | 리포지토리를 읽기 전용으로 생성한다. |
2. 복구
# 복구
POST _snapshot/movie_data_backup/movie_snapshot_part1/_restore
# 동일 인덱스 존재 시 삭제 후 복구
DELETE movie_search_211012
POST _snapshot/movie_data_backup/movie_snapshot_part1/_restore
# 스냅숏 삭제
DELETE _snapshot/movie_data_backup/movie_snapshot_part1
반응형