[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 數據庫 > 其它 > 正文
PostgreSQL7.0手冊-用戶手冊-21. 系統應用 - postmaster
編譯:何偉平 laser@zhengmai.com.cn (2001-04-21 22:28:47)
postmaster
名稱
postmaster  運行 Postgres 多用戶端 

語法
postmaster [ -B nBuffers ] [ -D DataDir ] [ -N maxBackends ] [ -S ]
    [ -d DebugLevel ] [ -i ] [ -l ]
    [ -o BackendOptions ] [ -p port ] [ -n | -s ]
輸入
postmaster 接受下列命令行參數: 
  
-B nBuffers 
postmaster 為它啟動的端進程分配和管理的共享內存緩沖區數量。此值缺省為 64 個緩沖區,每個緩沖區是 8k 字節(或者 config.h 裡設置的 BLCKSZ 大小)。 
-D DataDir 
聲明用做數據庫目錄樹的根的目錄。如果沒有給出 -D,缺省目錄名是環境變量 PGDATA 的值。如果沒有設置 PGDATA,那使用的目錄是 $POSTGRESHOME/data。如果兩個環境變量和命令行選項都沒有給出,用的缺省目錄是編譯時設置的。 
-N maxBackends 
此 postmaster 允許啟動的端服務器的最大數目。缺省配置時,該值為 32,如果你的系統能支持更多進程,該值最大可以設置為 1024。缺省值和最大值都可以在制作 Postgres 時修改(參閱 src/include/config.h)。 
-S 
指明 postmaster 進程將以安靜模式啟動。也就是說,它將與用戶的(控制)tty 脫離並且啟動其自身的進程組。這個選項不應和調試選項結合使用,因為向標準輸出和標準錯誤打印的任何信息都被丟棄。 
  
  
  
  
  
  
  
  

請注意使用這個開關會令除錯非常困難,因為通常由這個 postmaster 和它生成的代產生的跟蹤和日志信息都將被丟棄. 

-d DebugLevel 
決定端服務器將產生的調試信息輸出的數量。如果 DebugLevel 是一,將跟蹤所有聯接動作,而對其它的一律忽略。對級別二或更高,端進程的調試被打開並且 postmaster 顯示更多信息,包括端環境和處理動作。注意如果沒有給端服務器聲明他們的調試輸出指向的文件,則輸出會出現在它們的父postmaster 的控制 tty 上。 
-i 
這個選項打開 TCP/IP 或者網際域套接字通訊。沒有這個選項,只能進行本地 Unix 域套接字通訊。 
  
-l 
這個選項打開 SSL 套接字通訊。同樣還需要 -i 選項。要使用這個選項,編譯時你必須打開了 SSL 選項。 
-o BackendOptions 
在 BackendOptions 裡聲明的 postgres 選項都傳遞給所有由這個 postmaster 啟動的端服務進程。如果選項字串包含任何空白,整個字串必須引起來。 
-p port 
聲明 postmaster 偵聽著等待連接的互聯網 TCP/IP 端口或一個本地 Unix 域套接字文件擴展(描述符).缺省的端口號是環境變量 PGPORT 的值。如果沒有設置 PGPORT,缺省是 Postgres 編譯時建立的值(通常是 5432)。如果你聲明了一個非缺省端口,那所有前端應用(包括psql)都必須用命令行選項或者 PGPORT 聲明同一個端口。 
還有幾個命令行選項用在端非正常退出時進行調試。這些選項用在這種情況下控制postmaster,而且沒有一個選項是為了用正常操作的。 
用這種狀況的一般策略是通知所有其它端必須退出,然重新初始化共享內存和信號燈。這是因為一個出錯的端在退出前可能已經破壞了一些共享的狀態。 

這些特殊選項是: 
  
-n 
  
  
  
  
  
  
  
  

postmaster 將不會重新初始化共享數據結構。一個有經驗的系統程序員這時就可以使用shmemdoc 程序檢查共享內存和信號燈狀態。 

-s 
  
  
  
  
  
  
  
  

postmaster 將通過發送信號 SIGSTOP 停止所有其他端進程,但不會導致它們退出。這樣就允許系統程序員手工從所有端進程收集傾倒的核心(core dumps)。

輸出
semget: No space left on device 
  
如果你看到這條信息,你應該運行 ipcclean 命令。幹完這個之,試著重新啟動 postmaster。如果還不行,你可能需要按照安裝指導裡描述的那樣配置你的內核的共享內存和信號燈。如果你在一台主機上運行多個postmaster 實例,或者如果你的內核的共享內存和/或信號燈被限制得很小,你可能要重新配置你的內核以增加共享內存和信號燈參數。 
小技巧:你也可以通過降低 -B 的參數以減少 Postgres 的共享內存的消耗,或者降低 -N 的參數減少 Postgres 的信號燈的消耗,以此可以推遲重新配置內核。
StreamServerPort: cannot bind to port 
  
  
  
  
  
  
  
  

如果看到這樣的信息,你應該確保沒有其他的postmaster 進程正在運行。判斷這個情況的最簡單的辦法是使用命令 

% ps -ax | grep postmaster
(這是在 BSD 類型的系統上),或者 
% ps -e | grep postmast
(這是在 System V 類型或者 POSIX 兼容的系統象 HP-UX 上)。 
如果你確信沒有其他 postmaster 進程在運行但是你還是收到這個錯誤信息,試著用 -p 選項聲明一個不同的端口。如果你終止 postmaster 又馬上用同一個端口運行它,你也有可能得到這個錯誤信息;這時,你必須多等幾秒,等操作系統關閉了該端口再試。最如果你使用了一個操作系統認為是保留的端口,也可能導致這個錯誤信息。例如,我的 Unix 版本認為低 1024 的端口號是可信任的因而只有 Unix 超級用戶可以使用它們。 
  

IpcMemoryAttach: shmat() failed: Permission denied 
一個可能的解釋是另外一個用戶企圖在同一端口上運行一個postmaster 進程,該進程請求共享資源然退出。因為 Postgres 的共享內存鍵是以賦予 postmaster 的端口號為基礎的,因此在同一台主機上有好幾個安裝的話很有可能沖突。如果當前沒有其他postmaster 進程正在運行(見上面),運行 ipcclean 然再嘗試一下。如果其他 postmaster 鏡象正在運行,你就不得不與那些進程的所有者協調端口號的分配和/或刪除未用的共享內存段。 
描述
postmaster 管理前端和端進程之間的通訊,還負責分配共享緩沖池和 SysV 信號燈(在沒有測試和設置指令的機器上)。postmaster 本身並不與用戶交互並且應該作為一個台進程啟動。 
每個 Postgres 安裝每次應該只啟動一個 postmaster。這裡,一個安裝意味著一個數據庫目錄和postmaster 端口號。你可以在一台機器上運行多一個 postmaster,前提是每個有不同的目錄和端口號。

注意
如果有可能,不要使用 SIGKILL 殺死 postmaster。而應該使用 SIGHUP,SIGINT 或 SIGTERM (kill(1)的缺省信號)。用 
% kill -KILL
或者其可選形式 
% kill -9
會阻止 postmaster 在退出前釋放它持有的系統資源(例如共享內存和信號燈)。這樣就無法讓你免處理上面描述的共享內存的問題。 
處理共享內存問題的有用的工具包括 ipcs(1),ipcrm(1),和ipcclean(1)。 
 

用法
用缺省值啟動 postmaster 鍵入: 
% nohup postmaster >logfile 2>&1 &
這條命令將在缺省端口(5432)啟動 postmaster。這是最簡單和最常用的啟動postmaster 的方法。 
要在指定的端口啟動 postmaster : 

% nohup postmaster -p 1234 &
這條命令將啟動通過端口1234通訊的 postmaster。為了用 psql 與這個 postmaster 聯接,你需要這樣運行(psql): 
% psql -p 1234
或者設置環境變量 PGPORT: 
% setenv PGPORT 1234
% psql

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
PostgreSQL7.0手冊-附錄-文檔 (2001-04-21 23:50:44)
PostgreSQL7.0手冊-附錄-日期/時間支持-CVS 倉庫 (2001-04-21 23:48:48)
PostgreSQL7.0手冊-教程 -73. Postgres SQL 高級特性 (2001-04-21 23:45:36)
PostgreSQL7.0手冊-教程 -72. 查詢語言 (2001-04-21 23:44:40)
PostgreSQL7.0手冊-教程 -71. 開始 (2001-04-21 23:42:54)
PostgreSQL7.0手冊-教程 -70. 體系結構 (2001-04-21 23:41:58)
PostgreSQL7.0手冊-教程 -69. SQL (2001-04-21 23:41:23)
PostgreSQL7.0手冊-開發者手冊 -68. 分頁文件 (2001-04-21 23:39:22)
PostgreSQL7.0手冊-開發者手冊 -67. 端接口 (2001-04-21 23:38:34)
PostgreSQL7.0手冊-開發者手冊 -66. gcc 缺省優化 (2001-04-21 23:37:20)

===更多相關===
 

★  樊強制作 歡迎分享  ★