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 폴더 삭제
- elasticsearch service 종료
- elasticsearch data dir 삭제
- 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
}