PostgreSQL:啟動與停止

天翼雲開發者社群發表於2023-03-02

本文分享自天翼雲開發者社群 @《PostgreSQL:啟動與停止》,作者: 周*****平

連結:

https://www.ctyun.cn/developer/article/358337908486292?track=|cp:cz_bk|tgdy:wenzhang|ttjh:bokeshequ|key:bw298|pf:PC

 

啟動和停止 PostgreSQL 資料庫伺服器,通常使用pg_ctl。通常在我們的生產環境中,如果資料庫主機發生意外停機或者由於計劃內的硬體配置等操作停止了主機後,PostgreSQL 服務也將會停止,需要手動重啟。因此,在生產環境中,採用編譯安裝 PostgreSQL 資料庫後,建議配置系統 postgresql.service 服務,透過 systemctl 系統命令設定開機自動啟動。

 

使用 systemctl 命令

配置 systemctl 服務

配置該服務之後, Redhat Linux 就可以使用 systemctl 系統控制命令來啟動 PostgreSQL 資料庫了。

 

1. 使用 root 使用者切換到 /usr/lib/systemd/system 目錄,編輯 postgresql-12.service 檔案,該檔案預設不存在,需要手動編輯,如下:

 

vi   postgresql-12.service

 

[Unit]

Description=PostgreSQL database server

After=network.target

[Service]

Type=forking

User=postgres

Group=postgres

Environment=PGPORT=5432

Environment=PGDATA=/data/pg_data/

OOMScoreAdjust=-1000

ExecStart=/opt/pgsql/bin/pg_ctl   start -D ${PGDATA} -s -o  "-p ${PGPORT}"   -w -t 300

ExecStop=/opt/pgsql/bin/pg_ctl   stop -D ${PGDATA} -s -m fast

ExecReload=/opt/pgsql/bin/pg_ctl   reload -D ${PGDATA} -s

TimeoutSec=300

[Install]

WantedBy=multi-user.target

 

2. 然後之下下列命令啟用服務控制守護

[root@node1 pg_data] # systemctl daemon-reload

3. 使用 systemctl系統服務控制命令啟動 postgresql

[root@node1 pg_data] # systemctl start postgresql-12.service

4. 配置開機啟動

[root@node1 pg_data] # systemctl enable postgresql-12.service

 

簡介 systemctl 命令

1. 使用 systemctl 命令停止資料庫
[sdedu@root:/root]#systemctl stop postgresql-12.service

2. 使用 sytsemctl 命令啟動資料庫
[sdedu@root:/root]#systemctl start postgresql-12.service

3. 使用 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部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2711965/,如需轉載,請註明出處,否則將追究法律責任。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014251/viewspace-2937764/,如需轉載,請註明出處,否則將追究法律責任。

相關文章