Innovating today, leading tomorrow

OpenSQL_Technical Guide
[OpenSQL] pg_ctl

[OpenSQL] pg_ctl

pg_ctl 개요

pg_ctl 이란?

pg_ctl is a utility for initializing a PostgreSQL database cluster, starting, stopping, or restarting the PostgreSQL database server (postgres), or displaying the status of a running server.
– PostgreSQL 공식 문서 –

pg_ctl은 PostgreSQL 데이터베이스 클러스터를 초기화하고, 데이터베이스 서버를 시작, 중지 또는 재시작 또는 실행 중인 서버의 상태를 표시하는 유틸리티입니다. 서버를 수동으로 시작할 수 있지만, pg_ctl은 로그 출력 재연결 및 터미널과 프로세스 그룹에서 적절하게 분리하는 것과 같이 태스크를 캡슐화 합니다. 또한 여러 옵션이 포함된 종료 모드를 제공합니다.

pg_ctl 문법

pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]

pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s] [-o options] [-c]

pg_ctl reload [-D datadir] [-s]

pg_ctl status [-D datadir]

pg_ctl promote [-D datadir] [-W] [-t seconds] [-s]

pg_ctl logrotate [-D datadir] [-s]

pg_ctl kill signal_name process_id

pg_ctl 옵션

옵션설명
-c –core-files코어 파일에 대한 소프트 리소스 제한을 해제하여 서버 충돌이 가능한 플랫폼에서 코어 파일을 생성하도록 시도합니다.
-D datadir –pgdata=datadir데이터베이스 config 파일의 파일 시스템 위치를 지정합니다. 이 옵션을 생략하면 환경변수 PGDATA가 사용됩니다.
-l filename –log=filename서버 로그를 입력한 파일에 추가하고, 파일이 없으면 생성됩니다.
-m mode –mode=mode종료 모드를 지정합니다. 모드는 smart, fast, immediate 세가지의 첫 문자 중 하나로 지정할 수 있습니다. 생략하면 fast가 기본 값입니다.
-o options –options=optionspostgres 커맨드에 직접 전달할 옵션을 지정합니다.
-o initdb-options –options=initdb-optionsinitdb 명령에 직접 전달할 옵션을 지정합니다.
-p pathpostgres 실행 파일의 위치를 지정합니다.
-s –silent오류 메세지만 출력하고 정보 메시지는 출력하지 않습니다.
-t seconds –timeout=seconds작업이 완료될 때까지 기다릴 최대 시간(초)를 지정합니다.
-V –versionpg_ctl 버전을 인쇄하고 종료합니다.
-w –wait작업이 완료될 때까지 기다립니다. 이는 start, stop, restart, promote, register 모드에서 지원되며 기본값입니다.
-W –no-wait작업이 완료될 때까지 기다리지 마십시오. 이것은 -w 옵션의 반대입니다.
-? –helppg_ctl 커맨드 옵션에 대한 도움말을 표시하고 종료합니다.

pg_ctl 문법 ( for Windows )

pg_ctl register [-D datadir] [-N servicename] [-U username] [-P password] [-S a[uto] | d[emand] ] [-e source] [-W] [-t seconds] [-s] [-o options]

pg_ctl unregister [-N servicename]

pg_ctl 옵션 (for Windows)

옵션설명
-e sourceWindows 서비스로 실행될 때 로그에 기록하는데 사용할 pg_ctl 이벤트 소스 이름입니다.
-N servicename등록할 시스템 서비스의 이름입니다.
-P password서비스를 실행할 사용자의 암호입니다.
-S start-type시스템 서비스의 시작 유형입니다. start-type은 auto, demand 또는 이 둘 중 하나의 첫 글자일 수 있습니다. 이 옵션을 생략하면 auto이 기본 값입니다.
-U username서비스를 실행할 사용자 이름입니다.

pg_ctl 모드

init/initdb

pg_ctl init[db] [-D *datadir*] [-s] [-o *initdb-options*]

init또는 initdb 모드는 새로운 PostgreSQL 데이터베이스 클러스터를 생성합니다. 이 모드는 initdb 커맨드를 호출합니다. 자세한 내용은 initdb를 참조해주세요!

start

pg_ctl start [-D *datadir*] [-l *filename*] [-W] [-t *seconds*] [-s] [-o *options*] [-p *path*] [-c]

start 모드에서는 데이터베이스 서버를 백그라운드에서 시작합니다. 일반적으로 커맨드라인 인터페이스 또는 터미널에서 서버 프로세스를 시작하여 사용자가 데이터베이스에 연결하고 사용할 수 있도록 합니다.

stop

pg_ctl stop [-D *datadir*] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]

**stop**모드에서는 지정된 데이터 디렉토리에서 실행 중인 서버를 종료합니다. 옵션으로 세가지의 다른 종료 방법을 선택할 수 있습니다.

  • -m(stmart) : smart 모드는 새로운 연결을 허용하지 않고, 모든 기존의 클라이언트가 연결 해제될 때까지 기다립니다.
  • -f(fast) : fast 모드는 기본 모드로, 클라이언트가 연결을 끊을때까지 기다리는게 아닌 강제로 연결 해제된 다음 서버가 종료됩니다.
  • -i(immediate) : immediate 모드는 정상 종료 없이 즉시 모든 서버 프로세스를 중단합니다. 다음 서버 시작 중에 충돌 복구 주기가 발생합니다.

restart

pg_ctl restart [-D *datadir*] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s] [-o options] [-c]

