From 38dd229afbb39d2f06779529a4c4c7918251f761 Mon Sep 17 00:00:00 2001 From: happybell80 Date: Tue, 29 Jul 2025 23:56:32 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EC=84=9C=EB=B2=84=20=EB=B0=B1=EC=97=85?= =?UTF-8?q?=20=EC=B2=B4=EA=B3=84=20=EA=B5=AC=EC=B6=95=20=EB=B0=8F=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EA=B4=80=EB=A6=AC=20=EA=B0=9C=EC=84=A0=20?= =?UTF-8?q?=ED=8A=B8=EB=9F=AC=EB=B8=94=EC=8A=88=ED=8C=85=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...서버백업및로그관리체계구축.md | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 troubleshooting/250729_서버백업및로그관리체계구축.md diff --git a/troubleshooting/250729_서버백업및로그관리체계구축.md b/troubleshooting/250729_서버백업및로그관리체계구축.md new file mode 100644 index 0000000..73edf8c --- /dev/null +++ b/troubleshooting/250729_서버백업및로그관리체계구축.md @@ -0,0 +1,147 @@ +# 서버 백업 체계 구축 및 로그 관리 개선 + +**날짜**: 2025-07-29 +**작업자**: admin@51123 & Claude +**관련 시스템**: 백업, 로그 관리, 디스크 최적화 + +## 오후 11시 00분 + +### 크론잡 및 로그 백업 현황 점검 + +**문제 발견**: +- 크론잡은 정상 작동 중 (매일 새벽 4시 cleanup 스크립트 실행) +- NAS 마운트 정상 (192.168.219.51, 5.3T 중 1% 사용) +- **로그 자동 백업 없음**: HDD의 로그가 NAS로 백업되지 않음 + +**확인 내용**: +```bash +# 크론탭 확인 +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주에서 변경) + +**크론탭 등록**: +```bash +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` 명령어는 매우 위험 +- 볼륨 삭제 시 데이터 손실 위험 +- 단계적 접근 필요 + +**안전한 정리 수행**: +```bash +# 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 로그 이전**: +```bash +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 +``` + +2. **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 \ No newline at end of file