728x90
클러스터와 인덱스의 데이터가 커질수록 백업이 필요하다. 이러한 문제를 해결하기 위해 엘라스틱서치에서는 _snapshot API를 제공한다.
스냅숏 기능을 이용해 개별 인덱스를 백업할 수도 있고, 클러스터 전체를 스냅숏으로 만드는 것도 가능하다.
스냅숏 만들기
1. elasticsearch.yml에 스냅숏 사용지 지정
path repo: [ */home/snapshot/elastic/backup* ]
2. 레포지토리 생성하기
PUT _snapshot/movie_data_backup
{
"type": "fs",
"settings": {
"location": "/home/snapshot/elastic/backup",
"compress": true
}
}
- 레포지토리는 스냅숏들을 저장하는 논리적인 공간으로, 물리적으로 설정된 디렉터리 내부에만 생성할 수 있다.
- 레포지토리를 생성할 때 다양한 설정값을 지정할 수 있으며, 이를 통해 생성되는 파일을 다수의 작은 파일로 나누어 저장할 수도 있고, 스냅숏으로 생성하거나 복원하는 속도를 조정할 수도 있다.
- 스냅숏을 생성하거나 복원하는 작업은 시스템 리소스를 많이 사용하기에 제공되는 옵션을 적절히 활용해야 한다.
| location | 스냅숏의 저장 경로를 설정한다. |
| compress | 스냅숏 생성 시 압축을 진행한다. 메타 데이터만 압축 대상이다(데이터는 X) |
| chunk_size | 생성되는 파일을 특정 크기로 나눠서 생성한다.(기본적으로 스냅숏은 1개 파일로 생성) |
| max_restore_bytes_per_sec | 스냅숏 복원 시 속도를 설정한다(기본적으로 초당 40MB) |
| max_snapshot_bytes_per_sec | 스냅숏 생성 시 속도를 설정한다(기본적으로 초당 40MB) |
| readonly | 레포지토리를 읽기 전용으로 생성한다 |
3. 스냅숏 생성
Request
PUT _snapshot/movie_data_backup/movie_snapshot_part1?wait_for_completion=true
{
"indices": "movie_search_1544054400",
"ignore_unavailable": true,
"include_global_state": false
}
Response
{
"snapshot": {
"snapshot": "movie_snapshot_part1",
"uuid": "6lu_iEKTRw-wlap4nzzCiA",
"version_id": 6050199,
"version": "6.5.1",
"indices": [
"movie_search_mapping",
"movie_routing",
"movie_search"
],
"include_global_state": true,
"state": "SUCCESS",
"start_time": "2018-12-06T07:54:53.1062",
"start_time_in_millis": 1544082893106,
"end_time": "2018-12-06T07:54:53.4947",
"end_time_in_millis": 1544082893494,
"duration_in_millis": 388,
"failures": [],
"shards": {
"total": 121,
"failed": 0,
"successful": 121
}
}
}
- 스냅숏 대상이 되는 인덱스는 더 이상 변경이 없는 인덱스야만 한다.
- 변경이 일어나는 도중 스냅숏이 생성되면 문제가 발생할 가능성이 있음
- wait_for_completion 옵션을 사용하면 스냅숏 생성이 완료될 때까지 기다릴 수 있다.
- 스냅숏 이름은 유일해야 하며, 이미 존재하면 오류가 발생한다
4. 스냅숏 정보 확인
GET _snapshot/movie_data_backup/_all
- 레포지토리 명을 통해 지금까지 생성된 스냅숏에 대한 정보를 확인할 수 있다.
5. 스냅숏을 통한 복구
POST _snapshot/movie_data_backup/movie_snapshot_part1/_restore
- movie_snapshot_part1이라는 이름으로 백업된 movie_search_1544054400 인덱스가 복구된다.
- 이미 인덱스가 있다면 복구는 실패하고 오류가 발생한다.
- 인덱스가 정상 복구되려면 클러스터 내부에 동일한 인덱스가 존재해서는 안된다.
6. 스냅숏 제거
DELETE _snapshot/movie_data_backup/movie_snapshot_part1
- Delete 메서드를 통해 제거 가능
728x90
'Elastic Search' 카테고리의 다른 글
| Ch07. 한글 검색 확장 기능 - 맞춤법 검사기 (0) | 2025.09.28 |
|---|---|
| Ch07. 한글 검색 확장 기능 - Suggest API 소개 (0) | 2025.09.28 |
| Ch06. 고급 검색 - 별칭을 이용해 항상 최신 인덱스 유지하기 (0) | 2025.09.24 |
| Ch06. 고급 검색 - 검색 템플릿을 이용한 동적 쿼리 제공 (0) | 2025.09.24 |
| Ch06. 고급 검색 - 스크립팅을 이용해 동적으로 필드 추가하기 (0) | 2025.09.24 |