스냅샷과 복원 (Snapshot & Restore)
스냅샷과 복원 (Snapshot & Restore)
Elasticsearch는 인덱스 데이터를 스냅샷 형태로 저장소에 백업하고, 필요할 때 통째로 복원할 수 있어요. 스냅샷은 운영 중에도 만들 수 있고, 실수로 지운 인덱스·클러스터 전체를 되살리는 게 핵심 용도랍니다. 백업 주기는 워크플로우로 묶어서 자동화하는 걸 권장해요.
스냅샷 저장소(repository) 등록하기
스냅샷을 만들려면 먼저 저장할 위치를 저장소로 등록해야 해요. 공유 파일시스템(NFS 등)을 쓰는 경우 type: fs와 location을 지정해 주면 돼요.
PUT /_snapshot/my_fs_repository
{
"type": "fs",
"settings": {
"location": "/mount/backups/my_fs_repository"
}
}
클라우드에선 S3(s3), Azure(azure), GCS(gcs) 같은 스토리지 타입도 지원돼요. 저장소는 보통 클러스터가 여럿이라면 모두가 접근할 수 있는 공유 위치를 고른답니다.
스냅샷 만들기
저장소가 준비되면 스냅샷 이름을 정해서 PUT /_snapshot/{repo}/{snapshot}으로 백업을 떠요. 인덱스 범위나 전역 상태 포함 여부도 지정할 수 있어요.
PUT /_snapshot/my_fs_repository/snapshot_1
{
"indices": "my-index-000001",
"ignore_unavailable": true,
"include_global_state": false
}
indices: 백업할 인덱스 목록(콤마 구분,*와일드카드 가능).ignore_unavailable: 지정한 인덱스가 없어도 무시하고 진행.include_global_state: 인덱스 템플릿·설정·매핑 같은 전역 상태 포함 여부.
첫 스냅샷은 전체 데이터를, 이후 스냅샷은 이전과 달라진 부분만 저장해서 공간을 아껴요.
스냅샷 복원하기
저장된 스냅샷은 _restore 엔드포인트로 특정 인덱스만 골라 복원할 수 있어요.
POST /_snapshot/my_fs_repository/snapshot_1/_restore
{
"indices": "my-index-000001",
"include_global_state": false
}
복원할 때 rename_pattern/rename_replacement를 쓰면 인덱스 이름을 바꿔서 되살릴 수도 있어요. 기존 인덱스와 충돌을 피하려면 이름을 바꿔 복원한 뒤 데이터를 교체하는 방식이 안전해요.
스냅샷 조회·상태 확인
저장소에 어떤 스냅샷이 있는지, 진행 상태는 어떤지 쉽게 확인할 수 있어요.
GET /_snapshot/my_fs_repository/_all
GET /_snapshot/_status
백업을 놓치지 않으려면 스냅샷을 주기적으로 만들어 주는 SLM(Snapshot Lifecycle Management) 정책을 함께 쓰는 걸 추천해요.