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 里面的设置,
而不是倚赖命令行开关设置参数。
postmaster - PostgreSQL多用户数据库服务器的更多相关文章
- 建立安全SSL连接PostgreSQL数据库服务器
建立安全SSL连接PostgreSQL数据库服务器当前物联网的挑战之一就是提供最高的安全级别.这就是为什么需要开启SSL连接到 PostgreSQL. 当你想要安全的存储数据到PostgreSQL数据 ...
- SQLite vs MySQL vs PostgreSQL:关系型数据库比较
自1970年埃德加·科德提出关系模型之后,关系型数据库便开始出现,经过了40多年的演化,如今的关系型数据库种类繁多,功能强大,使用广泛.面对如此之多的关系型数据库,我们应该如何权衡找出适合自己应用场景 ...
- 一键部署启动MySQL数据库服务器
https://market.azure.cn/Vhd/Show?vhdId=9858&version=14359 产品详情 产品介绍MySQL是一个真正的多用户.多线程SQL数据库服务器.S ...
- CentOS7 实战源码安装mysql5.7.17数据库服务器
CentOS7 实战源码安装mysql5.7.17数据库服务器 简介:实战演练mysql数据库服务器的搭建 mysql简介: mysql是一个开源的关系型数据库管理系统,现在是oracle公司旗下的 ...
- PostgreSQL 创建数据库
PostgreSQL 创建数据库可以用以下三种方式: 1.使用 CREATE DATABASE SQL 语句来创建. 2.使用 createdb 命令来创建. 3.使用 pgAdmin 工具. CRE ...
- PostgreSQL 删除数据库
PostgreSQL 删除数据库可以用以下三种方式: 1.使用 DROP DATABASE SQL 语句来删除. 2.使用 dropdb 命令来删除. 3.使用 pgAdmin 工具. 注意:删除数据 ...
- 通过自定义特性,使用EF6拦截器完成创建人、创建时间、更新人、更新时间的统一赋值(使用数据库服务器时间赋值,接上一篇)
目录: 前言 设计(完成扩展) 实现效果 扩展设计方案 扩展后代码结构 集思广益(问题) 前言: 在上一篇文章我写了如何重建IDbCommandTreeInterceptor来实现创建人.创建时间.更 ...
- [网站公告]数据库服务器IOPS跑满造成网站不能正常访问
今年下午13:20-14:20左右,突增的访问量引发数据库服务器(阿里云RDS)IOPS跑满,造成大量请求执行缓慢,从而严重影响了网站的正常访问,给大家带来很大的麻烦,望大家谅解! 在出现故障时,当我 ...
- Web服务器与数据库服务器分离 导入 Excel数据至数据库
一般情况一般项目WEB服务器与数据库均部署在一台服务器,文件上传,数据导入在一台服务器完成.web服务器与数据库服务器分离,文件上传与数据导入将分布在两台服务器或多台服务器之间.本案例为两台服务器,具 ...
随机推荐
- RedHat下使用gcc编译HelloWorld.cpp
gcc ./HelloWorld.cpp 错误: /tmp/ccZuz3Ca.o:(.eh_frame+0x12): undefined reference to `__gxx_personality ...
- Sign on Fence(连续的长为W的一段中最小的数字的最大值)
题目链接:http://codeforces.com/problemset/problem/484/E 题意:给你个n,n个木板都有高度,宽度都为1 ,给你两个数[l,r]和一个w,求在[l,r]区间 ...
- Linux下JDK1.7升级1.8版本
先下载 jdk-8u45-linux-x64.rpm 然后上传到 /usr/local/src 去.当然其他目录也可以.这里是默认位置 给所有用户添加可执行权限 #chmod +x jdk-8u4 ...
- POJ 1383 Labyrinth (bfs 树的直径)
Labyrinth 题目链接: http://acm.hust.edu.cn/vjudge/contest/130510#problem/E Description The northern part ...
- [Codeforces 274E]:Mirror Room(模拟)
题目传送门 题目描述 有一个$n\times m$的格子图,其中有一些是黑色的,另一些为白色.从某个白色格子的中心点向左上($NW$),左下($SW$),右上($NE$),右下($SE$)四个方向中的 ...
- mui初级入门教程(七)— 基于native.js的文件系统管理功能实现
文章来源:小青年原创发布时间:2016-08-01关键词:mui,nativejs,android转载需标注本文原始地址: http://zhaomenghuan.github.io... 前言 这段 ...
- Java实体类之间的映射(多对多关系)
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- jenkins执行 pod install 报错 CocoaPods requires your terminal to be using UTF-8 encoding. Consider adding the following to ~/.profile:
错误提示是: CocoaPods 需要终端使用utf-8编码 解决办法
- 010-elasticsearch5.4.3【四】-聚合操作【一】-度量聚合【metrics】-min、max、sum、avg、count
一.概述 度量类型聚合主要针对的number类型的数据,需要ES做比较多的计算工作 参考向导:地址 import org.elasticsearch.search.aggregations.Aggre ...
- Jmeter之HTTP请求图片上传功能
在现在很多功能都存在图片上传,所以简单说明一下使用jmeter进行图片上传. 界面显示并说明 添加一个HTTP请求的取样器 1.获取上传图片的接口,配置路径和参数 2.在HTTP请求中,Impleme ...