반응형

/********************************************************************************************
-- Title : [9.2] pg_ctl을 이용한 Initiate, Startup, Shutdown, Reload & Restart
-- Reference : http://www.postgresql.org/docs/current/static/app-pg-ctl.html
-- Key word : 시작 종료 리로드 초기화 initiate, startup, shutdown, reload restart
********************************************************************************************/

-- Sample
    ㅇ pg_ctl init [db] [-s] [-D datadir] [-o initdb-options] 
    ㅇ pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-l filename] [-o options] [-p path] [-c]
    ㅇ pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-m s [mart] | f [ast] | i [mmediate] 
    ㅇ pg_ctl restart [-w] [-t seconds] [-s] [-D datadir] [-c]
                           [-m s [mart] | f [ast] | i [mmediate]] [-o options] 
    ㅇ pg_ctl reload [-s] [-D datadir] 
    ㅇ pg_ctl status [-D datadir] 
    ㅇ pg_ctl promote [-s] [-D datadir] 
    ㅇ pg_ctl kill signal_name process_id 
    ㅇ pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] 
                             [-S a [uto] | d [emand]] [-w] [-t seconds] [-s] [- o options] 
    ㅇ pg_ctl unregister [-N servicename] 

    postgres$ pg_ctl -D /home/postgres/pgsql/data -l logfile start
    postgres$ pg_ctl -l logfile -m fast stop
    postgres$ pg_ctl -D /home/postgres/pgsql/data -l logfile restart
    postgres$ pg_ctl -w restart
    postgres$ pg_ctl -D /home/postgres/pgsql/data -l logfile reload
    postgres$ pg_ctl status

-- -m {smart | fast | immediate}
    ㅇ shutdown mode 지정.
    ㅇ smart : default, 새로운 접속 거부, client의 모든 접속 끊길 때 까지 대기, 온라인 백업시 종료할 때
                   까지 대기, 스트리밍 복제는 종료.
    ㅇ fast : 모든 사용자 트랜잭션 rollback, 바로 끊김, 온라인 백업 종료.
    ㅇ immediate : fast와 유사. 'clean shutdown'이 아님(checkpoint를 처리하지 않음), 재시작시 복구
                          작업 수행.

-- -D datadir
    ㅇ 데이터베이스 파일의 파일 시스템 위치를 지정.
    ㅇ 생략할 경우 $PGDATA 환경 변수가 적용됨.

-- -l filename
    ㅇ 서버 로그 출력을 filename에 추가.
    ㅇ 파일이 존재하지 않으면 생성.
 
-- -w
    ㅇ 시작 혹은 정지 처리가 완료될 때까지 기다림.
    ㅇ 중지를 대기하고 있는 경우 pg_ctl은 서버가 pid 파일 삭제할 때까지 대기.
    ㅇ pg_ctl은 기동/정지가 성공했는지 여부에 따라 올바른 종료 코드 반환.

-- -W
    ㅇ 부팅 과정 혹은 정지 처리가 완료될 때가지 기다리지 않음.
    ㅇ start 및 restart 모드의 기본.

-- reload
    ㅇ restart의 경우 stop/start로 인해 접속이 안되거나 끊길 수 있음.
    ㅇ 설정파일(postgresql.conf, pg_hba.conf 등)만 재적용하는 것이 reload.
    ㅇ postmast에 행업(hang up) 시그널을 보내는 것과 동일.
        postgres$ kill -SIGUP 'cat /home/postgres/pgsql/data/postmaster.pid | head -1'   
        /*어떻게 동작하는지 모르겠다.*/

    ㅇ psql에서 쿼리로 설정 파일 다시 읽어오는 방법도 있음.
        postgres=# select pg_realod_conf();

    ㅇ 모든 설정 내용이 행업 시그널로 처리되는 것은 아니고 아래 쿼리의 대상만 가능.
        postgres=# select name, setting, unit, context, extra_desc from pg_settings
                        where context='sighup';

-- promote
    ㅇ 지정한 데이터디렉토리에서 실행중인 대기 서버에 복구를 완료 읽기 및 쓰기 작업을 시작하도록
        명령을 보냄.

-- kill, register, unregister
    ㅇ Microsoft Windows 모드에서 유용하게 사용.


반응형

+ Recent posts