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하고 해야합니다.
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
전체를 백업하는게 아니라, 특정 인덱스만 백업하는 것도 필요할 거에요
가령 저처럼 스터디원들과 실습하고 싶으면 bulk나 logstash 사용안하고 바로 백업받게만 하면 되니까요ㅋㅋ
https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshots-take-snapshot.html
저는 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
//restore하는 동안 block
POST _all/_close
POST _snapshot/backup-repo/snapshot-test/_restore
snapshot으로 백업하는 것은 매우 중요합니다.무조건 보장되어야 하죠
slm(snapshot lifecycle management)으로 더욱 확률을 높일 수 있습니다.
policy를 설정해서 언제 백업을 받고, 저장 repo는 얼마나 가지고 있을지 저할 수 있어요
스케줄 등록하기는 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"}
잘 저장되네요 ㅎㅎ