PostgreSQL DBA를 위한 Admin 이야기

PostgreSQL DBA를 위한 Admin 이야기

$29.83
Description
- 어떤 내용을 다뤘나요?
이 책은 PostgreSQL DBA가 실무에서 수행하는 다양한 업무를 중심으로 구성되어 있습니다. 설치 및 환경 구축부터 오브젝트 관리, 아키텍처 이해, 주요 파라미터 설정, 물리 복제와 논리 복제, 백업 및 복구, 모니터링, 그리고 Vacuum까지, PostgreSQL 운영에 필요한 전반적인 내용을 폭넓게 다루고 있습니다.

- 책에서 다루지 않는 내용은?
이 책은 성능 튜닝이나 쿼리 튜닝과 같은 최적화 관련 주제를 다루지 않습니다. 해당 내용은 필자가 실제 수행한 PostgreSQL 튜닝 프로젝트 경험을 바탕으로, 별도의 책으로 기획하고 있습니다.

- 누가 읽으면 좋은가요?
PostgreSQL을 1~2년 정도 경험해 본 분들이나, 타 DBMS에는 익숙하지만 PostgreSQL을 새롭게 시작하는 단계에 있는 분들께 적합한 책입니다.

- 읽으면 안 되는 분들도 있나요?
이 책은 PostgreSQL 입문자나 실무 경험이 적은 DBA를 대상으로 하고 있습니다. 따라서 PostgreSQL에 이미 깊은 전문성을 갖춘 분들께는 다소 쉬운 내용일 수 있으며, 그런 분들께는 이 책을 권하지 않습니다. 난이도는 초급에서 중급 수준으로, 실무에 바로 적용할 수 있는 기초와 응용 중심의 내용을 담고 있습니다.

- 책을 쓰면서 가장 신경 쓴 부분은?
책을 집필하면서 가장 신경 쓴 부분은 현장의 경험을 바탕으로, DBA 업무에 실질적인 도움이 될 수 있는 실용적인 내용을 담는 것이었습니다.
또한 수차례에 걸친 윤문을 통해, 필자가 전달하고자 하는 내용을 독자들이 보다 쉽게 이해할 수 있도록 표현을 다듬고 정제했습니다.
특히 주요 개념과 동작 원리는 40여 개의 그림을 활용해 시각적으로 설명함으로써, 복잡한 내용을 보다 직관적으로 이해할 수 있도록 구성했습니다.

- 책 읽는 방법
이 책은 1장부터 순서대로 읽는 것을 권장합니다. 앞에서 설명한 내용을 이해해야만 다음 내용을 효과적으로 습득할 수 있습니다.
책에 포함된 실습 예제들은 가능하면 직접 타이핑해 보시길 바랍니다. 스스로 타이핑하며 오류를 겪고 시행착오를 해결해 나가는 과정에서 실력이 자연스럽게 쌓이게 됩니다.
다만, 7장 '모니터링'에서 제공하는 주요 스크립트들은 아래 GitHub 링크를 통해 다운로드할 수 있습니다.
https://github.com/SiyeonAcademy/postgresql/blob/main/postgresql_script.zip
저자

김시연,최두원

27년이상데이터베이스분야에몸담아온성능튜닝전문가이다.20년넘게오라클및엑사데이터기반의성능진단과튜닝에집중해왔으며,최근5년동안은주로PostgreSQL과EDB환경에서성능컨설팅과DBA업무를수행해왔다.연세대학교공과대학원에서컴퓨터공학을공부했으며,이전직장인(주)엑셈에서는약15년간삼성전자를포함한다양한고객사를대상으로오라클성능컨설팅을수행했으며컨설팅본부장을역임했다.
최근5년간의주요프로젝트로는신한투자증권메타프로젝트를비롯해교보문고차세대,KT지역화폐,신한은행‘땡겨요’배달앱등이있으며,이들프로젝트에서PostgreSQL및EDB기반의배치/온라인시스템의성능개선과DBA업무를수행했다.
저서로는〈PostgreSQL9.6성능이야기〉와그영문판〈PostgreSQL9.6PerformanceStory〉(Amazon출간)및〈TransactionInternalsin10gR2〉(2008)가있으며,번역서로는〈Oracle코어〉(2012),〈OWI를활용한오라클진단&튜닝〉(2005)등이있다.

목차

1장. 환경구축

1.1설치
____PostgreSQL엔진설치
____데이터베이스클러스터생성
1.2인스턴스시작및정지
____pg_ctl명령어를이용한인스턴스제어방법
____DB서버재시작시에인스턴스자동시작방법
1.3접속하기
____로컬접속
____pg_hba.conf파일을이용한접속관리
____원격접속을위한설정
____유저패스워드암호화방식
1.4클라이언트툴
____psql
1.5데이터베이스환경구축
____유저생성
____롤생성
____데이터베이스생성
____스키마생성
____권한관리
____슈퍼유저권한,CREATE롤과시스템롤
____익스텐션설치


2장. 오브젝트

2.1테이블
____테이블생성
____테이블복사
____테이블재구성
____테이블관리명령어
2.2인덱스
____인덱스생성
____CIC(CreateIndexConcurrently)옵션
____인덱스리빌드
____인덱스관리명령어
2.3파티션
____파티션개요
____RANGE파티션
____LIST파티션
____HASH파티션
____파티션인덱스
____인덱스ONLY옵션
____파티션관리명령어
2.4뷰(View)
____뷰특징
2.5시퀀스
____시퀀스특징
____시퀀스관리명령어
2.6함수
____함수실행권한


3장. 아키텍처