**restart**모드는 stopstart를 효과적으로 실행합니다. 커맨드라인 옵션을 변경하거나 서버를 재시작하지 않고는 변경할 수 없는 config 파일 옵션을 변경할 수 있습니다.

reload

pg_ctl reload [-D *datadir*] [-s]

**reload**모드는 단순히 postgres 서버 프로세스에 SIGHUP 신호를 전송하여 config 파일 (postgresql.conf, pg_hba.conf 등)을 다시 읽게 합니다. 이렇게 하면 전체 서버 재시작이 필요 없는 config 파일의 변경 내용을 적용할 수 있습니다.

status

pg_ctl status [-D *datadir*]

**status**모드는 지정된 데이터 디렉토리에서 서버가 실행 중인지 여부를 확인합니다.

promote

pg_ctl promote [-D datadir] [-W] [-t seconds] [-s]

**promote**모드는 지정된 데이터 디렉토리에서 실행중인 standby 서버가 standy 모드를 종료하고 Read/Write 작업을 시작하도록 명령합니다.

logrotate

pg_ctl logrotate [-D *datadir*] [-s]

**logrotate**모드는 서버 로그 파일을 rotate시킵니다.

kill

pg_ctl kill signal_name process_id

**kill**모드는 지정된 프로세스로 signal을 보냅니다. 기본 제공 명령인 kill이 없는 Windows에서 주로 유용하게 사용됩니다. --help 를 사용하여 지원되는 signal 목록을 확인합니다.

register

pg_ctl register [-D *datadir*] [-N servicename] [-U username] [-P password] [-S a[uto] | d[emand] ] [-e source] [-W] [-t seconds] [-s] [-o options]

**register**모드는 Windows에서 시스템 서비스로 PostgreSQL 서버를 등록합니다. -S 옵션을 사용하면 서비스 시작 유형을 “자동”/”요구 시 서비스 시작” 중 하나로 선택할 수 있습니다.

unregister

pg_ctl unregister [-N *servicename*]

**unregister**모드는 Windows에서 시스템 서비스의 등록을 취소합니다.

pg_ctl 사용 예시

서버 시작

5433포트를 사용해 서버를 시작

[opensql@localhost:~]$ pg_ctl -o “-p 5433” start
waiting for server to start….2023-01-13 23:00:05.106 KST [108481] LOG: redirecting log output to logging collector process
2023-01-13 23:00:05.106 KST [108481] HINT: Future log output will appear in directory “/opensql/pg/14/log/pg_log”.
done
server started

서버 종료

서버가 종료되는 방식을 smart로 설정하여 종료

[opensql@localhost:~]$ pg_ctl stop -m smart -D /opensql/pg/14/data
waiting for server to shut down…. done
server stopped

서버 재시작

fsync를 비활성화하고 5433포트를 사용하여 서버 재시작

[opensql@localhost:~]$ pg_ctl -o “-F -p 5433” -D /opensql/pg/14/data restart
pg_ctl: PID file “/opensql/pg/14/data/postmaster.pid” does not exist
Is server running?
trying to start server anyway
waiting for server to start….2023-01-13 23:05:18.568 KST [110396] LOG: redirecting log output to logging collector process
2023-01-13 23:05:18.568 KST [110396] HINT: Future log output will appear in directory “/opensql/pg/14/log/pg_log”.
done
server started

서버 상태 표시

서버의 상태 출력

[opensql@localhost:~]$ pg_ctl status
pg_ctl: server is running (PID: 110396)
/usr/pgsql-14/bin/postgres “-F” “-p” “5433”

pg_ctl 환경변수

다음 환경변수들과 같이 pg_ctl을 사용할 수 있습니다.

환경변수설명
PGCTLTIMEOUT시작 또는 종료가 완료될 때까지 기다리는 시간(초)에 대한 기본 제한입니다. 설정하지 않으면 기본 값은 60초입니다.
PGDATA기본 데이터 디렉토리 위치입니다.
대부분의 다른 PostgreSQL의 유틸리티와 마찬가지로 libpq에서 지원하는 환경변수를 사용합니다. libpq에서 지원하는 환경변수에 대한 내용은 여기 를 참고해주세요!!

사용 방법

export PGHOME=/opensql/pg #opensql engine directory
export PGDATA=/opensql/pg/$PGVERSION/data #opensql database clsuter directory
export PGHOST=/var/run/opensql #opensql socket directory
export PGUSER=postgres #opensql Basic DB User Name
export PGPASSFILE=’/opensql/.pgpass’ #opensql pgpass file

대부분의 pg_ctl 모드에서는 데이터 디렉토리 위치를 알아야 합니다. 따라서 -D 옵션을 설정하지 않을 경우 PGDATA 환경변수를 반드시 설정해주어야 합니다. PGDATA 환경변수를 사용하면 다음과 같이 pg_ctl 커맨드를 사용할 수 있습니다.

[opensql@localhost:~]$ pg_ctl start
waiting for server to start….2023-01-13 14:22:23.975 KST [102101] LOG: redirecting log output to logging collector process
2023-01-13 14:22:23.975 KST [102101] HINT: Future log output will appear in directory “/opensql/pg/14/log/pg_log”.
done
server started

[opensql@localhost:~]$ pg_ctl stop
waiting for server to shut down…. done
server stopped

지금까지 ’PostgreSQL pg_ctl’에 관해 알아보았습니다

‘PostgreSQL pg_dump’을 바로 이어서 확인해보세요!

광고성 정보 수신

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다.
내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보
  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
 

개인정보 수집 및 이용

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다. 내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보

  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
  •