DOCS/troubleshooting/250729_서버백업및로그관리체계구축.md

3.9 KiB

서버 백업 체계 구축 및 로그 관리 개선

날짜: 2025-07-29
작업자: admin@51123 & Claude
관련 시스템: 백업, 로그 관리, 디스크 최적화

오후 11시 00분

크론잡 및 로그 백업 현황 점검

문제 발견:

  • 크론잡은 정상 작동 중 (매일 새벽 4시 cleanup 스크립트 실행)
  • NAS 마운트 정상 (192.168.219.51, 5.3T 중 1% 사용)
  • 로그 자동 백업 없음: HDD의 로그가 NAS로 백업되지 않음

확인 내용:

# 크론탭 확인
0 4 * * * /home/admin/scripts/cleanup-server.sh

# NAS 백업 디렉토리 구조
/mnt/nas/backup/
├── archives/
└── current/
    ├── config/
    ├── gitea/
    └── robing/

오후 11시 10분

주간 서버 백업 스크립트 작성

목표: 매주 일요일 새벽 5시 서버 상태 전체 백업

Sequential Thinking 분석 결과:

  • 서버 상태 백업 필요성 확인
  • NAS 공간 충분 (5.3T 중 1%)
  • 재해 복구 및 문제 분석용 백업 필요

작성한 스크립트: /home/admin/scripts/weekly-backup.sh

  • 시스템 상태 덤프 (텍스트)
  • 로그 파일 압축 백업
  • 설정 파일 백업
  • Git 저장소 상태 기록
  • DB 스키마 백업 (데이터 제외)
  • 12주 보관 정책 (기존 4주에서 변경)

크론탭 등록:

0 5 * * 0 /home/admin/scripts/weekly-backup.sh

오후 11시 20분

Docker 디스크 사용량 정리

문제:

  • Docker Build Cache 19.85GB 사용
  • 사용하지 않는 이미지 15.69GB
  • 사용하지 않는 볼륨 5.04GB

Sequential Thinking으로 위험성 분석:

  • docker system prune -af --volumes 명령어는 매우 위험
  • 볼륨 삭제 시 데이터 손실 위험
  • 단계적 접근 필요

안전한 정리 수행:

# Build Cache만 정리 (안전)
docker builder prune -af
# 결과: 19.85GB → 0B
# SSD 사용률: 33% → 24%

cleanup 스크립트 개선:

  • 매일 Docker 빌드 캐시 정리 추가
  • 시스템 로그 2주 이상 정리 추가
  • 정리 전 Docker 상태 기록 추가

오후 11시 30분

로그 파일 HDD 이전

문제 발견:

  • nginx, PostgreSQL, Actions Runner 로그가 SSD에 저장 중
  • CLAUDE.md 규칙: "모든 로그는 HDD에 저장"
  • SSD 수명 보호 필요

Sequential Thinking 분석:

  • 로그는 지속적 쓰기 작업으로 SSD 수명 단축
  • HDD 916GB 중 1%만 사용 (충분한 공간)
  • 성능상 로그 쓰기는 HDD로도 충분

이전 작업:

  1. nginx 로그 이전:
sudo systemctl stop nginx
sudo mv /var/log/nginx /mnt/hdd/logs/
sudo ln -s /mnt/hdd/logs/nginx /var/log/nginx
sudo chown -R www-data:adm /mnt/hdd/logs/nginx
sudo systemctl start nginx
  1. Actions Runner 로그 이전:
  • 시작 스크립트 작성: /home/admin/scripts/start-act-runner.sh
  • 로그 경로: /tmp → /mnt/hdd/logs/act_runner/
  • 기존 로그 파일 이동 완료

최종 HDD 로그 구조:

/mnt/hdd/logs/
├── act_runner/     (새로 추가)
├── cleanup/        (기존)
├── company-x/      (기존)
└── nginx/          (새로 이동)

교훈

  1. 백업은 필수:

    • 주간 백업으로 서버 상태 추적 가능
    • 12주 보관으로 장기 분석 가능
    • NAS 공간이 충분할 때 적극 활용
  2. Docker 정리는 신중하게:

    • Build Cache는 안전하게 정리 가능
    • 볼륨과 이미지는 확인 후 수동 정리
    • 자동 정리는 최소한으로 제한
  3. 로그는 HDD에:

    • SSD 수명 보호가 중요
    • 로그 쓰기 성능은 HDD로도 충분
    • 심볼릭 링크로 투명하게 처리
  4. curl 사용 주의:

    • 외부 도메인 curl 금지 (CLAUDE.md 규칙)
    • localhost 또는 ss 명령어 사용
  5. 단계적 접근:

    • 한 번에 모든 것을 변경하지 않음
    • 각 단계마다 검증
    • 롤백 계획 준비

작성 완료: 2025-07-29 23:55