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를 복원할 때
- 기존 cluster에서 정의한 snapshot을 새로운 cluster에 동일하게 정의함 (똑같은 이름의 snapshot을 등록)
- 기존 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