elasticsearch
elasticsearch 에서 slm 을 이용한 snapshot 자동 생성 및 복구 방법

elasticsearch 에서 slm 을 이용한 snapshot 자동 생성 및 복구 방법

SLM을 이용한 스냅샷 자동 생성

1. elasticsearch install path/config/elasticsearch.yml 에 path.repo 등록

# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
# path.data: /path/to/data
#
# Path to log files:
#
# path.logs: /path/to/logs
#
# path.repo is the snapshot storage path for backup.
path.repo: [/<project name>/elasticsearch/backup]
#
# ----------------------------------- Memory -----------------------------------

2. snapshot repository 생성

REST API

method : PUT
url : /_snapshot/backup_repository

{
  "type": "fs",
  "settings": {
    "location": "/<project name>/elasticsearch/backup"
  }
}

3. slm 정책 등록

REST API

method : PUT
url : /_slm/policy/nightly-snapshot

{
  "schedule": "0 30 1 * * ?",
  "name": "<nightly-snapshot-{now/d}>",
  "repository": "backup_repository",
  "config": {
    "indices": "*",
    "include_global_state": true
  },
  "retention": {
    "expire_after": "7d",
    "min_count": 3,
    "max_count": 10
  }
}

4. slm 정책 수동 실행을 통한 snapshot 생성

REST API

method : POST
url : /_slm/policy/nightly-snapshot/_execute

snapshot 복원

동일한 클러스터에 복원

동일한 클러스트이며 elasticsearch dir path/config/elasticsearch.yml의 path.repo가 등록되어 있어야 합니다.

1. data 폴더 삭제

  1. elasticsearch service 종료
  2. elasticsearch data dir 삭제
  3. elasticsearch service 시작

2. snapshot repository 생성

REST API

method : PUT
url : /_snapshot/backup_repository

{
  "type": "fs",
  "settings": {
    "location": "/<project name>/elasticsearch/backup"
  }
}

3. snapshot을 이용한 전체 복구(인덱스, 템플릿, ilm 등 모든 것을 복구)

REST API

method : POST
url : /_snapshot/backup_repository/snapshot name/_restore

{
  "indices": "*",
  "include_global_state": true
}