본문으로 건너뛰기

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