啟動和停止 PostgreSQL 數據庫服務器,通常使用pg_ctl。通常在我們的生產環境中,如果數據庫主機發生意外停機或者由于計劃內的硬件配置等操作停止了主機后,PostgreSQL 服務也將會停止,需要手動重啟。因此,在生產環境中,采用編譯安裝 PostgreSQL 數據庫后,建議配置系統 postgresql.service 服務,通過 systemctl 系統命令設置開機自動啟動。
使用 systemctl 命令
配置 systemctl 服務
配置該服務之后,Redhat Linux 就可以使用 systemctl 系統控制命令來啟動 PostgreSQL 數據庫了。
-
使用 root 用戶切換到 /usr/lib/systemd/system 目錄,編輯 postgresql-12.service 文件,該文件默認不存在,需要手動編輯,如下:
1vipostgresql-12.service12345678910111213141516[Unit]Description=PostgreSQL database serverAfter=network.target[Service]Type=forkingUser=postgresGroup=postgresEnvironment=PGPORT=5432Environment=PGDATA=/data/pg_data/OOMScoreAdjust=-1000ExecStart=/opt/pgsql/bin/pg_ctlstart -D ${PGDATA} -s -o"-p ${PGPORT}"-w -t 300ExecStop=/opt/pgsql/bin/pg_ctlstop -D ${PGDATA} -s -m fastExecReload=/opt/pgsql/bin/pg_ctlreload -D ${PGDATA} -sTimeoutSec=300[Install]WantedBy=multi-user.target -
然后之下下列命令啟用服務控制守護
1[root@node1 pg_data]# systemctl daemon-reload -
使用systemctl系統服務控制命令啟動 postgresql
1[root@node1 pg_data]# systemctl start postgresql-12.service -
配置開機啟動
1[root@node1 pg_data]# systemctl enable postgresql-12.service
簡介 systemctl 命令
-
使用systemctl 命令停止數據庫
[sdedu@root:/root]#systemctl stop postgresql-12.service -
使用sytsemctl 命令啟動數據庫
[sdedu@root:/root]#systemctl start postgresql-12.service -
使用systemctl 命令啟用數據庫服務開機后自動啟動
[sdedu@root:/root]#systemctl enable postgresql-12.service
使用 pg_ctl 命令
pg_ctl 命令為 PostgreSQL 服務端應用程序,可以用來初始化,啟動和停止及控制 PostgreSQL 服務器。
pg_ctl 語法格式:
-
初始化數據庫
pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS] -
啟動數據庫
pg_ctl start [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s] [-o OPTIONS] [-p PATH] [-c] -
關閉數據庫
pg_ctl stop [-D DATADIR] [-M SHUTDOWN-MODE] [-W] -
重啟數據庫
pg_ctl 重新啟動 [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s] [-o OPTIONS] [-c] -
重新加載 postgresql.conf 或 pg_hba.conf 文件
pg_ctl reload [-D DATADIR] [-s] -
查看服務器是否在指定的數據目錄運行
pg_ctl status [-D DATADIR] -
pg_ctl提升 [-D DATADIR] [-W] [-t SECS] [-s]
-
pg_ctl logrotate [-D DATADIR] [-s]
-
pg_ctl殺死信號名PID
命令選項
-
-D, --pgdata=DATADIR:指定數據庫相關文件的數據目錄,如果省略,默認讀取 PGDATA 環境變量
-
-s, --silent:靜默輸出,僅僅輸出錯誤消息
-
-t, --timeout=SECS:指定等待操作完成的最大延時秒數。默認為 PGCTLTIMEOUT 環境變量的值,如果省略,默認60秒
-
-V, --版本輸出版本信息,然后退出
-
-w, --wait:等待操作完成,如果操作在延遲時間內未完成,pg_ctl 退出狀態為非零
-
-W, --no-wait:不等待操作完成,不會提示數據庫停止是否完成
啟動 & 重啟選項
-
-c, --core-files 允許 postgres 生成核心文件
-
-l, --log=FILENAME:將服務器日志輸出追加到 filename中,也叫做服務器日志文件。如果該文件的 umask 設置為077,訪問日志文件默認情況下其它用戶不可讀。
-
-o, --options=OPTIONS 命令行選項,以傳遞給 postgres(PostgreSQL 服務器可執行文件)或 initdb
-
-p 路徑到POSTGRES通常不是必需的
啟動 & 停止選項
-
-m, --mode=MODE:指定關閉數據庫的模式,有三個選項,smart,fast,immediate,省略默認為fast
關庫選項
- smart:smart模式會等待活動的事務提交結束, 并等待客戶端主動斷開連接之后關閉數據庫
- fast:fast模式則會回滾所有活動的事務, 并強制斷開客戶端的連接之后關閉數據庫(默認)
- 立即:模式立即終止所有服務器進程,當下一次數據庫啟動時它會首先進入恢復狀態(不推薦使用)
來自 “ ITPUB博客 ” ,鏈接://blog.itpub.net/31490526/viewspace-2711965/,如需轉載,請注明出處,否則將追究法律責任。