Data Engineering/s3 minio

📘 [MinIO & Cilium 기반 오브젝트 스토리지 연동 시리즈 #21] MinIO → 백업 및 복구 전략 실습

ygtoken 2025. 3. 26. 20:58
728x90

목표: MinIO에서의 데이터 백업복구 전략을 설정하고,
MinIO 오브젝트 스토리지에서 발생할 수 있는 데이터 손실에 대응하는 방법을 실습합니다.


🔎 이번 글에서 수행할 작업 요약

  1. MinIO의 백업 및 복구 개념 이해
  2. MinIO의 백업 전략 설정 및 테스트
  3. MinIO의 복구 전략 설정 및 실습
  4. MinIO 데이터 백업 및 복구 자동화 방안

🧠 1단계: MinIO의 백업 및 복구 개념

이 단계의 목적: MinIO에서 데이터를 보호하기 위한 백업복구 전략을 이해하고,
어떻게 데이터 손실을 방지할 수 있는지 배웁니다.

  • MinIO 백업: 데이터를 주기적으로 백업하여 데이터 유실을 방지합니다.
  • MinIO 복구: 데이터를 복구하려면 백업 파일을 MinIO에 다시 복원하는 방식으로 진행됩니다.
  • 백업 방법: MinIO에서 제공하는 mc CLI 또는 MinIO Gateway를 사용한 백업 방법을 설정할 수 있습니다.
  • 복구 방법: 백업 파일을 MinIO에 복원하여 원본 상태로 복구할 수 있습니다.

✅ MinIO는 S3 호환이기 때문에 다른 S3 클라우드 서비스처럼 백업 및 복구 전략을 쉽게 설정할 수 있습니다.


⚙️ 2단계: MinIO의 백업 전략 설정 및 테스트

이 단계의 목적: MinIO의 데이터를 주기적으로 백업하여 데이터 손실을 방지할 수 있도록 백업 전략을 설정합니다.

백업 명령어 예시

# MinIO에서 백업할 버킷 생성
mc mb myminio/my-backup-bucket  # 새로운 MinIO 버킷을 생성하여 백업 데이터를 저장할 공간 마련

# 백업할 파일을 MinIO의 버킷에 업로드
mc cp /path/to/data myminio/my-backup-bucket/  # 로컬의 데이터를 MinIO 백업 버킷으로 업로드

mc cp 명령어는 MinIO에서 로컬 데이터를 백업하는데 사용됩니다.
여기서 **myminio/my-backup-bucket**은 MinIO에 설정된 백업용 버킷을 의미합니다.

백업 자동화

백업을 주기적으로 자동화하려면 cron 또는 Kubernetes CronJob을 사용할 수 있습니다. 아래는 Kubernetes CronJob을 사용하여 MinIO 데이터를 자동으로 백업하는 예시입니다.

apiVersion: batch/v1
kind: CronJob
metadata:
  name: minio-backup
  namespace: minio
spec:
  schedule: "0 0 * * *"  # 매일 자정에 백업 실행
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: minio-backup
            image: minio/mc:latest  # `mc` 도구를 포함한 MinIO 이미지 사용
            command:
              - "/bin/sh"
              - "-c"
              - "mc cp /data myminio/my-backup-bucket/"  # 백업 작업을 주기적으로 실행
          restartPolicy: OnFailure  # 작업 실패 시 재시도 정책 설정
# CronJob 배포 후 상태 확인
kubectl get cronjobs -n minio  # CronJob이 제대로 생성되었는지 확인

✅ 이 CronJob은 매일 자정에 MinIO 데이터를 백업하는 자동화 작업을 설정합니다.
schedule 항목은 백업 작업이 매일 자정에 실행되도록 예약합니다.


🧪 3단계: MinIO의 복구 전략 설정 및 실습

이 단계의 목적: MinIO에서 백업된 데이터를 복구하는 방법을 실습하여,
데이터 유실 상황에서 신속하게 복구할 수 있도록 설정합니다.

복구 과정

# MinIO에서 복구할 버킷 생성
mc mb myminio/my-restored-bucket  # 복구된 데이터를 저장할 새로운 버킷 생성

# 백업된 데이터를 복원할 경로로 복사
mc cp myminio/my-backup-bucket/ /data/  # 백업된 데이터를 MinIO로 복원

mc cp 명령어는 백업된 데이터를 MinIO에 복원하는 데 사용됩니다.
복구된 데이터는 /data/ 경로로 복사되어 MinIO에서 사용할 수 있습니다.

복구 자동화

복구 작업을 자동화하려면 Kubernetes CronJob을 사용하여 복구 프로세스를 설정할 수 있습니다.

apiVersion: batch/v1
kind: CronJob
metadata:
  name: minio-restore
  namespace: minio
spec:
  schedule: "0 1 * * *"  # 매일 1시에 복구 작업 실행
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: minio-restore
            image: minio/mc:latest  # `mc` 도구를 포함한 MinIO 이미지 사용
            command:
              - "/bin/sh"
              - "-c"
              - "mc cp myminio/my-backup-bucket/ /data/"  # 복구 작업을 주기적으로 실행
          restartPolicy: OnFailure  # 작업 실패 시 재시도 정책 설정
# CronJob 배포 후 상태 확인
kubectl get cronjobs -n minio  # CronJob이 제대로 생성되었는지 확인

✅ 이 CronJob복구 작업을 자동으로 실행하도록 설정되어,
데이터 복원을 신속하게 처리할 수 있습니다.


📎 요약 및 핵심 정리

  • MinIO의 백업 전략mc cp 명령어를 통해 데이터를 주기적으로 백업하는 방식으로 구현할 수 있습니다.
    Kubernetes CronJob을 사용하면 백업을 자동화할 수 있습니다.
  • MinIO의 복구 전략백업된 데이터를 복원하여 원본 상태로 복구하는 방식으로 설정됩니다.
    복구 작업 역시 CronJob을 사용하여 자동화할 수 있습니다.
  • MinIO에서 데이터 손실을 방지하고, 장애 발생 시 복구 작업을 신속하게 진행할 수 있는 백업 및 복구 전략을 마련하는 것이 중요합니다.
728x90