DBAtlas · 데이터베이스 운영 아틀라스

Elasticsearch snapshot 및 restore (fs / S3 repository, SLM)

Elasticsearch난이도: 중급소요 시간: 45–90분

설치된 Elasticsearch 8.x / 9.x 클러스터에 snapshot(백업) 체계를 구성하고 복구 방법을 설명합니다. 공유 파일 시스템(NFS + path.repo) 또는 S3(keystore) repository, rolling restart를 통한 적용과 검증, 수동 snapshot(indices, include_global_state, feature_states), SLM을 이용한 예약 snapshot과 보존(expire_after/min_count/max_count), 새 이름으로 또는 닫힌 인덱스 위에 restore, feature state restore, 모니터링, 같은 repository를 읽기 전용으로 등록해 다른 클러스터로 이전하는 작업을 다룹니다. 결과적으로 매일 자동으로 생성되고 복원 가능함이 검증된 snapshot을 확보합니다. Elasticsearch에서 유효한 백업은 snapshot뿐입니다. 같은 클러스터 안에서 mapping/shard를 변경할 때는 reindex를, 단일 인덱스를 빠르게 되살릴 때는 운영 가이드의 시나리오를 사용합니다.

구성: Elasticsearch 8.x / 9.x 클러스터(1–N 노드) + 공유 디렉터리(NFS) 또는 S3 호환 오브젝트 스토리지

시작하기 전에

  • 클러스터가 정상(green)이고 elastic(또는 manage + snapshot 권한이 있는 사용자)의 비밀번호를 알고 있습니다. Repository 설정에는 노드 재시작이 필요하므로 클러스터가 노드 하나의 손실을 견딜 수 있는지(replica가 할당되어 있는지) 확인합니다.
  • 모든 노드에 HTTP CA 파일(…)이 있습니다. API 호출은 이 CA로 검증됩니다.
  • …는 모든 master 및 data 노드에서 같은 공유(NFS)로 마운트되어 있고 fstab에 영구 등록되어 있습니다. elasticsearch 사용자의 UID/GID가 모든 노드에서 같거나, 공유가 all_squash,anonuid=…,anongid=…로 단일 사용자에 매핑되어야 합니다. 그렇지 않으면 노드들이 서로 기록한 파일을 읽지 못합니다. 로컬(비공유) 디렉터리는 다중 노드 클러스터에서 repository 검증 시 오류가 납니다.
  • … bucket이 생성되어 있고, 액세스 키(access key / secret key)에 이 bucket에 대한 s3:ListBucket, s3:GetObject, s3:PutObject, s3:DeleteObject, s3:AbortMultipartUpload, s3:ListMultipartUploadParts, s3:ListBucketMultipartUploads 권한이 있습니다. 노드에서 …로 HTTPS 연결이 가능합니다.
  • 공유에 충분한 여유 공간이 있습니다. 첫 snapshot은 인덱스의 디스크 크기만큼 공간을 차지하고, 이후 snapshot은 변경된 segment만 추가합니다(증분).
  • 버전 규칙을 알고 있습니다. snapshot은 같거나 더 새로운 버전의 클러스터에만 restore할 수 있고 이전 버전으로는 restore할 수 없습니다. 인덱스는 생성된 메이저 버전의 바로 다음 메이저 버전까지만 restore할 수 있습니다(8.x에서 생성한 인덱스는 9.x로 가능, 7.x에서 생성한 인덱스는 9.x에 일반 인덱스로 restore할 수 없음).
  • 모든 노드에 root 권한이 있고 rolling restart를 위한 유지보수 시간이 확보되어 있습니다.

가이드 단계

  • API 접근(모든 노드) — API용 임시 자격 증명 파일 · 클러스터와 기존 repository 확인
  • 공유 파일 시스템 준비(모든 노드) — NFS 공유 마운트 · 디렉터리 권한 설정 및 쓰기 테스트 · path.repo 설정 추가
  • S3 자격 증명 및 client 설정(모든 노드) — S3 액세스 키를 keystore에 추가 · S3 client 설정 추가
  • Repository 등록 및 검증 — Repository 등록 · Repository 검증
  • 수동 snapshot — 테스트 인덱스 생성 · Snapshot 생성 · Snapshot 상태 모니터링
  • SLM을 이용한 자동 snapshot — SLM 정책 생성 · 정책 즉시 실행 · SLM 상태 및 통계 확인 · Retention 수동 실행
  • Restore — 인덱스를 새 이름으로 restore · Restore 모니터링 및 문서 수 비교 · 복원된 사본 삭제 · 인덱스를 닫고 제자리 restore · Feature state restore
  • 다른 클러스터로 이전 — 대상 클러스터 준비 · Repository 읽기 전용 등록 · 대상 클러스터에 인덱스 restore · 대상의 자격 증명 파일 삭제
  • 모니터링 및 유지보수 — Snapshot 상태 모니터링 · Repository 정리 · 자격 증명 파일 삭제 · 정기 복구 훈련
내 환경에 맞춘 단계별 계획 열기 →