PostgreSQL 설정 및 운영에 대한 내용
- PostgreSQL 운영계정
PostgreSQL 도 다른 데몬과 같이 별도의 local user 로 실행하는것을 권장 합니다.
nobody 과같은 공용 계정으로 데몬을 실행시키는것은 권장하지 않습니다.
데몬 운영에 대한 독립된 계정이 있어야 합니다.
- Database Cluster 만들기
PostgreSQL 을 올리기전 Database 저장소 영역을 초기화 해줘야 합니다. 이 작업을 Database Cluster 라고 합니다. (ANSI SQL 에서는 카탈로그 클러스터라고 지칭)
database cluster 는 실행중인 database 서버의 단일 인스턴스에 관리되는 database 컬렉션 입니다.
초기화를 하게되면 Postgres 라는 database 가 생성되는데 기본 database 입니다.
파일 시스템 관점으로 보게되면 Database cluster 는 모든 데이터가 저장되는 단일 디렉토리 혹은 데이터 영역이라고 할 수 있습니다.
$ initdb -D /usr/local/pgsql/data 명령을 사용하면 된다. postgres 계정에서 실행해야한다.
$ pg_ctl -D /usr/local/pgsql/data initdb 명령으로도 실행이 가능하다.
보통 아래와 같은 스탭으로 진행이 됩니다.
root# mkdir /usr/local/pgsql
root# chown postgres /usr/local/pgsql
root# su postgres
postgres$ initdb -D /usr/local/pgsql/data
해당 디렉토리에 파일이 존제한다면 이미 초기화 작업을 한것으로 판단하고 중지하게 됩니다.
로컬 디스크중 root 볼륨에는 작업을 권장하지 않으며, 데이터 디바이스를 따로 운영하는것을 권장합니다.
NFS 를 데이터 디렉토리로 사용가능합니다.
SAN 과같은 스토리지 영역도 가능하지만 데이터 일관성에 대해서는 스토리지 업체에 문의를 하는것이 좋습니다.
- Database Server 의 구동
$ postgres -D /usr/local/pgsql/data 의 명령어로 구동이 가능합니다.. 서버가 fg 에서 동작합니다. postgres 계정에서 구동을 해야합니다.
$ postgres -D /usr/local/pgsql/data >logfile 2>&1 & 이런형식으로 백그라운드에서 구동하는것을 권장합니다.
pg_ctl start -l logfile 와 같이 명령어를 통해서도 구동이 가능합니다.
보통 OS가 구동되면 서버가 시작되는것이 일반적이다. 자동시작 스크립트는 운영체제마다 다르며, PostgreSQL 에서 배포되는 몇가지 스크립트는 contrib/start-scripts 에 존제한다.
시스템이 다르면 부팅시 데몬을 시작하기 위한 규칙도 달라진다. 다수의시스템이 /etc/rc.local 혹은 /etc/rc.d/rc.local 에 파일이 있으며, 그 외에 init.d 혹은 rc.d 디렉토리를 사용하는 경우도 있다.
서버가 root 사용자가 아닌 postgres 사용자로 구동이 되어야하기에 su postgres -c 등의 명령어를 사용해야 한다.
su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' 는 예시이다.
운영체제별 특수한 몇가지 예시입니다.
FreeBSD
ㄴ contrib/start-scripts/freebsd 확인해아합니다.
OpenBSD
ㄴ아래의 내용을 /etc/rc.local 에 추가 해야합니다.
if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then
su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/PostgreSQL/log -D /usr/local/pgsql/data'
echo -n ' PostgreSQL'
fi
Linux
ㄴ /usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data 내용을 /etc/rc.d/rc.local 이나 /etc/rc.local 에 추가 하거나 contrib/start-scripts/linux 을 확인해야 합니다.
ㄴ systemd 를 사용하는경우는 아래의 내용을 서비스 설정 파일로 만들어서 사용해야합니다. (예, /etc/systemd/system/postgresql.service)
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
'Database > PostgreSQL' 카테고리의 다른 글
7. PostgreSQL Server Shutdown (0) | 2017.11.06 |
---|---|
6. PostgreSQL 커널 리소스 관리 (0) | 2017.11.03 |
4. PostgreSQL 설치 시 요구사항 (0) | 2017.10.31 |
3. PostgreSQL 설치하기 (0) | 2017.10.27 |
2. PostgreSQL 의 역사 (0) | 2017.10.27 |