| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
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]
postmaster 是 PostgreSQL 多用戶資料庫伺服器。 一個客戶端為了訪問一個資料庫,它(透過網絡或本地)連線到一個執行著的 postmaster。 然後該 postmaster 啟動一個獨立的伺服器進程("postgres") 以操作連線。postmaster 還控制伺服器進程之間的通訊。
預設時postmaster在前台啟動並且向標準錯誤系統輸出打印日誌訊息。 在實際應用裡,postmaster應該作為後台進程啟動,也許該在啟動時。
一個postmaster總是管理來自同一個資料庫集群的資料。 一個資料庫集群是一套在同一個文件系統位置存放資料的資料庫("資料區")。 一個系統上同時可以執行幾個postmaster進程, 只要他們使用不同的資料區和不同的連接埠號(見下文)。 一個資料區是用 initdb 建立的。
postmaster 啟動的時候,它需要知道資料庫區的位置。 該位置透過 -D 選項或者 PGDATA 環境變量聲明的; 沒有預設值。通常,-D 或者 PGDATA 指向一個 initdb 建立的目錄。 其它可能的佈局在 Section 16.4.1 裡討論。
postmaster 接受下列命令行參數。 關於這些選項的更詳細的討論請參考 Section 16.4。 您也可以透過設置一個配置文件來減少敲擊這些選項。
打開執行時斷言檢查,是檢測編程錯誤的調試幫助。 只有在編譯 PostgreSQL 時打開了它,您才能使用它。如果編譯時打開了,預設是打開。
為伺服器進程分配和管理的共享內存緩衝區數量。 這個參數的預設值是 initdb 自動選擇的; 參考 Section 16.4.3.1 獲取更多訊息。
設置一個命名的執行時參數。PostgreSQL 支援的配置參數在 Section 16.4 裡描述。 大多數其他命令行選項實際上都是這樣的參數賦值的短形式。 -c 可以出現多次用以設置多個參數。
設置調試級別。數值越高,寫到伺服器日誌的調試輸出越多。 數值範圍是 1 到 5。
聲明資料目錄或者配置文件的文件系統路徑。細節詳見 Section 16.4.1。
關閉 fsync 調用,提高性能,但是要冒系統崩潰時資料毀壞的風險。 聲明這個選項等效關閉了 fsync 參數。在使用之前閱讀詳細文件!
--fsync=true 有著這個選項的反面效果。
聲明 postmaster 偵聽著等待來自前端應用 TCP/IP 連線的 IP 主機名或地址。 數值也可以是一個用空格分隔的地址列資料表,或者*資料表示監聽所有可用的地址。 空值資料表示不監聽任何 IP 地址,而只是使用 Unix 域套接字用於與 postmaster 的連接。 預設的時候是只監聽 localhost。 聲明這個選項等效於設置 listen_addresses 配置參數。
這個選項打開 TCP/IP (網際域套接字)通訊。 沒有這個選項,只能接受本地連接。 這個選項等效於在 postgresql.conf 中或者透過 -h 設置 listen_addresses 為 *。
這個選項已經廢棄了,因為它不能實現 listen_addresses 的所有功能。 我們最好直接設置 listen_addresses。
聲明 postmaster 偵聽著等待來自前端應用連線的 Unix 域套接字的位置。 預設通常是 /tmp,但是可以在製作的時候修改。
這個選項打開用 SSL 進行的安全通訊。要使用這個選項,編譯PostgreSQL時您必須打開了 SSL 選項。 有關使用 SSL 的訊息,請參考 Section 16.7。
設置postmaster允許啟動的伺服器伺服器的最大數目。預設配置時,該值為 32, 如果您的系統能支援更多進程,該值最大可以設置為您的系統所能支援的極限。 時修改(參閱 src/include/config.h)。 (請注意-B選項要求至少是兩倍-N參閱 Section 16.5 獲取有關大客戶量的系統資源需求。) 聲明這個選項等效於聲明 max_connections 配置參數。
在 extra-options 裡聲明的 postgres 選項都傳遞給所有由這個 postmaster 啟動的服務進程。 參閱 postgres 獲取可能選項。 如果選項字串包含任何空白,整個字串必須引起來。
聲明 postmaster 偵聽著等待客戶端應用連接的互聯網 TCP/IP 連接埠或一個本地 Unix 域套接字文件擴展(描述符)。 預設的連接埠號是環境變量 PGPORT 的值。如果沒有設置 PGPORT 預設是 PostgreSQL 編譯時建立的值(通常是 5432)。 如果您聲明了一個非預設連接埠,那麼所有前端應用(包括 psql)都必須用命令行選項或者 PGPORT 聲明同一個連接埠。
指明 postmaster 進程將以安靜模式啟動。也就是說, 它將與用戶的(控制)tty 脫離並且啟動其自身的進程組。 並且它把標準輸出和標準錯誤重定向到 /dev/null。
使用這個開關會將日誌輸出都丟棄,可能不是您希望的, 因為這樣令錯誤查找非常困難。參閱下文獲取一個在後台啟動 postmaster 的更好的方法。
--silent_mode=false 的作用和這個選項的效果正好相反。
設置一個命名的執行時參數;其縮寫形式是 -c。
有兩個額外的命令行選項可以用於調試導致伺服器異常退出。 用於這種狀況的一般策略是通知所有其它伺服器必須退出, 然後重新初始化共享內存和信號燈。這是因為一個出錯的伺服器在退出前可能已經破壞了一些共享的狀態。 這些選項控制這種環境下的 postmaster 的性質,而且沒有哪個選項是為普通操作準備的。
這些特殊選項是:
postmaster 將不會重新初始化共享資料結構。 一個有經驗的系統程序員這時就可以使用調試器檢查共享內存和信號燈狀態。
postmaster 將透過發送信號SIGSTOP 停止所有其他伺服器進程,但不會導致它們退出。 這樣就允許系統程序員手工從所有伺服器進程蒐集傾倒的核心(core dumps)。
客戶端使用的確預設字元編碼。(客戶端可以獨立地覆蓋這個。)這個值也可以在配置文件裡設置。
預設資料目錄位置
執行時參數 DateStyle 的預設值。(已經不再鼓勵使用環境變量了。)
預設連接埠(最好再配置文件中設置)
伺服器時區
一個提到了 semget 或者 shmget 的錯誤訊息可能意味著您需要配置您的內核, 提供足夠的共享內存和信號燈。更多討論,參閱 Section 16.5。
提示: 您也可以透過降低 shared_buffers 參數值以減少 PostgreSQL的共享內存的消耗, 或者降低max_connections的參數值減少PostgreSQL的信號燈的消耗, 以此可以推遲重新配置內核。
如果是一個說另外一個 postmaster 正在執行的錯誤訊息,那您應該確保沒有其他的 postmaster 進程正在執行。判斷這個情況的最簡單的辦法是使用命令
$ ps ax | grep postmaster
或者
$ ps -e | grep postmaster
具體使用哪種取決於您的系統。如果確信沒有衝突的 postmaster 在執行,那麼您可以刪除消息裡提到的鎖文件然後再次執行。
一個說無法綁定連接埠的錯誤訊息可能資料表明該連接埠已經背其它非 PostgreSQL 進程使用。 如果您終止postmaster後又馬上用同一個連接埠執行它,您也有可能得到這個錯誤訊息; 這時,您必須多等幾秒,等操作系統關閉了該連接埠後再試。 最後,如果您使用了一個操作系統認為是保留的連接埠,也可能導致這個錯誤訊息。 例如,我的 Unix 版本認為低於 1024 的連接埠號是"可信任的",因而只有 Unix 超級用戶可以使用它們。
如果有可能,不要使用 SIGKILL殺死 postmaster。 這樣會阻止 postmaster在退出前釋放它持有的系統資源(例如共享內存和信號燈)。
要正常結束 postmaster,可以使用信號 SIGTERM,SIGINT, 或 SIGQUIT。 第一個信號將等待所有的客戶端退出後才退出。 第二個將強制斷開所有客戶端,而第三個將不停止立刻退出, 導致在重起時的恢復執行。
工具命令 pg_ctl 可以用於安全而有效地啟停 postmaster。
-- 在FreeBSD或者 OpenBSD上無法執行。 應該用 -c。這在受影響的系統裡是個臭蟲; 如果這個毛病沒有修補好,將來的 PostgreSQL 版本將提供一個繞開的辦法。
用預設值在後台啟動postmaster,鍵入:
$ nohup postmaster >logfile 2>&1 </dev/null &
以指定的連接埠啟動 postmaster:
$ postmaster -p 1234
這條命令將在連接埠 1234 啟動 postmaster。 為了用psql與這個 postmaster 連線, 您應該這麼執行psql
$ psql -p 1234
或者設置環境變量 PGPORT:
$ export PGPORT=1234 $ psql
命名的執行時參數可以用下列的風格之一設置:
$ postmaster -c work_mem=1234 $ postmaster --work-mem=1234
兩種形式都覆蓋那些現有的在 postgresql.conf 裡面的 work_mem 的設置。 請注意在參數名裡的下劃線在命令行上可以寫成下劃線,也可以寫成劃線。
提示: 除了用於短期的實驗以外,更好的習慣是編輯放在 postgresql.conf 裡面的設置, 而不是倚賴命令行開關設置參數。