docs: 서버 백업 체계 구축 및 로그 관리 개선 트러블슈팅 추가
This commit is contained in:
parent
a1c4e6705a
commit
38dd229afb
147
troubleshooting/250729_서버백업및로그관리체계구축.md
Normal file
147
troubleshooting/250729_서버백업및로그관리체계구축.md
Normal file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user