← 전체 글로 돌아가기

서버 운영

서버 백업에 접속할 수 없을 때 확인할 순서

데이터베이스 백업 저장소나 백업 스토리지에 접속이 안 될 때 네트워크, 권한, 저장소 문제를 체계적으로 진단하는 방법을 정리했다.

실제 서비스 중단 상황에서 백업에서 데이터를 복구해야 하는데 백업 저장소에 접속할 수 없다면 매우 긴급한 상황이다. 하지만 대부분은 네트워크나 권한 문제고, 체계적으로 확인하면 빠르게 해결된다.

먼저 서버의 기본 상태를 확인한다

# 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

백업 접속 실패 시 응급 조치

  1. 로컬에 백업이 최근에 있었는지 확인
  2. 없으면 다른 서버(개발/스테이징)의 백업 확인
  3. 그것도 없으면 데이터베이스 복제본(replication)에서 복구
  4. 그것도 없으면 WAL 로그(Write Ahead Logs)에서 복구 시도
# PostgreSQL의 WAL 로그 위치
ls -lh /var/lib/postgresql/13/main/pg_wal/

# MySQL의 바이너리 로그 위치
ls -lh /var/lib/mysql/mysql-bin.*

백업은 필요할 때 진짜 필요하므로, 정기적으로 접근 가능한지 테스트하는 습관이 중요하다. 실제 재난 상황에서 백업을 못 쓰면 의미가 없다.