웹 개발
데이터베이스를 백업해야 할 때를 판단하는 기준
서버 운영 중 언제 DB 백업이 필요한지, 그리고 어떻게 확인할지 정리했습니다.
데이터베이스 백업의 필요성은 화면만 보고는 판단하기 어렵다. 로그와 실제 디스크 상태를 함께 봐야 한다.
디스크 용량 확인
먼저 현재 디스크 상황을 본다.
df -h
du -sh /var/lib/postgresql/*
du -sh /var/lib/mysql/*
디스크 사용량이 80% 이상이면 백업 후 오래된 데이터를 정리해야 한다. 특히 로그 파일이 계속 쌓이고 있는지 확인해야 한다.
데이터베이스 로그
sudo journalctl -u postgresql -n 50
sudo journalctl -u mysql -n 50
tail -100 /var/log/mysql/error.log
데이터베이스 에러 로그에서 "disk full", "out of memory" 같은 경고가 있는지 확인한다. 이런 메시지가 있으면 긴급 백업이 필요하다.
권한과 프로세스 확인
ls -la /var/lib/postgresql/
ps aux | grep postgres
ps aux | grep mysql
데이터베이스 프로세스의 소유자와 파일 권한이 정상인지 확인한다. 권한 문제로 데이터베이스가 제대로 동작하지 않을 수도 있다.
응답 속도 측정
time psql -U user -d database -c "SELECT COUNT(*) FROM large_table;"
time mysql -u user -p database -e "SELECT COUNT(*) FROM large_table;"
쿼리 응답 시간이 평소보다 훨씬 길면 디스크 I/O가 심하거나 테이블 조각화가 진행 중일 수 있다. 이때는 백업 후 정리가 도움이 된다.
백업 전 체크리스트
- 현재 디스크 사용량은 얼마인가 (df -h)
- 데이터베이스 에러 로그에 경고가 있는가
- 쿼리 응답 속도가 정상인가
- 최근 언제 백업했는가
- 백업 후 오래된 로그/임시 파일을 정리할 준비가 되었는가
백업은 예방 차원에서 하는 게 아니라, 현재 상태가 악화되기 전에 하는 것이다.