웹서버 증분 백업

  1. MySQL 백업 도구 비교 방식 장점 단점 mysqldump 간단, 표준, Docker 친화적 대용량 DB에서 느림 mysqlpump 병렬 처리 지원 MySQL 5.7+ 필요 xtrabackup 핫 백업, 증분 지원 설정 복잡 추천: mysqldump (Docker 환경에 적합, DB 크기가 적당함)
  2. 파일 증분 백업 도구 비교 도구 중복제거 암호화 멀티스레드 Google Drive rsync 하드링크만 X X rclone 필요 restic 블록 레벨 AES-256 O 네이티브 지원 borg 블록 레벨 (더 효율적) O X rclone 필요 rclone X O O 네이티브 추천: restic
  • 블록 레벨 중복제거로 저장 공간 절약
  • rclone 백엔드로 Google Drive 직접 연동
  • 멀티스레드로 빠른 백업
  • 암호화 기본 지원
  1. Google Drive 연동 rclone 사용 (표준 방식)
  • Service Account 또는 OAuth2 인증
  • rclone copy vs rclone sync 주의
  • 전송 실패 시 자동 재시도
  1. 권장 백업 전략 ┌─────────────────────────────────────────────────────────┐
    │ OCI ARM64 서버 │
    ├─────────────────────────────────────────────────────────┤
    │ [Cron Daily 02:00] │
    │ ┌─────────────────┐ ┌─────────────────┐ │
    │ │ MySQL Dump │───▶│ /backup/mysql │ │
    │ │ (all DBs) │ │ 7일 보관 │ │
    │ └─────────────────┘ └────────┬────────┘ │
    │ │ │
    │ [Cron Daily 03:00] │ │
    │ ┌─────────────────┐ ┌───────▼────────┐ │
    │ │ restic backup │───▶│ /backup/files │ │
    │ │ (4 sites) │ │ 증분 백업 │ │
    │ └─────────────────┘ └────────┬────────┘ │
    │ │ │
    │ [Cron Daily 04:00] │ │
    │ ┌─────────────────┐ ┌───────▼────────┐ │
    │ │ rclone sync │───▶│ Google Drive │ │
    │ │ │ │ 30일 보관 │ │
    │ └─────────────────┘ └────────────────┘ │
    └─────────────────────────────────────────────────────────┘
  2. 보관 정책 권장 유형 로컬 보관 Google Drive MySQL dump 7일 30일 파일 증분 7일 (snapshot) 30일

Sources:

  • https://rclone.org/drive/
  • https://medium.com/swlh/using-rclone-on-linux-to-automate-backups-to-google-drive-d599b49c42e8
  • https://simplebackups.com/blog/the-ultimate-mysql-database-backup-script/
  • https://bebehei.de/simple-comparison-borg-restic-rustic-2024/
  • https://faisalrafique.com/restic-vs-borg/

OCI ARM64 서버 백업 시스템 구축기

들어가며

OCI (Oracle Cloud Infrastructure) ARM64 서버에서 운영 중인 여러 웹사이트의 백업 시스템을 구축했습니다. 키 파일 없이 안전하게, 그리고 자동으로 클라우드에 백업하는 방법을 공유합니다.

요구사항

  • MySQL 데이터베이스 일일 덤프
  • 여러 사이트 파일 증분 백업
  • 클라우드 스토리지 이중화 (OCI + Google Drive)
  • 키 파일 없이 안전한 인증

사용 도구

도구용도
mysqldumpMySQL 데이터베이스 백업
restic암호화된 증분 백업
OCI CLIOCI Object Storage 업로드
rcloneGoogle Drive 동기화

아키텍처

[OCI ARM64 Server]
       │
       ├─ MySQL Dump (매일 02:00)
       │     └─ /home/opc/backup/mysql/*.sql.gz
       │
       ├─ Restic 증분백업 (매일 03:00)
       │     └─ /home/opc/backup/restic-repo/
       │
       ├─ OCI Object Storage (매일 04:00)
       │     └─ oci os object sync (Instance Principal)
       │
       └─ Google Drive (매일 04:30)
             └─ rclone sync (OAuth2)

핵심 포인트: 키 없는 인증

OCI Object Storage – Instance Principal

OCI에서는 Instance Principal을 사용하면 API 키 없이 인증할 수 있습니다.

설정 방법:

  1. Dynamic Group 생성 (인스턴스 OCID 기반)
  2. Policy 생성 (Object Storage 권한 부여)
  3. 스크립트에서 OCI_CLI_AUTH=instance_principal 설정
export OCI_CLI_AUTH=instance_principal
oci os object sync --bucket-name oci-backup --src-dir /home/opc/backup/mysql

Google Drive – OAuth2

rclone의 OAuth2 인증을 사용하면 JSON 키 파일 없이 안전하게 연동할 수 있습니다.

# 로컬 PC에서 인증
rclone authorize "drive"

# 서버에 토큰 설정
rclone config

Restic 증분 백업

restic은 block-level deduplication을 지원해서 변경된 부분만 백업합니다.

# 초기화
restic init --repo /home/opc/backup/restic-repo

# 백업 실행
restic backup /home/site1/www /home/site2/www \
  --exclude="*.log" \
  --exclude="*/cache/*" \
  --exclude="*/node_modules/*"

# 보관 정책 적용
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 3 --prune

Cron 설정

# 매일 새벽 2시 전체 백업 실행
0 2 * * * /home/opc/backup/scripts/backup-all.sh >> /home/opc/backup/logs/daily-backup.log 2>&1

백업 흐름

  1. 02:00 – MySQL 덤프 (6개 DB, gzip 압축)
  2. 02:05 – Restic 증분 백업 (4개 사이트)
  3. 02:30 – OCI Object Storage 동기화
  4. 02:35 – Google Drive 동기화

복구 방법

MySQL 복구

gunzip -c backup_20251218.sql.gz | mysql -u root -p database_name

Restic 복구

# 스냅샷 목록 확인
restic snapshots

# 특정 파일 복구
restic restore latest --target /tmp/restore --include "/home/site1/www"

결과

  • 로컬: 7일치 MySQL 덤프 + restic 스냅샷
  • OCI Object Storage: 30일 보관, ~6GB
  • Google Drive: 7일 보관, MySQL 덤프만

마치며

Instance Principal과 OAuth2를 활용하면 키 파일 관리 부담 없이 안전한 백업 시스템을 구축할 수 있습니다. 특히 OCI 환경에서는 Instance Principal이 가장 권장되는 인증 방식입니다.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top