즐겁게/elasticsearch-8

elasticsearch snapshot 설정

파이브빈즈 2022. 10. 23. 17:39

multi-node로 구성된 cluster의 경우 각 노드별로 repostiory를 구성하면 안되고, 각 노드에서 공유 파일 시스템의 동일한 영역을 볼수 있도록 구성해야 한다.

 

elasticsearch repository 구성

 

1) elasticsearch.yml 에 path.repo 설정(각 노드에 동일하게 설정)

    path.repo: ["/data/elastic_snapshot "]

 

2) elastic 재기동

 

3) elastic에 repository 설정

curl -X PUT "http://localhost:9200/_snapshot/my_backup?pretty" -H 'Content-Type: application/json' -d'
{
 "type": "fs",
 "settings": {
   "location": "/data/elastic_snapshot",
    "compress": true
 }
}'

4) repository 등록 확인

curl -X GET "http://localhost:9200/_snapshot/_all?pretty"
curl -X GET "http://localhost:9200/_snapshot/my_backup?pretty"

5) Snapshot lifecycle management (SLM)을 이용한 스냅샷 자동 생성: slm policy를 등록

아래는 test-* 패턴의 인덱스에 대하여 매시간 자동으로 스냅샷을 생성하고, 5일간 유지 후 자동으로 삭제되는 slm 정책을 추가한 내용임

curl -X PUT "http://localhost:9200/_slm/policy/hourly-snapshots?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "<hourly-snapshot-{now/d{yyyy-MM-dd}}>",
  "schedule": "0 0 * * * ?",
  "repository": "my_backup",
  "config": {
    "indices": "test-*",
    "ignore_unavailable": true,
    "include_global_state": true
  },
  "retention": {
    "expire_after": "5d",
    "min_count": 1,
    "max_count": 120
  }
}
'

6) Snapshot 목록 확인

curl -X GET "http://localhost:9200/_cat/snapshots/my_backup?pretty"