← 전체 글로 돌아가기

웹 개발

데이터베이스를 백업해야 할 때를 판단하는 기준

서버 운영 중 언제 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가 심하거나 테이블 조각화가 진행 중일 수 있다. 이때는 백업 후 정리가 도움이 된다.

백업 전 체크리스트

  1. 현재 디스크 사용량은 얼마인가 (df -h)
  2. 데이터베이스 에러 로그에 경고가 있는가
  3. 쿼리 응답 속도가 정상인가
  4. 최근 언제 백업했는가
  5. 백업 후 오래된 로그/임시 파일을 정리할 준비가 되었는가

백업은 예방 차원에서 하는 게 아니라, 현재 상태가 악화되기 전에 하는 것이다.