SLM API를 사용한 백업 자동화

여기서는 기본적인 스냅샷 생성 및 스냅샷을 통한 인덱스 복구, 스냅샷 삭제에 대한 내용은 다루지 않는다. 해당 내용은 이미 아래 링크의 포스팅에 정리되어 있다.

https://velog.io/@yaincoding/스냅샷-생성으로-인덱스-백업하고-복구하기

엘라스틱서치에는 제공하는 slm(snapshot lifecycle management)이라는 API를 사용하면 동으로 스냅샷을 생성할 수 있다. 스냅샷 생성 주기, 오래된 스냅샷의 삭제, 스냅샷 이름 포맷 등을 설정할 수 있다. 추가로 생성된 스냅샷을 gcp, aws s3 등의 클라우드 플랫폼에 전송하는 플러그인까지 지원하니 잘 사용하면 스냅샷 생성 자동화를 쉽게 달성할 수 있다.

1. 스냅샷 생성 자동화 실습


PUT /_slm/policy/wiki-snapshot-policy
{
  "schedule": "0 */15 * * * ?",
  "name": "<wiki-snapshot-{now/m{yyyyMMddHHmm|+09:00}}>",
  "repository": "wiki_backup",
  "config": {
    "indices": ["wiki"]
  },
  "retention": {
    "expire_after": "10d",
    "min_count": 5,
    "max_count": 30
  }
}
  1. wiki-snapshot-policy
    스냅샷 생성 정책 생성
  2. schedule
    스냅샷 생성 주기로 cron 작성 형식과 동일
  3. name
    스냅샷 이름 포맷. 주로 생성된 날짜를 포함하는 방식으로 생성함. +09:00은 UTC 기준 한국 시간
  4. repository
    스냅샷을 저장할 repository. 생성한 repository들 중 설정 가능
  5. expire_after
    삭제 기준. 여기서는 10일이 지난 스냅샷은 삭제하도록 설정
  6. min_count
    최소 스냅샷 수. expire_after이 지나더라도 5개 현재 스냅샷이 5개 이하면 삭제되지 않음
  7. max_count
    최대 스냅샷 수. expire_after이 지나지 않더라도 이 수치가 넘어가면 가장 오래 된 스냅샷부터 삭제

15분 주기로 스냅샷이 생성되도록 하였다. 이제 15분마다(매 시 0분, 15분, 30분, 45분) 스냅샷이 생성되어 wiki_backup repository 경로에 저장된다.

15분이 지나고 스냅샷 목록을 조회해보자.

GET /_snapshot/wiki_backup/_all

21시 7분에 정책을 만들었기때문에 가장 처음 스냅샷이 생성된 시간은 21시 15분 이다. 생성된 스냅샷 이름이 2115로 끝나는걸로 보아 의도한 대로 스냅샷이 생성되었다. 그리고 15분 뒤인 21시 30분에 스냅샷이 생성되었다.


여기서는 엘라스틱서치가 실행되는 서버의 로컬에 스냅샷을 저장했다. 그러나 slm이 지원하는 다양한 repository 플러그인을 사용하면 hdfs, aws, gcp, azure 등의 클라우드에 스냅샷을 저장하는 것도 가능하다.

클라우드 repository 플러그인이 궁금하면 아래 링크를 확인하자.

https://www.elastic.co/guide/en/elasticsearch/plugins/7.14/repository.html

좋은 웹페이지 즐겨찾기