웹 개발
데이터베이스 백업 실패의 원인을 빨리 찾는 방법
백업 스크립트가 실패했을 때 단계별로 원인을 좁혀서 찾는 순서를 정리했습니다.
백업이 실패했다는 알람이 오면, 화면 하나만 보고 판단하면 놓치는 게 많다. 로그와 서버 리소스를 함께 봐야 한다.
처음 보이는 증상
백업 실패 알람이 왔을 때 확인할 첫 번째 것은 실제로 실패한 건지, 아니면 단순히 느린 건지다.
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" 같은 메시지가 있으면 바로 다음 단계를 알 수 있다.
수정 후 재시도
- 현재 디스크, 메모리, 프로세스 상태를 기록한다
- 하나의 문제만 수정한다 (예: 오래된 백업 파일 삭제)
- 백업 명령을 수동으로 실행해 본다
- 성공 여부와 걸린 시간을 기록한다
자동 백업이 실패해도 수동으로 테스트할 수 있으면 원인을 빠르게 파악할 수 있다.