검색엔진/Opensearch

[opensearch] 인덱스 snapshop 뜨는 방법

Tech쏜 2025. 1. 20. 11:43

먼저 compose ymal 파일에 path.repo 경로가 설정되어있어야한다.

이 경로는 인덱스 snapshot 파일이 저장되는 위치이다.

 

environment

- path.repo=/mnt/snapshots

 

volumes

- /mnt/snapshots:/mnt/snapshots

 

이렇게 설정해놓으면 해당 디렉토리 경로에 snapshot 이 저장되도록 설정한 것이다.

rebuild하고 opensearch dashboard - dev tool에 들어간다.

 

PUT _snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/snapshots",
    "compress": true
  }
}

아까 설정한 경로를 location 에 입력하고 해당 쿼리를 실행하면,

스냅샵 저장소(Snapshot Repository)를 생성된다.

클러스터 데이터를 백업할 위치를 지정하며, 해당 저장소에 데이터를 저장하고 복원할 수 있다.

 

다음은 내가 원하는 인덱스를 스냅샵 저장소로 백업떠놓는 쿼리이다.

PUT _snapshot/my_backup/goods-ko
{
  "indices": "goods-ko",             
  "ignore_unavailable": true,   
  "include_global_state": false
}

오픈서치에 존재하는 goods-ko 인덱스를 백업하는 쿼리로,

"ignore_unavailable"는 스냅샵 생성 중에 지정한 인덱스 중 일부가 존재하지 않거나 사용할 수 없는 경우 무시하도록 설정한다.

즉, true로 되어있다면 존재하지 않는 인덱스가 있어도 스냅샵 작업이 실패되지 않고 계속 진행된다.

 

"include_global_state" 는 클러스터 상태(global state)를 스냅샵에 포함할지 여부를 설정한다.

뭔지 몰라서 GPT한테 물어봤다.

 

뭐  false로 해도 settings 와 mappings 은 잘 반영되니까, 굳이 안해도 상관없는거같다. 

클러스터 상태를 포함시키는 것은 전체 클러스터 복구 또는 환경 복제와 같은 작업에 유용하다고 한다.

특정 인덱스만 복원하거나 기존 클러스터 설정을 변경하면 안 되는 경우에는 포함시키지 않는 것이 안전하다고 한다. 걍 false 하자.

 

위 쿼리를 실행하면 스냅샵이 저장소에 저장되며,

 

이제 복원을 쿼리를 알려드리겠다.

먼저 기존 인덱스를 삭제해라. (복원할 수 있으니 맘 놓고 삭제해라)

 

POST _snapshot/my_backup/goods-ko/_restore
{
  "indices": "goods-ko",             
  "include_global_state": false
}

 

해당 쿼리를 실행하면 삭제한 goods-ko가 복원된다.