PostgreSQL 설치 (install)

  • PostgreSQL 9.6 버전을 기준으로 Centos 7.4에 설치합니다.
  • DB Engine 디렉토리 : /PG/PGDATABASE
  • DB DATA 디렉토리: /data


1. PostgreSQL 파일 다운로드

  • https://www.enterprisedb.com/download-postgresql-binaries 사이트에서 binary 파일 다운로드


2. 디렉토리 생성

mkdir -p /PG/PGDATABASE				# PostgreSQL Engine 영역
mkdir -p /data/PGDATABASE/data/pg  	# PostgreSQL Data 영역
mkdir -p /data/PGDATABASE/pg_xlog   # PostgreSQL xlog 영역 (10버전 이후는 wal 영역)
mkdir -p /data/PGDATABASE/arch      # PostgesSQL Archiving 영역
mkdir -p /data/PGDATABASE/TS01      # PostgreSQL Table Space 영역


3. Kernel Parameter 설정

RAM 16GB 기준
sysctl -w kernel.shmmax=17179869184   # 공유 메모리 세그먼트의 최대 크기(바이트 단위)를 정의
sysctl -w kernel.shmall=4194304    # 특정 시점에 시스템에서 사용 가능한 공유 메모리의 최대 크기 (페이지 단위)를 설정하는데 사용
sysctl -w vm.overcommit_memory=2   # Memory Overcommit 을 방지


4. OS User 생성 및 디렉토리 권한 설정

useradd pgadmin						# USER 추가
chown -R pgadmin /PG/PGDATABASE /data/PGDATABASE	
usermod -d /PG/PGDATABASE pgadmin

su - pgadmin
vi ~/.bash_profile

export PGHOME=/PG/PGDATABASE/pgsql
export PATH=$PGHOME/bin:$PATH
export PGDATA=/data/PGDATABASE/data/pg
export PGDATABASE=PGDATABASE
export PGUSER=pgsys
export PGPORT=5432
export PGLOCALEDIR=$PGHOME/share/locale

저장 후 source ~/.bash_profile


5. DATA 영역 DISK 할당

  • DATA 영역에 추가 디스크 할당을 하지 않을 시에는 SKIP
exit						# root 권한으로 돌아와서
vgcreate datavg /dev/sdb	# Volume Group 생성 (DATA 영역 디스크가 sdb로 붙어 있을 경우)
lvcreate -l 100%FREE -n data datavg	# Volume Group에 남은 영역 LV에 지정
mkfs.xfs /dev/datavg/data	# CentOS 7버전이므로 xfs로 FileSystem 설치
mount -t xfs /dev/datavg/data /data   # /data Path에 Mount
df -h						# data PATH에 MOUNT 되었는지 확인


6. PostgreSQL 설치

tar -zxvf postgresql-9.6.14-2-linux-x64-binaries.tar.gz -C /PG/PGDATABASE


7. Initdb 실행 (DB USER로 실행)

initdb --pgdata=/data/PGDATABASE/data/pg --xlogdir=/data/PGDATABASE/pg_xlog --encoding='UTF8' --locale='C' --username='pgsys'


8. PostgreSQL START (DB USER로 실행)

pg_ctl start


9. PostgreSQL 기본 Setting (DB USER로 실행)

psql -d postgres

# USER 생성
CREATE USER pgadmin WITH SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN PASSWORD 'password001!';

# Tablespace 생성
create tablespace TBS01 OWNER "pgadmin" location '/data/PGDATABASE/TS01';

exit로 bash로 나간 후
# Database 생성
createdb -p 5432 -D tbs01 PGDATABASE -O pgadmin