티스토리 뷰

카테고리 없음

MariaDB 백업 정책

자바바라 2024. 10. 22. 21:29

 

1. 백업 유형 결정

MariaDB의 백업은 크게 전체 백업증분 백업으로 나눌 수 있습니다.

  • 전체 백업 (Full Backup): 데이터베이스 전체를 백업하는 방식으로, 모든 데이터를 포함한 백업입니다. 주기적으로 전체 백업을 수행하면 복구 시 최신 상태로 복원할 수 있습니다.
  • 증분 백업 (Incremental Backup): 마지막 백업 이후 변경된 데이터만 백업하는 방식입니다. 데이터 변경량이 적을 경우 백업 속도가 빠르고 저장 공간을 절약할 수 있습니다. 다만 복구 시 전체 백업과 증분 백업을 모두 적용해야 합니다.

권장 사항:

  • 전체 백업: 일주일에 한 번 수행.
  • 증분 백업: 매일 수행.

2. 백업 도구 선택

MariaDB의 백업을 위해 사용할 수 있는 여러 도구가 있으며, 환경에 따라 적합한 도구를 선택해야 합니다.

  • Mariabackup: MariaDB의 고성능 백업 도구로, 전체 및 증분 백업을 지원하며, 물리적 데이터 복제를 제공합니다. 높은 성능과 안정성을 가진 백업 방법입니다.
  • mysqldump: SQL 덤프를 생성하는 방식으로, 주로 소규모 데이터베이스나 테스트 환경에서 사용됩니다. 데이터 크기가 클 경우 성능이 떨어질 수 있습니다.
  • Percona XtraBackup: MySQL 및 MariaDB용 고성능 백업 도구로, 물리적 백업 및 증분 백업을 지원합니다.

3. 백업 주기 및 보존 정책

3.1 백업 주기

  • 전체 백업: 매주 1회 (예: 매주 일요일 자정에 수행)
  • 증분 백업: 매일 자정 (매일 수행하여 변화된 데이터만 백업)

이 백업 주기는 서비스 중단 없이 데이터를 최대한 자주 보호할 수 있도록 해야 하며, 서비스 성격에 따라 조정될 수 있습니다.

3.2 백업 보존 기간

  • 전체 백업: 최소 4주간 보관.
  • 증분 백업: 최소 7일간 보관.

보존 기간은 데이터 복구에 필요한 기간을 고려해 설정하며, 보존 기간을 너무 길게 설정하면 스토리지 비용이 증가할 수 있습니다. 반대로 너무 짧으면 데이터 복구가 어려워질 수 있습니다.


4. 백업 저장 위치

백업 파일은 주로 다음과 같은 저장소에 저장할 수 있습니다.

  • 로컬 스토리지: 노드의 디스크에 백업을 저장하는 방법이지만, 클러스터 노드에 문제가 발생할 경우 데이터 손실 위험이 있습니다.
  • 원격 스토리지 (NFS, S3, Azure Blob): 원격 저장소에 백업을 저장하여 장애 발생 시에도 데이터를 안전하게 보호할 수 있습니다. 특히, 클라우드 환경에서는 Amazon S3나 Google Cloud Storage와 같은 오브젝트 스토리지를 사용하면 고가용성을 보장할 수 있습니다.

5. Kubernetes 환경에서의 백업 전략

Kubernetes 환경에서는 백업 작업을 CronJob으로 자동화하고, 데이터를 외부 스토리지에 저장하는 방식이 일반적입니다.

5.1 백업 스크립트

Kubernetes 환경에서 Mariabackup을 사용한 예시 백업 스크립트입니다.

#!/bin/bash

# 백업 파일 저장 경로
BACKUP_DIR="/backups/mariadb"
DATE=$(date +"%Y%m%d%H%M")

# Mariabackup 실행
mariabackup --backup --target-dir=${BACKUP_DIR}/${DATE} --user=<backup_user> --password=<backup_password>

# 백업 결과 압축
tar -zcvf ${BACKUP_DIR}/${DATE}.tar.gz ${BACKUP_DIR}/${DATE}

# 압축 후 원본 백업 삭제
rm -rf ${BACKUP_DIR}/${DATE}

5.2 Kubernetes CronJob 예시

위 스크립트를 CronJob으로 설정하여 자동화할 수 있습니다. 아래는 백업을 매일 자정에 수행하는 CronJob 예시입니다.

apiVersion: batch/v1
kind: CronJob
metadata:
  name: mariadb-backup
  namespace: mariadb
spec:
  schedule: "0 0 * * *"  # 매일 자정에 실행
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: mariadb-backup
            image: mariadb:10.10
            command: ["/bin/bash", "-c", "/scripts/backup.sh"]
            volumeMounts:
            - name: backup-storage
              mountPath: /backups
            - name: backup-script
              mountPath: /scripts
          restartPolicy: OnFailure
          volumes:
          - name: backup-storage
            persistentVolumeClaim:
              claimName: mariadb-backup-pvc
          - name: backup-script
            configMap:
              name: mariadb-backup-script

5.3 Persistent Volume Claim (PVC)

백업 데이터를 저장할 외부 스토리지와 연결된 PVC를 설정합니다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mariadb-backup-pvc
  namespace: mariadb
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Gi

6. 복구 전략

6.1 전체 백업 복구

전체 백업 파일을 사용하여 MariaDB를 복구할 수 있습니다.

mariabackup --prepare --target-dir=/backups/mariadb/last_backup
mariabackup --copy-back --target-dir=/backups/mariadb/last_backup
chown -R mysql:mysql /var/lib/mysql

6.2 증분 백업 복구

증분 백업을 포함한 전체 백업 복구는 다음 순서를 따릅니다:

  1. 전체 백업 준비
     
    mariabackup --prepare --target-dir=/backups/full_backup
  2. 증분 백업 병합
     
    mariabackup --prepare --target-dir=/backups/full_backup --incremental-dir=/backups/incremental_backup
  3. 데이터 복구
     
    mariabackup --copy-back --target-dir=/backups/full_backup chown -R mysql:mysql /var/lib/mysql

7. 모니터링 및 알림

  • Prometheus 및 Grafana: 백업 상태 및 스토리지 용량을 모니터링할 수 있는 대시보드를 설정하여 이상 상황 발생 시 알림을 받을 수 있도록 설정합니다.
  • Slack, Email 알림: CronJob 실행 후 실패 시 Slack이나 이메일을 통해 알림을 받을 수 있도록 설정합니다.

요약

  1. 백업 유형: 전체 백업과 증분 백업을 병행.
  2. 백업 주기: 전체 백업은 매주, 증분 백업은 매일.
  3. 백업 보존 기간: 전체 백업은 4주, 증분 백업은 7일 이상 보관.
  4. 백업 도구: Mariabackup, Percona XtraBackup 등 선택.
  5. Kubernetes CronJob으로 자동화.
  6. 복구 전략: 전체 또는 증분 백업을 통해 복구.
  7. 모니터링 및 알림: Prometheus와 Grafana로 상태 모니터링.

이러한 정책을 통해 K8s 환경에서의 MariaDB 백업을 안정적으로 운영할 수 있습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함