서버 운영
서버 백업에 접속할 수 없을 때 확인할 순서
데이터베이스 백업 저장소나 백업 스토리지에 접속이 안 될 때 네트워크, 권한, 저장소 문제를 체계적으로 진단하는 방법을 정리했다.
실제 서비스 중단 상황에서 백업에서 데이터를 복구해야 하는데 백업 저장소에 접속할 수 없다면 매우 긴급한 상황이다. 하지만 대부분은 네트워크나 권한 문제고, 체계적으로 확인하면 빠르게 해결된다.
먼저 서버의 기본 상태를 확인한다
# 1. 현재 사용 중인 디스크 공간
df -h
# 2. 네트워크 연결 상태
ping 8.8.8.8 # 외부 인터넷 연결 확인
# 3. DNS 동작 확인
nslookup backup.example.com # 백업 서버의 도메인명 해석
# 4. 열려있는 포트 확인
sudo ss -lntp | grep LISTEN
기본 네트워크가 정상이라면 더 깊게 파고든다.
백업 스토리지의 연결 상태 확인
로컬 마운트된 스토리지
# 마운트 포인트 확인
mount | grep backup
# 마운트되지 않았다면 수동으로 마운트
sudo mount /dev/sda1 /mnt/backup
# 또는 /etc/fstab에 자동 마운트가 설정되어 있는지 확인
cat /etc/fstab | grep backup
NAS나 원격 스토리지 (NFS)
# NFS 서버 도달 가능한지 확인
ping backup-nas.local
# NFS 포트 열려있는지
telnet backup-nas.local 2049 # NFS는 2049 포트
# 마운트 시도
sudo mount -t nfs backup-nas.local:/export/backup /mnt/backup
# 마운트 실패 시 상세 로그
sudo journalctl -u nfs-client | tail -50
S3나 클라우드 스토리지
# AWS S3 접근 확인
aws s3 ls s3://my-backup-bucket --profile backup-user
# 권한 확인
aws iam get-user --profile backup-user
# 네트워크 연결 확인 (S3 엔드포인트)
ping s3.amazonaws.com
권한(Permission) 문제 확인
# 현재 사용자 확인
whoami
id
# 백업 폴더 접근 권한 확인
ls -la /mnt/backup
# 읽기 권한이 없으면?
sudo ls -la /mnt/backup # sudo로 시도
# 소유권과 권한 확인
stat /mnt/backup
# 필요하면 권한 변경
sudo chmod 755 /mnt/backup
sudo chown backup-user:backup-group /mnt/backup
저장소 용량 문제
# 백업 저장소의 여유 공간 확인
df -h /mnt/backup
# 사용 중인 공간 상세 확인
du -sh /mnt/backup/*
# 만약 용량이 부족하면?
# 1. 오래된 백업 삭제
find /mnt/backup -name "backup_*.tar.gz" -mtime +30 -delete
# 2. 또는 다른 저장소로 옮기기
mv /mnt/backup/old_backups /mnt/backup2/
백업 파일 접근성 확인
# 백업 파일이 실제로 있는지
ls -lh /mnt/backup/*.tar.gz
# 가장 최근 백업 확인
ls -ltr /mnt/backup/*.tar.gz | tail -1
# 백업 파일이 손상되지 않았는지 확인
tar -tzf /mnt/backup/backup_2024_01_01.tar.gz > /dev/null 2>&1
echo $? # 0이면 정상, 1이면 손상
데이터베이스 복구 전 체크리스트
# 1. 백업 파일이 접근 가능한지
test -f /mnt/backup/db_backup.sql && echo "✓ 파일 접근 가능" || echo "✗ 파일 없음"
# 2. 백업의 시간 확인
stat /mnt/backup/db_backup.sql | grep Modify
# 3. 현재 데이터베이스 상태
mysql -u root -p -e "SHOW DATABASES;"
# 4. 복구 전 현재 상태 백업
mysqldump -u root -p --all-databases > /tmp/current_state.sql
# 5. 복구 실행
mysql -u root -p < /mnt/backup/db_backup.sql
네트워크 연결 문제 디버깅
# 방화벽 규칙 확인 (UFW)
sudo ufw status
sudo ufw show added | grep backup
# 또는 iptables
sudo iptables -L -n | grep 2049 # NFS 포트
# SSH로 원격 백업 서버 접근
ssh [email protected]
# SCP로 파일 복사 가능한지
scp [email protected]:/backups/db.sql /tmp/
모니터링 로그 확인
# 최근 시스템 로그
sudo journalctl -n 100 --priority=err
# NFS 관련 에러
sudo dmesg | tail -50
# 저장소 관련 로그
sudo journalctl -u mnt-backup.mount
# 자동 백업 스크립트 로그
cat /var/log/backup.log
백업 접속 실패 시 응급 조치
- 로컬에 백업이 최근에 있었는지 확인
- 없으면 다른 서버(개발/스테이징)의 백업 확인
- 그것도 없으면 데이터베이스 복제본(replication)에서 복구
- 그것도 없으면 WAL 로그(Write Ahead Logs)에서 복구 시도
# PostgreSQL의 WAL 로그 위치
ls -lh /var/lib/postgresql/13/main/pg_wal/
# MySQL의 바이너리 로그 위치
ls -lh /var/lib/mysql/mysql-bin.*
백업은 필요할 때 진짜 필요하므로, 정기적으로 접근 가능한지 테스트하는 습관이 중요하다. 실제 재난 상황에서 백업을 못 쓰면 의미가 없다.