24장. 정기적인 데이터베이스 관리 작업들

차례

24.1. 정기적인 Vacuum 작업
24.1.1. Vacuum 기초
24.1.2. 디스크 여유 공간 확보
24.1.3. 실행계획 통계 정보 갱신
24.1.4. 실자료 지도 갱신
24.1.5. 트랜잭션 ID 겹침 오류 방지
24.1.6. Autovacuum 데몬
24.2. 정기적인 인덱스 다시 만들기
24.3. 로그 파일 관리

다른 데이터베이스 소프트웨어와 마찬가지로, PostgreSQL에서도 최적의 성능을 유지하지 위해서는 주기적인 관리 작업이 필요하다. 여기서 관리 작업이란 꼭 필요한 작업이지만, 이 작업들은 대부분 항상 같은 형태로 반복 되는 작업이기 때문에, cron이나, 윈도우즈의 작업 스케줄러 같은 프로그램을 이용해서 그 작업을 등록해서 주기적으로 실행하면 된다. 물론, 이런 작업 스크립트를 작성 하는 일과, 그 작업이 정상적으로 실행 되었는지를 확인 하는 일은 데이터베이스 관리자의 몫이다.

주기적인 작업으로 가장 으뜸은 당연히 백업이다. 장애(하드웨어 측면의 장애이거나 운영상 사용자 실수에 의한 장애이거나) 가 발생했을 때, 마지막 보루는 가장 최근에 백업한 자료로 데이터베이스를 복구하는 것이다. 백업과 복구에 대한 자세한 이야기는 25장에서 소개하고 있다. (데이터베이스 관리자들 사이 흔한 농담으로 테이블을 날려 먹는 관리자는 용서 할 수 있어도, 백업 관리를 하지 않는 관리자는 용서할 수 없다고 한다. - 옮긴이)

또 다른 중요한 정기적인 관리 작업은 데이터베이스 vacuum 하기이다. 이 부분에 대한 자세한 이야기는 24.1절에서 다룬다. 이어서 쿼리 실행 계획기가 바른 실행 계획을 짜도록 테이블의 자료 통계 정보를 갱신 하는 것에 대한 부분은 24.1.3절에서 다룬다.

또 다른 작업으로는 서버 로그 파일 관리 작업인데, 이 부분에 대해서는 24.3절에서 다룬다.

check_postgres 프로그램은 데이터베이스 상태를 지켜보고, 비정상적인 상태에 대해서 보고하는 일을 한다. Nagios나 MRTG에서 check_postgres 프로그램을 이용하면 유용하게 쓰일 것이다. 물론 이 프로그램 단독으로 사용해도 충분히 그 역할을 한다.

PostgreSQL은 다른 데이터베이스 관리 시스템에 비해서 비교적 적은 관리 비용이 든다. 그럼에도 불구하고, 이런 정기적인 관리 작업에 대한 어느 정도의 관심은 보다 쾌적한 데이터베이스 서비스 품질을 제공할 수 있을 것이다.