Vacuum이란? Vacuum은 PostgreSQL의 MVCC 구현 방법이 Oracle이나 MySQL 등 다른 DBMS와 다르고 그 차이로 인해 발생하는 문제점을 해결하기 위한 PostgreSQL만의 특별한 동작인데요. Vacuum을 DB단에서 자동으로 수행하는 동작을 AutoVacuum이라고 하며 Vacuum & AutoVacuum(이하 Vacuum으로 통일)을 통해 아래 4가지 작업을 수행합니다. - 임계치 이상으로 발생한 Dead Tuple을 정리하여 FSM (Free Space Map) 으로 반환 - Transaction ID Wraparound 방지 - 통계정보 갱신 - visibility map을 갱신하여 index scan 성능 향상 위 4개의 동작 모두 중요하지만 그 중 특히 중요한 것은 ..
PostGIS이란, 객체 관계형 데이터베이스 시스템인 PostgreSQL의 확장 프로그램으로, 데이터베이스에 GIS(지리정보 시스템) 객체를 저장할 수 있게 해 줍니다. PostGIS는 GiST 기반 R-Tree 공간 인덱스를 지원하며, GIS 객체의 분석 및 공간 처리를 위한 기능을 포함하고 있습니다. PostGIS를 사용하면 지리 정보 데이터를 다양하게 다룰 수 있습니다. 주요기능 : 공간 데이터 관리, 공간 데이터 연산, 분석, 공간 인덱스 지원 등 공간 인덱스란 특정의 좌표를 찍어 지도 내에서 무언가 사용자가 원하는 데이터를 검색하기 위해서 사용한다고 보면 이해하기 쉽습니다. 사용 예시 : 카카오 택시같이 지도내에 있는 택시를 검색해서 호출한다거나, 네이버 지도에서 식당이나 카페를 검색하는 것과 ..
▶PG_DUMP 유틸리티 장점 : 특정 데이터베이스를 선택하여 백업 및 복구 할 수 있음, 테이블의 읽기 엑세스 권한 필요 ※ 데이터베이스 전체를 백업하는 경우 슈퍼유저(postgre)로 해야합니다. Dump는 SQL, File 형태로 백업 받을 수 있으며, PG_RESTORE 유틸리티를 이용하여 복원 가능. ▶ test data insert (kim사용자로 test 데이터베이스) postgres@jh-post002:/home/postgres# psql -h 192.168.1.11 -U kim -d test; test=> CREATE TABLE t AS SELECT gs as idx, '테스트 문자열' || gs AS test_string, md5(random()::text) AS random_strin..
▶ 데이터 입력 postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | ko_KR.UTF-8 | ko_KR.UTF-8 | repmgr | repmgr | UTF8 | ko_KR.UTF-8 | ko_KR.UTF-8 | template0 | postgres | UTF8 | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres + | | | | | postgres=CTc/post..
wal 아카이빙 장점 : 1. 백업 크기는 백업 빈도에 따라 선형적으로 증가하지 않음(각 WAL 파일이 정확히 16MB이지만 대부분 비어 있 는 경우 몇 KB로 압축할 수 있음). Postgres 문서에서는 1분에 한 번 빈도를 제안하여 백업을 훨씬 더 자주 수 행가능. 2. WAL 아카이빙은 특정 시점 복구 기능을 제공. 단점 : 1. WAL 아카이브에서 복구하는 것은 파일 시스템 백업에서 복구하는 것보다 느림. WAL 아카이브는 마지막 기 본 백업 이후로 가져와서 재생해야 하지만 파일 시스템 백업은 가장 최근 체크포인트에서 재생되는 즉시 실 행 할 준비됨(기본적으로 체크포인트는 최소 5분마다 수행되지만 발생할 수 있음. 트래픽이 많은 데이터베이 스에서 더 자주함) 2. WAL 파일은 제한된 간격으로만..
part 1에 이어 proxy구성까지 해보도록 하겠습니다. 사전 구성 part1 URL : https://jhdatabase.tistory.com/11 [PostgreSQL - repmgr 구성 & Failover test] part1 안녕하세요~오늘은 postgresql의 db서버들을 고가용성 구성을 해볼까 합니다. DB server 3대와 witness 서버를 repmgr로 이중화를 시킨뒤, 윗단에 proxy server를 두어 connection pool과 로드밸런싱 기능으로 구.. jhdatabase.tistory.com 아키텍처 proxy 서버에는 PGPOOL과 PGBOUNCER를 사용할 예정입니다. 각 용도는 간단하게 아래와 같이 사용할 예정입니다. pgpool -> 부하분산용 pgbounce..
이번엔엔 postgresql의 db서버들을 고가용성 구성을 해볼까 합니다. DB server 3대와 witness 서버를 repmgr로 이중화를 시킨뒤, 윗단에 proxy server를 두어 connection pool과 로드밸런싱 기능으로 구성할 생각입니다. 이번 글에선 repmgr을 이용하여 DB서버를 이중화 하려고 합니다. 전체적인 구성은 아래 사진과 같습니다. 테스트 환경 IP Version Primary 172.40.40.64 PostgreSQL 12.3 Replica1 172.40.40.65 PostgreSQL 12.3 Replica2 172.40.40.66 PostgreSQL 12.3 witness 172.40.40.67 사전 준비 ■ 편의를 위해 Alias 추가 (모든 노드) [postgr..
Yum 이용 설치 [root@localhost ~]# sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm [root@localhost ~]# sudo yum install -y postgresql12-server sudo /usr/pgsql-12/bin/postgresql-12-setup initdb [root@localhost ~]# sudo systemctl enable postgresql-12 [root@localhost ~]# sudo systemctl start postgresql-12 Compile 이용 설치 ■ 다음의 3개 패키..