Provided by: manpages-zh_1.6.4.3-1_all bug

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>

       本頁面中文版由中文 man 手冊頁計劃提供。
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

Application                                        2003-11-02                                      POSTMASTER(1)