복구
백업 데이터를 사용하여 시스템을 이전 상태로 복원하는 방법을 안내합니다.
- 시스템 장애: 서버 장애, 디스크 손상 등으로 데이터가 손실된 경우
- 실수로 인한 삭제: 중요한 리소스나 데이터를 잘못 삭제한 경우
- 업데이트 롤백: 문제가 있는 업데이트를 이전 상태로 되돌리는 경우
- 환경 복제: 백업을 사용하여 동일한 환경을 다른 곳에 구성하는 경우
복구 유형
KIWI에서는 환경에 따라 두 가지 복구 방법을 제공합니다.
- etcd 복구: Kubernetes 클러스터를 대상으로 합니다. 클러스터 전체 상태를 복원하며, 수 분에서 수십 분이 소요됩니다.
- Docker 복구: Docker 환경을 대상으로 합니다. 컨테이너, 볼륨, 이미지를 복원하며, 항목에 따라 소요 시간이 다릅니다.
- 복구 작업은 현재 데이터를 덮어씁니다. 필요하다면 복구 전에 현재 상태를 백업하세요.
- 가능하면 서비스 사용량이 적은 시간에 복구를 진행하세요.
- 운영 환경에서는 테스트 환경에서 먼저 복구를 검증한 후 진행하세요.
etcd 복구
Kubernetes 클러스터를 etcd snapshot에서 복원합니다.
Step 1: 백업 선택
- 좌측 메뉴에서 **[백업 관리]**를 클릭합니다 .
- 백업 목록에서 복원할 etcd 백업을 찾습니다 .
- 해당 백업을 클릭하여 선택합니다 .
여러 백업이 있다면, 문제가 발생하기 직전 시점의 백업을 선택하세요. 너무 오래된 백업을 선택하면 그 이후의 변경 사항이 모두 손실됩니다.
Step 2: 복원 대상 확인
복원 전에 반드시 다음 정보를 확인합니다.
- 백업 일시: 이 시점으로 클러스터가 되돌아갑니다 .
- 클러스터: 복원될 대상 클러스터가 맞는지 확인합니다 .
- 상태: 백업 파일이 "정상" 상태인지 확인합니다 .
손상된 백업은 복원에 사용할 수 없습니다. 다른 정상적인 백업을 선택하거나, 백업 파일의 무결성을 다시 확인하세요.
Step 3: 복원 실행
- 복원 버튼을 클릭합니다 .
- 확인 대화상자에서 복원 시작을 클릭합니다 .
- 복원 진행 상황이 화면에 표시됩니다 .
etcd 복원 중에는 클러스터가 일시적으로 중단됩니다. 이 시간 동안 Pod 스케줄링, API 호출 등 모든 클러스터 작업이 불가능합니다. 복원 시간은 데이터 크기에 따라 수 분에서 수십 분이 소요될 수 있습니다.
Step 4: 클러스터 상태 확인
복원이 완료되면 클러스터가 정상적으로 작동하는지 확인합니다.
# 노드 상태 확인 - 모든 노드가 Ready 상태여야 합니다
kubectl get nodes
# 모든 네임스페이스의 Pod 상태 확인
kubectl get pods --all-namespaces
# 시스템 Pod 상태 확인
kubectl get pods -n kube-system
- 모든 노드가
Ready상태인가요? - kube-system Pod들이 모두
Running상태인가요? - 애플리케이션 Pod들이 정상적으로 실행 중인가요?
- 서비스에 정상적으로 접근할 수 있나요?
Docker 복구
Docker 볼륨, 이미지, 컨테이너를 백업에서 복원합니다.
볼륨 복구
애플리케이션 데이터가 저장된 볼륨을 복원합니다.
Step 1: 백업 선택
- [백업 관리] 페이지에서 Docker 백업 탭을 클릭합니다 .
- 복원할 볼륨이 포함된 백업을 선택합니다 .
Step 2: 복원 항목 선택
- 볼륨: 복원할 볼륨을 선택합니다 .
- 경로: 복원할 위치를 지정합니다
.
- 원래 위치: 기존 볼륨에 덮어쓰기
- 새 위치: 다른 이름으로 복원 (기존 데이터 보존)
운영 중인 볼륨을 복원할 때는 먼저 새 위치에 복원하여 데이터를 확인한 후, 검증이 완료되면 원래 위치로 복사하는 것이 안전합니다.
Step 3: 복원 실행
- 복원 버튼을 클릭합니다 .
- 복원 진행 상황을 확인합니다 .
이미지 복구
백업된 Docker 이미지를 복원합니다.
Step 1: 이미지 백업 선택
- [백업 관리] 페이지에서 이미지 백업을 선택합니다 .
- 복원할 이미지 tar 파일을 선택합니다 .
Step 2: 이미지 로드
KIWI가 내부적으로 다음 명령을 실행하여 이미지를 복원합니다:
# KIWI 내부 동작
docker load -i image_backup.tar
복원된 이미지는 백업 시점의 태그를 그대로 유지합니다. 동일한 태그의 이미지가 이미 존재하면 덮어쓰기됩니다.
복구 검증
복구 후에는 반드시 시스템이 정상적으로 작동하는지 검증합니다.
검증 체크리스트
- 서비스 상태: Pod/컨테이너 상태를 확인합니다. Running 상태여야 정상입니다.
- 데이터 무결성: 애플리케이션 데이터를 확인합니다. 백업 시점의 데이터가 존재해야 합니다.
- 네트워크: 서비스 접근을 테스트합니다. 정상 응답이 와야 합니다.
- 로그: 애플리케이션 로그를 확인합니다. 오류가 없어야 합니다.
중요한 시스템에서는 복구 후 자동으로 헬스체크를 수행하는 스크립트를 준비해두면 검증 시간을 단축할 수 있습니다.
문제 해결
복원 실패: "snapshot file corrupted"
restore failed: snapshot file corrupted
왜 발생하나요?
백업 파일이 손상되어 복원에 사용할 수 없습니다. 백업 생성 중 디스크 오류가 발생했거나, 저장 후 파일이 손상되었을 수 있습니다.
해결 방법
- 다른 백업 파일 사용: 다른 날짜의 정상적인 백업을 선택하세요
- 백업 파일 무결성 검사: 백업 상세 정보에서 체크섬을 확인하세요
- 원본 백업 복사본 확인: 백업이 다른 위치에 복제되어 있다면 해당 파일을 사용하세요
데이터 불일치
복원 후 예상과 다른 데이터가 표시되거나, 애플리케이션이 오류를 발생시키는 경우입니다.
왜 발생하나요?
- 백업 시점과 현재 시점 사이에 데이터 스키마가 변경되었습니다 .
- 백업에 포함되지 않은 외부 시스템과의 연동 데이터가 불일치합니다 .
확인 및 해결 방법
- 백업 시점 확인: 복원된 데이터가 백업 시점의 상태인지 확인하세요
- 스키마 호환성 확인: 애플리케이션 버전과 데이터 스키마가 호환되는지 확인하세요
- 외부 시스템 동기화: 데이터베이스 등 외부 시스템도 함께 복원이 필요한지 확인하세요
시스템의 일부만 복원하면 데이터 불일치가 발생할 수 있습니다. 가능하면 관련된 모든 구성요소를 함께 복원하세요.