[opensearch] 인덱스 snapshop 뜨는 방법
먼저 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가 복원된다.