일래스틱서치의 스냅샷 저장 및 복구하기 





스냅샷을 정의하고 어느 디렉토리에 저장될지 결정한다. 


curl -XPUT 'http://localhost:9200/_snapshot/poi' -d '{

    "type": "fs",

    "settings": {

        "location": "/home/www/backup",

        "compress": true

    }

}'




제대로 되어 있는지 확인한다.


curl -XGET 'http://localhost:9200/_snapshot/poi?pretty'



정상적인지 검증한다. 


curl -XPOST 'http://localhost:9200/_snapshot/poi/_verify'


스냅샷으로 덤프한다. 스냅샷으로 정의된 디렉토리(/home/www/backup)에 덤프된 스냅샾 파일을 볼 수 있다.


curl -XPUT "http://localhost:9200/_snapshot/poi/snap_1?wait_for_completion=true" -d '{

    "indices": "poi",

    "ignore_unavailable": "true",

    "include_global_state": false

}'



wait_for_completion 매개변수가 없으면 비동기로 실행되기 때문에 스냅샷 파일의 완료 시점을 알기 쉽지 않다. 동기 결과를 받기 위해 일부러 사용하는 것이 좋다.




기존 색인을 닫는다.


curl -XPOST http://localhost:9200/poi/_close


만약 기존 색인을 닫지 않으면, 다음과 같은 에러가 발생한다

{"error":"SnapshotRestoreException[[poi:location_poi_20150728] cannot restore index [poi] because it's open]","status":500}


복구(restore)한다.

curl -XPOST "localhost:9200/_snapshot/poi/snap_1/_restore?pretty" -d '{
  "indices": "poi",
  "ignore_unavailable": "true",
  "include_global_state": "false"
}'



* 팁 : 만약 복구할 때, 새로운 이름의 색인으로 변경하려면 다음고 같이 rename_pattern과 rename_replacement를 이용하면 된다. poi라는 색인 대신 aaaaaaaaaaa 라는 색인을 만들 수 있다.

curl -XPOST "localhost:9200/_snapshot/poi/snap_1/_restore?pretty" -d '{
  "indices": "poi",
  "ignore_unavailable": "true",
  "include_global_state": "false",
  "rename_pattern": "poi",
  "rename_replacement": "aaaaaaaaaaa"
}'



Posted by '김용환'
,