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
반응형