2년 전 정리 아카이브 https://velog.io/@deet1107/snapshot-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0
backup하는 것은 중요하죠. 처음에 할 때 헷갈려서 정리해봤어요
데이터 날리면 음.. 고소당할 수 읍 읍 최소 시말서 각ㅋㅋ
그래서 따로 정리해봤습니다 ㅎ
https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshot-restore.html
주의사항
- indices를 close 해야함
- 파일 경로를 설정해야함
- elasticsearch.yml
repo.path: ["my_backup_location"]
전체 인덱스 백업하기
인덱스 하나씩 지우기 귀찮아서 전체 날렸습니다.
rm -rf /var/lib/elasticsearch/*
당연히 stop하고 해야합니다.
snapshot 만들기
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "my_backup_location"
}
}
가져오기
//repo 연결
curl --request PUT localhost:9200/_snapshot/backup-repo --data-raw '{
"type":"fs",
"settings":{
"location":"/home/student/backups/backup-repo"
}
}'
` + 전체를 backup하다보니 kibana index까지 snapshot으로 만들어졌어요. 그래서 kibana를 키지 않고 command로 실행했습니다.`
//가져오기
curl --request POST localhost:9200/_snapshot/backup-repo/snapshot-1/_restore
//확인
curl --request PUT localhost:9200/_snapshot/backup-restudent@elk2:/etc$ curl get localhost:9200/_cat/indices
특정 index backup하기
전체를 백업하는게 아니라, 특정 인덱스만 백업하는 것도 필요할 거에요
가령 저처럼 스터디원들과 실습하고 싶으면 bulk나 logstash 사용안하고 바로 백업받게만 하면 되니까요ㅋㅋ
https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshots-take-snapshot.html
snapshot 만들기
저는 shakespeare와 nginx 인덱스만 백업하고 싶습니다.
backup repository는 위에서 만든 file storage를 사용합니다.
PUT /_snapshot/backup-repo/snapshot-test?wait_for_completion=true
{
"indices": "shakespeare, nginx",
"ignore_unavailable": true,
"include_global_state": false,
"metadata": {
"taken_by": "kimchy",
"taken_because": "backup before upgrading"
}
}
// "uuid" : "MfoURqoGSHuxMPLQ6TcgAQ",
.dat 파일로 2개가 만들어졌네요
가져오기
가져오기 전에 2개의 인덱스를 지워줍니다.
DELETE shakespeare
DELETE nginx
- _all/_open 은 kibana에서 안먹히는 경우가 간혹 있는 것 같습니다.
command에서 XPUT하니까 됩니다. kibana 자체가 만능은 아닌가봅니다.
//restore하는 동안 block
POST _all/_close
POST _snapshot/backup-repo/snapshot-test/_restore
snapshot lifecycle
snapshot으로 백업하는 것은 매우 중요합니다.무조건 보장되어야 하죠
slm(snapshot lifecycle management)으로 더욱 확률을 높일 수 있습니다.
policy를 설정해서 언제 백업을 받고, 저장 repo는 얼마나 가지고 있을지 저할 수 있어요
- slm policy 정의
- schedule : frequency와 time
- snapshot은 이전 파일과 다른 것만 저장(git처럼)
- name : prefix
- repository : 저장소 위치
- config.indices: 인덱스 목록
- retention: 삭제 기준 expire_after/ min_count/ max_count
- schedule : frequency와 time
스케줄 등록하기는 cron을 이용해서 직관적이에요. 3시간 3분마다 돌게하고,이름을정하고 60일뒤에 삭제가 되도록 설정하는 명령어는 아래와 같아요
//스케줄 등록하기
curl --location --request PUT 'http://lo
"schedule": "0 03 3 * * ?",
> "name":"<backup-{now/d}>",
> "repository":"backup_repository",
> "config": {
> "indices":["*"]
> },
> "retention":{
> "expire_after":"60d"
> }
> }'
//snapshot 즉시 실행
curl --location --request POST \
> 'http://localhost:9200/_slm/policy/backup_policy_daily/_execute'
{"snapshot_name":"backup-2020.06.29-zi9xah6eqk2w0oqsv87t8g"}
잘 저장되네요 ㅎㅎ
'Storage > ELK' 카테고리의 다른 글
Elasticsearch 관리하기(메모용) (0) | 2022.07.09 |
---|---|
ELK) 데이터 집계/변환/저장(Logstash, filebeat) (0) | 2022.07.09 |
ELK) Elasticsearch Hello World (0) | 2022.07.09 |
ELK) ELK 실습(서울시 지하철 대시보드) 따라하기 :: mightytedkim (0) | 2022.03.26 |