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