S3 Snapshot을 이용한 데이터 백업 및 복구
카카오클라우드 Object Storage를 OpenSearch의 장기 스토리지로 활용할 수 있도록 지원하는 커스텀 API입니다. 인덱스의 스냅샷을 생성하여 데이터를 안전하게 보관하고 필요시 특정 시점으로 복구할 수 있습니다.
주의
Snapshot Repository로 사용하는 버킷은 STANDARD 스토리지 클래스만 지원합니다. COOL 스토리지 클래스는 지원하지 않으므로 버킷 또는 버킷 내 객체에 COOL 스토리지 클래스를 적용하지 마시기 바랍니다.
1. Snapshot Repository 등록
스냅샷을 저장할 저장소(Repository)를 먼저 설정해야 합니다. 카카오클라우드의 Object Storage 정보를 입력하여 등록합니다.
Request
PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"endpoint": "https://objectstorage.kr-central-2.kakaocloud.com",
"path_style_access": true,
"bucket": "test-s3",
"region": "kr-central-2",
"access_key": "YOUR_ACCESS_KEY",
"secret_key": "YOUR_SECRET_KEY",
"base_path": "snapshots"
}
}
- endpoint: Object Storage 접속 주소
- base_path: 버킷 내 스냅샷이 저장될 하위 디렉토리 경로
정보
Object Storage API 호출에 필요한 S3 액세스 키 ID와 보안 액세스 키 발급 절차는 S3 액세스 키 발급 문서를 참고하시기 바랍니다.
2. Snapshot 생성 (Backup)
특정 인덱스 혹은 전체 데이터를 스냅샷으로 생성합니다.
Request
POST _snapshot/my_s3_repository/my-first-snapshot
{
"indices": "test-index*",
"ignore_unavailable": true,
"include_global_state": false,
"partial": false
}
- indices: 백업할 인덱스 패턴 (
예: test-index*) - partial:
false설정 시, 일부 샤드가 실패할 경우 스냅샷 생성을 중단하여 데이터 무결성을 보장합니다.
3. Snapshot 상태 조회
생성된 스냅샷의 정보 및 진행 상태(SUCCESS, IN_PROGRESS 등)를 확인합니다.
Request
GET /_snapshot/my_s3_repository/my-first-snapshot
주요 응답 필드
| 필드명 | 설명 |
|---|---|
| state | 스냅샷 결과 (SUCCESS 시 완료) |
| indices | 스냅샷에 포함된 인덱스 목록 |
| duration_in_millis | 스냅샷 생성에 소요된 시간 |
4. Snapshot 복구 (Restore)
저장된 스냅샷을 사용하여 데이터를 복구합니다. 기존 인덱스와 충돌을 방지하기 위해 이름을 변경하여 복구하는 방식을 권장합니다.
Request
POST /_snapshot/my_s3_repository/my-first-snapshot/_restore
{
"indices": "test-index*",
"ignore_unavailable": true,
"include_global_state": false,
"rename_pattern": "(.+)",
"rename_replacement": "$1_restored",
"include_aliases": false
}
- rename_pattern / replacement: 복구된 인덱스 이름 뒤에
_restored를 추가하여 기존 데이터와 구분합니다.
5. 복구 결과 확인
복구된 인덱스가 정상적으로 생성되었고, 상태가 open인지 확인합니다.
Request
GET /_cat/indices/test-index2_restored
- Response 예시:
yellow open test-index2_restored KlLBNIBcReazgKnutWZbXw 1 1 0 0 208b 208b