← 전체 글로 돌아가기

웹 개발

데이터베이스 백업 실패의 원인을 빨리 찾는 방법

백업 스크립트가 실패했을 때 단계별로 원인을 좁혀서 찾는 순서를 정리했습니다.

백업이 실패했다는 알람이 오면, 화면 하나만 보고 판단하면 놓치는 게 많다. 로그와 서버 리소스를 함께 봐야 한다.

처음 보이는 증상

백업 실패 알람이 왔을 때 확인할 첫 번째 것은 실제로 실패한 건지, 아니면 단순히 느린 건지다.

sudo journalctl -u backup-service -n 50
df -h
free -h

디스크 용량이 거의 찼거나 메모리가 부족하면 백업 프로세스가 중단될 수 있다. 특히 /tmp 디렉토리 용량도 확인해야 한다.

원인을 나누는 기준

백업 실패의 원인은 보통 세 가지 중 하나다: 리소스 부족, 데이터베이스 연결 문제, 저장소 문제.

psql -U backup-user -d database -c "SELECT 1;"  # DB 연결 확인
df -i  # inode 확인
ls -la /backup/  # 백업 디렉토리 권한

각각을 하나씩 확인해서 어느 부분에서 실패하는지 좁혀간다.

바로 확인할 값

sudo ss -lntp | grep 5432  # PostgreSQL 포트 확인
sudo systemctl status postgresql
du -sh /var/lib/postgresql/  # DB 크기

DB 서버가 정상 동작하고 있는지, 데이터베이스 크기가 얼마나 되는지 확인한다. 만약 DB가 너무 크면 백업 시간이 길어질 수 있다.

로그 확인과 해석

tail -100 /var/log/backup.log
sudo journalctl -u postgresql -n 100

백업 로그와 DB 로그에서 구체적인 에러 메시지를 찾는다. "permission denied", "disk full", "connection refused" 같은 메시지가 있으면 바로 다음 단계를 알 수 있다.

수정 후 재시도

  1. 현재 디스크, 메모리, 프로세스 상태를 기록한다
  2. 하나의 문제만 수정한다 (예: 오래된 백업 파일 삭제)
  3. 백업 명령을 수동으로 실행해 본다
  4. 성공 여부와 걸린 시간을 기록한다

자동 백업이 실패해도 수동으로 테스트할 수 있으면 원인을 빠르게 파악할 수 있다.