Manpages

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 [AT] pgsqldb.org>

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