POSTMASTER(1) | PostgreSQL Server Applications | POSTMASTER(1) |
postmaster - PostgreSQL多使用者資料庫伺服器
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
啟動時,它需要知道資料庫叢集檔案("資料區")的位置。
這個引數是透過傳遞 -D
命令列選項或者 PGDATA
環境變數實現的,沒有預設值。
一個系統上同時可以執行幾個
postmaster 程序,
只要他們使用不同的資料區和不同的埠號(見下文)。
一個數據區是用 initdb(1)
建立的。
postmaster 接受下列命令列引數。 關於這些選項的更詳細的討論請參考 Section 16.4 ``Run-time Configuration''。你也可以透過設定一個配置檔案來減少敲擊這些選項。
--fsync=true 有著這個選項的反面效果。
--tcpip-socket=false 是這個選項的相反的作用。
使用這個開關會將日誌輸出都丟棄,可能不是你希望的,
因為這樣令錯誤查詢非常困難。參閱下文獲取一個在後臺啟動
postmaster 的更好的方法。
--silent-mode=false 的作用和這個選項的效果正好相反。
有兩個額外的命令列選項可以用於除錯導致伺服器異常退出。
用於這種狀況的一般策略是通知所有其它伺服器必須退出,
然後重新初始化共享記憶體和訊號燈。這是因為一個出錯的伺服器在退出前可能已經破壞了一些共享的狀態。
這些選項控制這種環境下的
postmaster
的性質,而且沒有哪個選項是為普通操作準備的。
這些特殊選項是:
一個提到了 semget 或者 shmget 的錯誤資訊可能意味著你需要配置你的核心, 提供足夠的共享記憶體和訊號燈。更多討論,參閱 Section 16.5 ``Managing Kernel Resouces'' 。
如果是一個說另外一個
postmaster
正在執行的錯誤資訊,那你應該確保沒有其他的
postmaster
程序正在執行。判斷這個情況的最簡單的辦法是使用命令
$ ps ax | grep postmaster或
$ ps -ef | grep postmaster
一個說無法繫結埠的錯誤資訊可能表明該埠已經背其它非
PostgreSQL 程序使用。
如果你終止postmaster後又馬上用同一個埠執行它,你也有可能得到這個錯誤資訊;
這時,你必須多等幾秒,等作業系統關閉了該埠後再試。
最後,如果你使用了一個作業系統認為是保留的埠,也可能導致這個錯誤資訊。
例如,我的 Unix
版本認為低於 1024
的埠號是"可信任的",因而只有
Unix
超級使用者可以使用它們。
如果有可能,不要使用 SIGKILL殺死 postmaster。 這樣會阻止 postmaster在退出前釋放它持有的系統資源(例如共享記憶體和訊號燈)。
要正常結束
postmaster,可以使用訊號
SIGTERM,SIGINT, 或 SIGQUIT。
第一個訊號將等待所有的客戶端退出後才退出。
第二個將強制斷開所有客戶端,而第三個將不停止立刻退出,
導致在重起時的恢復執行。
工具命令 pg_ctl(1)
可以用於安全而有效地啟停
postmaster。
選項 -- 在FreeBSD或者 OpenBSD上無法執行。 應該用 -c。這在受影響的系統裡是個臭蟲; 如果這個毛病沒有修補好,將來的 PostgreSQL 版本將提供一個繞開的辦法。
用預設值在後臺啟動postmaster,鍵入:
$ nohup postmaster >logfile 2>&1 </dev/null &
以指定的埠啟動
postmaster:
$ postmaster -p 1234
$ psql -p 1234
$ export PGPORT=1234 $ psql
命名的執行時引數可以用下列的風格之一設定:
$ postmaster -c sort_mem=1234 $ postmaster --sort-mem=1234
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | Application |