Scroll to navigation

POSTMASTER(1) PostgreSQL Server Applications POSTMASTER(1)

NAME

postmaster - PostgreSQL多使用者數據庫伺服器
 

SYNOPSIS

postmaster [ -A 0 | 1 ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ -D datadir ] [ -F ] [ -h hostname ] [ -i ] [ -k directory ] [ -l ] [ -N max-connections ] [ -o extra-options ] [ -p port ] [ -S ] [ --name=value ] [ -n | -s ]

DESCRIPTION 描述

postmaster 是 PostgreSQL 多使用者數據庫伺服器。 一個客戶端為了訪問一個數據庫,它(通過網路或本地)聯接到一個運行著的 postmaster。 然後該 postmaster 啟動一個獨立的伺服器進程("postgres") 以操作聯接。 postmaster 還控制伺服器進程之間的通訊。

預設時postmaster在前台啟動並且向標準錯誤系統輸出列印日誌信息。 在實際應用裏,postmaster應該作為背景進程啟動,也許該在啟動時。

一個postmaster總是管理來自同一個數據庫集群的數據。 一個數據庫集群是一套在同一個檔案系統位置存放數據的數據庫。 當 postmaster 啟動時,它需要知道數據庫集群檔案("數據區")的位置。 這個參數是通過傳遞 -D 命令行選項或者 PGDATA 環境變量實現的,沒有預設值。 一個系統上同時可以運行幾個 postmaster 進程, 只要他們使用不同的數據區和不同的端口號(見下文)。 一個數據區是用 initdb(1) 創建的。

OPTIONS 選項

postmaster 接受下列命令行參數。 關於這些選項的更詳細的討論請參考 Section 16.4 ``Run-time Configuration''。你也可以通過設置一個配置檔案來減少敲擊這些選項。
-A 0|1

打開運行時斷言檢查,是檢測編程錯誤的調試幫助。 只有在編譯時打開了它,你才能使用它。如果編譯時打開了,預設是打開。
-B nbuffers

為伺服器進程分配和管理的共享記憶體緩沖區數量。此值預設為 64 個緩沖區,每個緩沖區是 8k 字節。
-c name=value

設置一個命名的運行時參數。參考 Section 16.4 ``Run-time Configuration'' 獲取列表和描述。 大多數其他命令行選項實際上都是這樣的參數賦值的短形式。 -c 可以出現多次用以設置多個參數。
-d debug-level

設置調試級別。數值越高,寫到伺服器日誌的調試輸出越多。 數值范圍是 1 到 5。
-D datadir

聲明數據目錄的檔案系統路徑。參閱上文的討論。
-F

關閉 fsync 調用,提高性能,但是要冒系統崩潰時數據毀壞的風險。 這個選項對應於在 postgresql.conf 中設置 fsync=false。在使用之前閱讀詳細文件!
 
--fsync=true 有著這個選項的反面效果。
-h hostname

聲明 postmaster 偵聽著等待來自前端應用聯接的 TCP 主機名或地址。 它預設偵聽所有配置了的地址(包括 localhost)。
-i

這個選項打開 TCP/IP (網際域套接字)通訊。 沒有這個選項,只能進行本地 Unix 域套接字通訊。 這個選項等效於在 postgresql.conf 中設置 tcpip_socket=true。
 
--tcpip-socket=false 是這個選項的相反的作用。
-k directory
指定 postmaster 偵聽等待來自前端應用聯接的 Unix 域套接字的位置。 預設通常是 /tmp,但是可以在編譯的時候修改。
-l

這個選項打開用 SSL 進行的安全通訊。同樣還需要 -i 選項。要使用這個選項,編譯時你必須打開了 SSL 選項。
-N max-connections

設置postmaster允許啟動的伺服器伺服器的最大數目。預設配置時,該值為 32, 如果你的系統能支持更多進程,該值最大可以設置為你的系統所能支持的極限。 時修改(參閱 src/include/config.h)。 (請注意 -B 選項要求至少是兩倍 -N。參閱 Section 16.5 ``Managing Kernel Resources'' 獲取有關大客戶量的系統資源需求的信息。)
-o extra-options

在 extra-options 裏聲明的 postgres 選項都傳遞給所有由這個 postmaster 啟動的服務進程。 參閱 postgres(1) 獲取可能選項。 如果選項字串包含任何空白,整個字串必須引起來。
-p port
指定 postmaster 偵聽著等待客戶端應用連接的網際網路 TCP/IP 端口或一個本地 Unix 域套接字檔案擴展(描述符)。 預設的端口號是環境變量 PGPORT 的值。如果沒有設置 PGPORT 預設是 PostgreSQL 編譯時建立的值(通常是 5432)。 如果你聲明了一個非預設端口,那麼所有前端應用(包括 psql)都必須用命令行選項或者 PGPORT 聲明同一個端口。
-S

指明 postmaster 進程將以安靜模式啟動。也就是說, 它將與使用者的(控制)tty 脫離並且啟動其自身的進程組。 並且它把標準輸出和標準錯誤重定向到 /dev/null
 

