S3에 Snapshot을 이용한 백업, 복원 방법

elasticsearch에 저장된 데이터를 s3에 snapshot을 이용해 백업, 복원 시키는 방법을 알아보자.
먼저 S3 플러그인 설치를 진행한다.

sudo /usr/share/elasticsearch/bin/plugin install cloud-aws (elasticsearch 버전에 맞는 plugin을 설치해야함)

snapshot 등록 (sense에서 입력

 curl -XPUT 'localhost:9200/_snapshot/my_s3_repository' -d '{
  "type": "s3",
  "setting": {
    "bucket": "my_bucket_name",
    "base_path": "/backups"
    "access_key": "xxxxx"
    "secret_key": "xxxxx"
    "max_retries": "5"
    "region": "us-west"
  }
}'

1. 등록한 snapshot에 데이터 백업

curl -XPUT 'localhost:9200/_snapshot/my_s3_repository/first_snapshot?wait_for_completion=true'
  • wait_for_completion: 스냅샷이 종료된 후 까지 기다린 후 요청을 반환되기 원하면 true

일별 index에 대한 데이터 백업

curl -XPUT 'localhost:9200/_snapshot/my_s3_repository/second_snapshot' -d '{
  "indices": "log-2017-8-*" 
  • 위 조건을 만족하는 index만 snapshot 진행

현재 snapshot의 진행 상황을 알고 싶을때

curl -XGET 'localhost:9200'/_snapshot/my_s3_repository/first_snapshot/_status

2. 복원

curl -XPOST 'localhost:9200/_snapshot/my_s3_repository/first_snapshot/_restore'

특정 index에 대한 데이터 복원

curl -XPOST 'localhost:9200/_snapshot/my_s3_repository/first_snapshot/_restore' -d '{
  "indices": "log-2017-8-*"
}'

3. 새로운 elasticsearch cluster에 index를 복원할 때

  1. 기존 cluster에서 정의한 snapshot을 새로운 cluster에 동일하게 정의함 (똑같은 이름의 snapshot을 등록)
  2. 기존 cluster는 데이터를 백업하고, 새로운 cluster에서는 데이터를 복원하면 됨

주의사항

  • 새로운 cluster의 버전이, 기존 cluster의 버전이랑 같거나 높아야 함
    • new cluster version 2.4, 기존 cluster version 2.3 (o)
    • new cluster version 2.4, 기존 cluster version 2.4 (o)
    • new cluster version 2.4, 기존 cluster version 5.1 (x)

참고

https://www.elastic.co/guide/en/elasticsearch/plugins/2.4/cloud-aws.html

Comments