책 소개
요약
PostgreSQL 공식 가이드 9.4 버전 문서에서 ‘3부, 서버 관리’ 부분을 발췌해 한 권의 책으로 출간되었다. 이 책에서는 PostgreSQL을 사용하는 데 있어서 데이터베이스 관리자에게 가장 필요한 내용인 데이터베이스 서버 관리 방법을 다룬다. ‘PostgreSQL 공식 가이드’는 PostgreSQL 개발자 및 그 외 지원자가 PostgreSQL 소프트웨어 개발과 병행해 작성된 문서로서, 이번 책 ‘Vol.1 서버 관리’에서는 PostgreSQL 서버를 실행하는 모든 사람을 위해 서버의 설치와 관리 기법을 설명한다. 향후 PostgreSQL 공식 가이드 9.4 버전 중 시리즈로서 ‘SQL 언어’와 ‘서버 프로그래밍’도 2권의 책으로 출간될 예정이다.
이 책에서 다루는 내용
소스코드를 이용하여 다양한 플랫폼에서 PostgreSQL을 설치하는 방법
서버 생성 및 시작, 스푸핑 방지 등 서버를 세팅하는 방법
WAL, 쿼리 계획, 에러 핸들링 등 서버 관리에 도움이 되는 여러 가지 설정
클라이언트 인증 및 데이터베이스를 관리하는 방법
백업, 고가용성 및 복제 등의 설정, 사용법에 대한 내용
디스크 사용량, 통계 수집 등 다양한 정보를 확인할 수 있는 모니터링 기능
회귀테스트를 수행하는 방법
이 책의 대상 독자
오픈소스 DBMS를 구축하고 싶은 데이터베이스 관리자
PostgreSQL DBMS 기반으로 구축된 데이터베이스의 관리자
PostgreSQL을 도입하려는 기업 담당자
개인용도로 PostgreSQL 서버를 구축하는 사용자
이 책의 구성
이 책은 관리자 안내서로 PostgreSQL 데이터베이스 관리자에게 필요한 주제를 다룬다. 소프트웨어 설치 및 셋업, 서버 환경 설정, 사용자와 데이터베이스 관리, 정기적인 관리에 대한 내용이 들어 있다. PostgreSQL 서버를 개인 용도로 쓰거나 특히 운영상 사용해야 하는 경우, 이 주제들에 익숙해야 한다. 이 책은 처음 PostgreSQL 사용 시 읽으면 좋은 순서로 정리해 놓았다. 각 장의 내용은 독립적이기 때문에 개인의 선호에 따라 읽으면 된다. 내용은 주제 단위로 기술되어 있으며, PostgreSQL 데이터베이스 시스템 기본 사용법에 익숙한 독자들이 읽을 수 있다.
목차
목차
- 1장 소스 코드로 설치
- 1.1 짧은 버전
- 1.2 요구 사항
- 1.3 소스 다운로드
- 1.4 설치 절차
- 1.5 설치 후 셋업
- 1.5.1 공유 라이브러리
- 1.5.2 환경 변수
- 1.6 지원 플랫폼
- 1.7 플랫폼 특정 참고 사항
- 1.7.1 AIX
- 1.7.1.1 GCC 문제
- 1.7.1.2 유닉스 도메인 소켓 끊어짐
- 1.7.1.3 인터넷 주소 문제
- 1.7.1.4 메모리 관리
- 1.7.2 시그윈
- 1.7.3 HP-UX
- 1.7.4 MinGW/네이티브 윈도우
- 1.7.4.1 윈도우에서 크래시 덤프 수집
- 1.7.5 SCO 오픈서버 및 SCO 유닉스웨어
- 1.7.5.1 스컹크웨어
- 1.7.5.2 GNU Make
- 1.7.5.3 Readline
- 1.7.5.4 오픈서버에서 UDK 사용
- 1.7.5.5 PostgreSQL Man 페이지 읽기
- 1.7.5.6 7.1.1b 추가 기능에서의 C99 문제
- 1.7.5.7 유닉스웨어에서의 스레딩
- 1.7.6 솔라리스
- 1.7.6.1 필수 툴
- 1.7.6.2 OpenSSL에서의 문제
- 1.7.6.3 실패한 테스트 프로그램에 대한 configure의 complain
- 1.7.6.4 64비트 빌드 Crashes
- 1.7.6.5 최적의 성능을 위한 컴파일
- 1.7.6.6 PostgreSQL 추적용 DTrace 사용
- 2장 윈도우에서 소스 코드로 설치
- 2.1 비주얼 C++ 또는 마이크로소프트 윈도우 SDK를 이용한 빌드
- 2.1.1 요구 사항
- 2.1.2 64비트 윈도우에 대한 특별 고려사항
- 2.1.3 빌드
- 2.1.4 클리닝 및 설치
- 2.1.5 회귀 테스트 실행
- 2.1.6 문서 빌드
- 2.2 비주얼 C++ 또는 볼랜드 C++를 사용한 libpq 빌드
- 2.2.1 생성된 파일
- 3장 서버 설정 및 운용
- 3.1 PostgreSQL 사용자 계정
- 3.2 데이터베이스 클러스터 생성
- 3.2.1 네트워크 파일 시스템
- 3.3 데이터베이스 서버 시작
- 3.3.1 서버 시작 실패
- 3.3.2 클라이언트 연결 문제
- 3.4 커널 리소스 관리
- 3.4.1 공유 메모리 및 세마포어
- 3.4.2 리소스 제한
- 3.4.3 리눅스 메모리 오버커밋
- 3.4.4 리눅스 huge pages
- 3.5 서버 셧다운
- 3.6 PostgreSQL 클러스터 업그레이드
- 3.6.1 pg_dumpall을 통한 데이터 업그레이드
- 3.6.2 pg_upgrade를 통한 데이터 업그레이드
- 3.6.3 복제를 통한 데이터 업그레이드
- 3.7 서버 스푸핑 방지
- 3.8 암호화 옵션
- 3.9 SSL을 사용한 TCP/IP 연결 보호
- 3.9.1 클라이언트 인증서 사용
- 3.9.2 SSL 서버 파일 사용
- 3.9.3 자체 서명된 인증서 생성
- 3.10 SSH 터널을 사용해 TCP/IP 연결 보호
- 3.11 윈도우에 이벤트 로그 등록
- 4장 서버 구성
- 4.1 매개변수 설정
- 4.1.1 매개변수 이름 및 값
- 4.1.2 구성 파일을 통한 매개변수 인터랙션
- 4.1.3 SQL을 통한 매개변수 인터랙션
- 4.1.4 셸을 통한 매개변수 인터랙션
- 4.1.5 구성 파일 내용 관리
- 4.2 파일 위치
- 4.3 연결 및 인증
- 4.3.1 연결 설정
- 4.3.2 보안 및 인증
- 4.4 리소스 소비
- 4.4.1 메모리
- 4.4.2 디스크
- 4.4.3 커널 리소스 사용량
- 4.4.4 비용 기반 Vacuum 지연
- 4.4.5 백그라운드 Writer
- 4.4.6 비동기 동작
- 4.5 Write Ahead Log
- 4.5.1 설정
- 4.5.2 Checkpoints
- 4.5.3 아카이빙
- 4.6 복제
- 4.6.1 전송 서버
- 4.6.2 마스터 서버
- 4.6.3 스탠바이 서버
- 4.7 쿼리 플랜
- 4.7.1 플래너 방법 구성
- 4.7.2 플래너 비용 상수
- 4.7.3 제네릭 쿼리 옵티마이저
- 4.7.4 기타 플래너 옵션
- 4.8 에러 리포팅 및 로깅
- 4.8.1 Where To 로그
- 4.8.2 When To 로그
- 4.8.3 What To 로그
- 4.8.4 CSV 형식 로그 출력 사용
- 4.9 실시간 통계
- 4.9.1 쿼리 및 인덱스 통계 콜렉터
- 4.9.2 통계 모니터링
- 4.10 자동 Vacuuming
- 4.11 클라이언트 연결 기본값
- 4.11.1 문(statement) 동작
- 4.11.2 로케일 및 형식 지정
- 4.11.3 공유 라이브러리 사전 로드
- 4.11.4 그 외 기본값
- 4.12 잠금 관리
- 4.13 버전 및 플랫폼 호환성
- 4.13.1 이전 PostgreSQL 버전
- 4.13.2 플랫폼 및 클라이언트 호환성
- 4.14 에러 처리
- 4.15 프리셋 옵션
- 4.16 커스텀 옵션
- 4.17 개발자 옵션
- 4.18 단축 옵션
- 5장 클라이언트 인증
- 5.1 pg_hba.conf 파일
- 5.2 사용자 이름 맵
- 5.3 인증 방법
- 5.3.1 트러스트 인증
- 5.3.2 패스워드 인증
- 5.3.3 GSSAPI 인증
- 5.3.4 SSPI 인증
- 5.3.5 Ident 인증
- 5.3.6 피어 인증
- 5.3.7 LDAP 인증
- 5.3.8 RADIUS 인증
- 5.3.9 인증서 인증
- 5.3.10 PAM 인증
- 5.4 인증 문제
- 6장 데이터베이스 role
- 6.1 데이터베이스 role
- 6.2 role 속성
- 6.3 role 멤버십
- 6.4 함수 및 트리거 보안
- 7장 데이터베이스 관리
- 7.1 개요
- 7.2 데이터베이스 생성
- 7.3 템플릿 데이터베이스
- 7.4 데이터베이스 환경 설정
- 7.5 데이터베이스 소멸
- 7.6 테이블스페이스
- 8장 로컬라이제이션
- 8.1 로케일 지원
- 8.1.1 개요
- 8.1.2. 동작
- 8.1.3. 문제
- 8.2 콜레이션 지원
- 8.2.1. 개념
- 8.2.2 콜레이션 관리
- 8.3 문자 집합 지원
- 8.3.1 지원되는 문자 집합
- 8.3.2 문자 집합 설정
- 8.3.3 서버와 클라이언트 간 자동 문자 집합 변환
- 8.3.4 추가 자료
- 9장 정기적인 데이터베이스 유지관리 작업
- 9.1 정기적인 Vacuuming
- 9.1.1 Vacuuming 기초
- 9.1.2 디스크 공간 복구
- 9.1.3 실행 계획 통계 업데이트
- 9.1.4 가시성 맵 업데이트
- 9.1.5 트랜잭션 ID 랩어라운드 실패 방지
- 9.1.5.1 Multixact 및 랩어라운드
- 9.1.6 Autovacuum 데몬
- 9.2 일상적인 리인덱싱
- 9.3 로그 파일 유지관리
- 10장 백업 및 복원
- 10.1 SQL 덤프
- 10.1.1 덤프 복원
- 10.1.2 pg_dumpall 사용
- 10.1.3 거대 데이터베이스 처리
- 10.2 파일 시스템 레벨 백업
- 10.3 연속 아카이빙 및 PITR
- 10.3.1 WAL 아카이빙 셋업
- 10.3.2 베이스 백업
- 10.3.3 저수준 API를 사용한 베이스 백업
- 10.3.4 연속 아카이브 백업을 사용한 복구
- 10.3.5 타임라인
- 10.3.6 팁 및 예제
- 10.3.6.1 독립 실행형 핫 백업
- 10.3.6.2 압축된 아카이브 로그
- 10.3.6.3 archive_command 스크립트
- 10.3.7 통고
- 11장 고가용성, 로드 밸런싱 및 복제
- 11.1 각종 솔루션 비교
- 11.2 로그 전달 스탠바이 서버
- 11.2.1 플래닝
- 11.2.2 스탠바이 서버 운용
- 11.2.3 스탠바이 서버를 위한 마스터 서버 준비
- 11.2.4 스탠바이 서버 셋업
- 11.2.5 스트리밍 복제
- 11.2.5.1 인증
- 11.2.5.2 모니터링
- 11.2.6 복제 슬롯
- 11.2.6.1 복제 슬롯 쿼리 및 조작
- 11.2.6.2 구성 예제
- 11.2.7 케스케이딩 복제
- 11.2.8 동기 복제
- 11.2.8.1 기초 구성
- 11.2.8.2 성능에 대한 플래닝
- 11.2.8.3 고가용성에 대한 플래닝
- 11.3 페일오버
- 11.4 로그 전달의 대안
- 11.4.1 구현
- 11.4.2 레코드 기반 로그 전달
- 11.5 핫 스탠바이
- 11.5.1 사용자 개요
- 11.5.2 쿼리 충돌 처리
- 11.5.3 관리자 개요
- 11.5.4.핫 스탠바이 매개변수 참조
- 11.5.5 통고
- 12장 복구 구성
- 12.1 아카이브 복구 설정
- 12.2 복구 타깃 설정
- 12.3 스탠바이 서버 설정
- 13장 데이터베이스 활동 모니터링
- 13.1 표준 유닉스 툴
- 13.2 통계 수집기
- 13.2.1 통계 수집 구성
- 13.2.2 수집된 통계 보기
- 13.2.3 통계 함수
- 13.3 잠금 보기
- 13.4 동적 트레이싱
- 13.4.1 동적 트레이싱의 컴파일
- 13.4.2 내장 프로브
- 13.4.3 프로브 사용
- 13.4.4 새 DTrace 정의
- 14장 디스크 사용량 모니터링
- 14.1 디스크 사용량 결정
- 14.2 디스크 꽉 참 실패
- 15장 안정성 및 Write-Ahead Log
- 15.1 안정성
- 15.2 WAL
- 15.3 비동기 커밋
- 15.4 WAL 환경 설정
- 15.5 WAL 인터널
- 16장 회귀 테스트
- 16.1 테스트 실행
- 16.1.1 임시 설치로 테스트 실행
- 16.1.2 기존 설치로 테스트 실행
- 16.1.3 추가 테스트 Suites
- 16.1.4 로케일 및 ENCODING
- 16.1.5 추가 테스트
- 16.1.6 핫 스탠바이 테스트
- 16.2 테스트 평가
- 16.2.1 에러 메시지 차이
- 16.2.2 로케일 차이
- 16.2.3 날짜 및 시간 차이
- 16.2.4 Floating-Point 차이
- 16.2.5 행 순서 차이
- 16.2.6 스택 깊이 부족
- 16.2.7 ”random” 테스트
- 16.2.8 구성 매개변수
- 16.3 변종 비교 파일
- 16.4 TAP 테스트
- 16.5 테스트 커버리지 검사