使用這個開關會將日誌輸出都丟棄,可能不是你希望的, 因為這樣令錯誤查找非常困難。參閱下文獲取一個在背景啟動 postmaster 的更好的方法。
 
--silent-mode=false 的作用和這個選項的效果正好相反。
--name=value

設置一個命名的運行時參數;其縮寫形式是 -c

有兩個額外的命令行選項可以用於調試導致伺服器異常退出。 用於這種狀況的一般策略是通知所有其它伺服器必須退出, 然後重新初始化共享記憶體和信號燈。這是因為一個出錯的伺服器在退出前可能已經破壞了一些共享的狀態。 這些選項控制這種環境下的 postmaster 的性質,而且沒有哪個選項是為普通操作準備的。

這些特殊選項是:
-n
postmaster 將不會重新初始化共享數據結構。 一個有經驗的系統程式員這時就可以使用調試器檢查共享記憶體和信號燈狀態。
-s
postmaster 將通過發送信號SIGSTOP 停止所有其他伺服器進程,但不會導致它們退出。 這樣就允許系統程式員手動從所有伺服器進程收集傾倒的核心(core dumps)。

ENVIRONMENT 環境

PGCLIENTENCODING

客戶端使用的確預設字符編碼。(客戶端可以獨立地覆蓋這個。)這個值也可以在配置檔案裏設置。
PGDATA

預設數據目錄位置
PGDATESTYLE

運行時參數datestyle的預設值。(不再建議使用環境變量)
PGPORT

預設端口(最好在配置檔案中設置)
TZ

伺服器時區
其它

其它環境變量可以用於指定可選地數據存儲位置。參閱 Section 18.5 ``Managing Databases'' 獲取更多信息。

DIAGNOSTICS 診斷


一個提到了 semget 或者 shmget 的錯誤訊息可能意味著你需要配置你的核心, 提供足夠的共享記憶體和信號燈。更多討論,參閱 Section 16.5 ``Managing Kernel Resouces'' 。
 
Tip: 提示: 你也可以通過降低 shared_buffers 的參數以減少 PostgreSQL的共享記憶體的消耗, 或者降低max_connections的參數減少PostgreSQL的信號燈的消耗, 以此可以推遲重新配置核心。
 

如果是一個說另外一個 postmaster 正在運行的錯誤訊息,那你應該確保沒有其他的 postmaster 進程正在運行。判斷這個情況的最簡單的辦法是使用命令
 
$  ps ax | grep postmaster
 
 
$  ps -ef | grep postmaster
 
具體使用哪種取決於你的系統。如果確信沒有沖突的 postmaster 在運行,那麼你可以刪除消息裏提到的鎖檔案然後再次運行。

一個說無法綁定端口的錯誤訊息可能表明該端口已經背其它非 PostgreSQL 進程使用。 如果你終止postmaster後又馬上用同一個端口運行它,你也有可能得到這個錯誤訊息; 這時,你必須多等幾秒,等作業系統關閉了該端口後再試。 最後,如果你使用了一個作業系統認為是保留的端口,也可能導致這個錯誤訊息。 例如,我的 Unix 版本認為低於 1024 的端口號是"可信任的",因而只有 Unix 超級使用者可以使用它們。

NOTES 注意


如果有可能, 不要使用 SIGKILL殺死 postmaster。 這樣會阻止 postmaster在退出前釋放它持有的系統資源(例如共享記憶體和信號燈)。

要正常結束 postmaster,可以使用信號 SIGTERM,SIGINT, 或 SIGQUIT。 第一個信號將等待所有的客戶端退出後才退出。 第二個將強制斷開所有客戶端,而第三個將不停止立刻退出, 導致在重起時的恢復運行。

工具命令 pg_ctl(1) 可以用於安全而有效地啟停 postmaster。
選項 -- 在FreeBSD或者 OpenBSD上無法運行。 應該用 -c。這在受影響的系統裏是個臭蟲; 如果這個毛病沒有修補好,將來的 PostgreSQL 版本將提供一個繞開的辦法。

EXAMPLES 例子


用預設值在背景啟動postmaster,鍵入:
 
$  nohup postmaster >logfile 2>&1 </dev/null &
 

以指定的端口啟動 postmaster:
 
$  postmaster -p 1234
 
這條命令將在端口 1234 啟動 postmaster。 為了用psql與這個 postmaster 聯接, 你應該這麼運行 psql run it as
 
$  psql -p 1234
 
或者設置環境變量 PGPORT:
 
$  export PGPORT=1234
$  psql
 

命名的運行時參數可以用下列的風格之一設置:
 
$  postmaster -c sort_mem=1234
$  postmaster --sort-mem=1234
 
兩種形式都覆蓋那些現有的在 postgresql.conf 裏面的 sort_mem 的設置。 請注意在參數名裏的下劃線在命令行上可以寫成下劃線,也可以寫成劃線。
 
Tip: 提示: 除了用於短期的實驗以外,更好的習慣是編輯放在 postgresql.conf 裏面的設置, 而不是倚賴命令行開關設置參數。
 

SEE ALSO 參見

initdb(1), pg_ctl(1)

譯者

Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
2003-11-02 Application