티스토리 뷰

0. 나의 설정

- Elasticsearch 6.1.1 사용 

- path : /data1/elasticsearch-6.1.1  : 이부분은 변경해서 설정하세요.


1. Elasticsearch 환결설정

- vim config/jvm.options 

    -Des.allow_insecure_settings=true  #추가


- vim config/elasticsearch.yml

    - network.host: ["나의IP", "localhost"]


2. S3 플러그인 설치

/data1/elasticsearch-6.1.1/bin/elasticsearch-plugin install repository-s3



3. S3 백업 폴더 지정하기

curl --user ID:PW --header "content-type: application/JSON"  -XPUT 'localhost:9200/_snapshot/s3_snapshot?pretty' -d '{

"type": "s3",

"settings": {

     "bucket": "elasticsearch6-backup",

     "region": "ap-northeast-2",

     "access_key": "XXXXXXXXXXXXXXXXXXX",

     "secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

     "compress": true

}

}'

localhost:9200/_snapshot/${name} : name은 스냅샵 이름 위 예제는 s3_snapshot로 사용

- bucket : S3 버킷이름

- region : 리전이름

- access_key : AWS 접속 가능한 키

secret_key  AWS 접속 가능한 키



4. S3 백업하기

curl --user ID:PW --header "content-type: application/JSON"  -XPUT 'localhost:9200/_snapshot/s3_snapshot/bizrpt_20180424?pretty=true&wait_for_completion=true' -d '{

  "indices": "bizrpt_auth,bizrpt_category,bizrpt_market,bizrpt_report",

  "ignore_unavailable": true,

  "include_global_state": false

}'

localhost:9200/_snapshot/${name}/${backup_key} : name은 스냅샷 이름, backup_key는 복구할때 키기반으로 복구.

indices : 백업 index 지정



5. 백업 확인하기

# 백업 이름 리스트 확인

curl --user ID:PW -XGET 'http://localhost:9200/_snapshot?pretty'


# 백업 키 리스트 확인

curl --user ID:PW -XGET 'http://localhost:9200/_snapshot/s3_snapshot/_all?pretty'



6. 백업 삭제하기

#백업 이름 삭제

curl --user ID:PW -XDELETE 'http://localhost:9200/_snapshot/s3_snapshot'


#백업 이름에대한 키 삭제

curl --user ID:PW -XDELETE 'http://localhost:9200/_snapshot/s3_snapshot/bizrpt'



7. 복구하기

#전체 복구하기

curl --user ID:PW --header "content-type: application/JSON" -XPOST 'localhost:9200/_snapshot/s3_snapshot/bizrpt_20180424/_restore?wait_for_completion=true' 



#인덱스 지정 복구하기

curl --user ID:PW --header "content-type: application/JSON" -XPOST 'localhost:9200/_snapshot/s3_snapshot/bizrpt_20180424/_restore?wait_for_completion=true' -d '{

  "indices": "bizrpt_market,bizrpt_category,bizrpt_auth,bizrpt_report_v1",          

  "ignore_unavailable" : "true",

  "include_global_state" : false,

  "rename_pattern": "bizrpt_(.+)",         

  "rename_replacement": "restored_bizrpt_$1"  

}'


rename_pattern : 패턴을 지정하여

rename_replacement : 이름을 바꿔서 복원할수 있다.



8. 참고사항

- 엘라스틱서치의 백업은 증분 백업. ( 직접 서버 구축하여 이용시 s3에 백업하자 )



9. 기타 추가자료

- 백업 shell 만들기 : 키는 겹치면 안됨으로 날짜+시간값을 얻어와서 키로 지정.

dd=`date '+%Y%m%d%H%M'`


str="curl --user ID:PW --header \"content-type: application/JSON\"  -XPUT 'localhost:9200/_snapshot/s3_snapshot/bizrpt_${dd}?pretty=true&wait_for_completion=true' -d '{

        \"indices\": \"bizrpt_auth,bizrpt_category,bizrpt_market,bizrpt_report\",

        \"ignore_unavailable\": true,

        \"include_global_state\": false

}'"


echo $str

echo $str | sh


- 오래된 백업 키들 제거 shell : 2 week ago 으로 지정

dbs=`curl --user ID:PW -XGET 'http://localhost:9200/_snapshot/s3_snapshot/_all?pretty' --stderr - |grep \"snapshot\" |sed -e 's/snapshot//g' | tr -d '", :'`

dd=`date '+%Y%m%d0000' -d '2 week ago'`

echo $dd

for db in $dbs; do

        echo run ${db}

        if [ $db \< $dd ]

        then

                str="curl --user ID:PW -XDELETE 'http://localhost:9200/_snapshot/s3_snapshot/${db}'"

                echo $str

                echo $str |sh

        fi

done



10. 마치며..

- 저도 완벽히 알고한게 아니며 헤딩하면서 하고있습니다.

- 잘못된점이나 개선사항은 알려주시면 감사하겠습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함