Elasticsearch Snapshot으로 백업 및 복원
Created:
엘라스틱서치의 스냅샷을 이용해서 백업 및 복원을 진행해 보고자 한다.
개략적인 순서는 아래와 같다.
- 스냅샷 레파지토리를 저장할 경로 생성
- 레파지토리 생성
- 레파지토리에 스냅샷 생성
- 대상 서버에 스냅샷 복원
스냅샷 레파지토리를 저장할 경로 지정
먼저 스냅샷 파일을 물리적으로 저장할 경로를 설정해 줘야한다.
elasticsearch.yml
파일내에 적당하게 경로를 지정해 준다.
cluster.name: "docker-cluster"
network.host: 0.0.0.0
path.repo: ["/usr/share/elasticsearch/backup"]
여기서 추가한 코드는 path.repo: ["/usr/share/elasticsearch/backup"]
이다.
경로를 설정한뒤에 엘라스틱서치를 재시작 해줘야 하고, 지정한 디렉토리의 접근 권한도 확인해야 한다.
스냅샷 레파지토리 생성
키바나에서 레파지토리를 생성을 진행 하였다.
PUT /_snapshot/backup
{
"type": "fs",
"settings": {
"compress": true,
"location": "/usr/share/elasticsearch/backup"
}
}
스냅샷이름은 backup
으로 하였고 저장될 디렉토리는 location
에 지정해 주었다.
생성된 레파지토리 확인
GET _snapshot
스냅샷 생성
모든 인덱스를 대상으로 스냅샷을 만들었다.
특정 인덱스만 지정하고자 하면 "indices": ${인덱스명}
을 추가해준다.
PUT /_snapshot/backup/backup_20191210?wait_for_completion=true
{
"ignore_unavailable": true,
"include_global_state": true
}
생성된 스냅샷 확인
GET /_snapshot/backup/backup_20191210
위 스냅샷 레파지토리 저장 경로의 파일들을 복원하고자 하는 서버로 옮겨줘야 한다.
여기서는 /usr/share/elasticsearch/backup
이 경로의 파일을 압축하여 로컬에 저장해두었다.
스냅샷 복원
복원할 서버도 위와 같이 레파지토리를 저장할 경로 지정 및 es재시작, 레파지토리 생성까지 진행한뒤에 위에서 저장해놓은 파일을 복원할 서버의 동일한 경로에 옮겨줬다.
잘 옮겨졌는지 확인
GET /_snapshot/backup/backup_20191210
복원할 서버에 동일한 인덱스가 이미 존재한다면 오류가 발생하므로 복원하기전에 대상 서버의 인덱스를 한번 체크 해줬다.
복원을 진행
POST /_snapshot/backup/backup_20191210/_restore
Comments