3.1인스턴스
____공유메모리
____프로세스
____데이터베이스클러스터주요디렉토리와파일들
3.2테이블스페이스
____pg_default테이블스페이스
____pg_global테이블스페이스
____사용자테이블스페이스생성
____TEMP테이블스페이스
3.3테이블
____테이블(Heap테이블)
____Unlogged테이블
____Temp테이블
____TOAST(TheOversized-AttributeStorageTechnique)
3.4(운영Tip)Template데이터베이스기능활용방안


4장.파라미터설정가이드

4.1로그관련파라미터
____logging_collector
____log_directory
____log_filename
____log_line_prefix
____log_lock_waits
____log_rotation_size
____log_statement

4.2접속관련파라미터
____max_connections
____superuser_reserved_connections
____listen_addresses
____port
4.3메모리관련파라미터
____shared_buffers
____wal_buffers
____work_mem
____temp_buffers
____hash_mem_multiplier
____maintenance_work_mem
4.4체크포인트관련파라미터
____checkpoint_timeout
____max_wal_size
4.5WAL(WriteAheadLog)관련파라미터
____wal_level
____wal_keep_size
____min_wal_size
____wal_log_hints
____checkpoint_completion_target
4.6Autovacuum관련파라미터
____autovacuum
____autovacuum_max_workers
____log_autovacuum_min_duration
4.7병렬처리관련파라미터
____max_worker_processes
____max_parallel_workers
____max_parallel_workers_per_gather
____max_parallel_maintenance_workers
4.8세션관리파라미터
____idle_in_transaction_session_timeout
4.9압축관련파라미터
____wal_compression
____default_toast_compression
4.10모니터링관련파라미터
____log_min_duration_statement
____shared_preload_libraries
____pg_stat_statements.max
____pg_stat_statements.track
____track_activity_query_size
____compute_query_id
____auto_explain.log_min_duration
____auto_explain.log_analyze
____auto_explain.log_buffers
4.11옵티마이저관련파라미터
____effective_cache_size
____random_page_cost
____jit
4.12아카이브설정관련파라미터
____archive_mode
____archive_command
4.13파라미터설정레벨및적용순서
____파라미터적용순서
____pg_settings뷰살펴보기


5장. 복제

5.1물리복제
____물리복제구성절차
____물리복제아키텍처
____동기화모드유형
____동기모드복제구성절차
____동기화레벨
____Cascade복제구성절차
5.2논리복제
____논리복제구성절차
____논리복제아키텍처와동작순서
____Publication생성옵션및설정변경
____Subscription생성옵션및설정변경
____양방향논리복제
5.3논리/물리복제를활용한전일자배치환경구성
5.4복제슬롯
____미사용슬롯의문제점
____WAL디스크볼륨공간부족으로인스턴스비정상종료시의조치방법
____max_slot_wal_keep_size파라미터를이용한장애방지방안
5.5LSN과WAL파일명


6장. 백업과복구

6.1논리백업과복구
____pg_dumpall을이용한백업
____pg_dump를이용한백업
____psql과pg_restore를이용한복원
____pg_restore를이용한복구
____COPY
6.2물리백업과복구
____백업및복구개요
____pgBackRest설치및환경파일설정
____pgBackRest를이용한백업
____pg_basebackup을이용한전체백업
____pg_basebackup을이용한증분백업
____pgBackRest를이용한완전복구
____pgBackRest를이용한완전복구(Delta옵션)
____pg_basebackup을이용한완전복구(전체백업)
____pg_basebackup을이용한완전복구(증분백업)
____pgBackRest를이용한시점복구(별도서버)
____pgBackRest를이용한시점복구(동일서버)
____pg_basebackup을이용한시점복구(별도서버)
____불필요한아카이브파일정리방법


7장. 모니터링

7.1성능모니터링개요
7.2데이터베이스모니터링
____pg_stat_database뷰를이용한데이터베이스성능모니터링
7.3세션모니터링
____pg_stat_activity뷰를이용한세션모니터링
7.4SQL모니터링
____1회수행시응답시간이느린쿼리모니터링
____런타임실행계획확인:auto_explain활용
____반복수행으로과부하를주는쿼리모니터링
7.5IO모니터링
____버퍼액세스전략과링버퍼
____pg_stat_io뷰를이용한시스템레벨의I/O성능분석
____pg_stat_all_tables와pg_statio_all_tables뷰를이용한테이블IO분석
____pg_stat_wal뷰를이용한WALI/O모니터링
7.6복제모니터링
____pg_stat_replication뷰를이용한복제지연분석
7.7작업진행상황모니터링
____인덱스생성진행상황모니터링
____Vacuum진행상황모니터링
____VacuumFull진행상황모니터링
____COPY진행상황모니터링


8장. 트랜잭션과대기이벤트

8.1트랜잭션과락(Lock)
____로우레벨(Row-Level)락
____테이블레벨락
____데드락(Deadlocks)
____멀티트랜잭션(Multi-Transaction)
____pg_locks뷰
____VirtualXID
____fastpath
8.2대기이벤트
____대기이벤트유형
____대기이벤트모니터링방법
____DataFileRead대기이벤트
____WALInsert대기이벤트
____WALWrite&WalSync대기이벤트
____BufferMapping대기이벤트
____transactionid대기이벤트
____tuple대기이벤트
____virtualxid대기이벤트
____relation대기이벤트


9장. Vacuum

9.1MVCC모델과PostgreSQLMVCC의특징
____MVCC의이해
____PostgreSQLMVCC의특징
____32비트XID문제해결을위한2가지기법
____정리
9.2Vacuum기본
____Vacuum수행방법과옵션