标签:应用连接 sig 编程错误 shmget int 日志信息 des 关闭 director
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 ]
postmaster 是 PostgreSQL 多用户数据库服务器。 一个客户端为了访问一个数据库,它(通过网络或本地)联接到一个运行着的 postmaster。 然后该 postmaster 启动一个独立的服务器进程("postgres") 以操作联接。 postmaster 还控制服务器进程之间的通讯。
缺省时postmaster在前台启动并且向标准错误系统输出打印日志信息。 在实际应用里,postmaster应该作为后台进程启动,也许该在启动时。
一个postmaster总是管理来自同一个数据库集群的数据。 一个数据库集群是一套在同一个文件系统位置存放数据的数据库。 当 postmaster 启动时,它需要知道数据库集群文件("数据区")的位置。 这个参数是通过传递 -D 命令行选项或者 PGDATA 环境变量实现的,没有缺省值。 一个系统上同时可以运行几个 postmaster 进程, 只要他们使用不同的数据区和不同的端口号(见下文)。 一个数据区是用 initdb(1) 创建的。
postmaster 接受下列命令行参数。 关于这些选项的更详细的讨论请参考 Section 16.4 ``Run-time Configuration‘‘。你也可以通过设置一个配置文件来减少敲击这些选项。
--fsync=true 有着这个选项的反面效果。
--tcpip-socket=false 是这个选项的相反的作用。
使用这个开关会将日志输出都丢弃,可能不是你希望的, 因为这样令错误查找非常困难。参阅下文获取一个在后台启动 postmaster 的更好的方法。
--silent-mode=false 的作用和这个选项的效果正好相反。
有两个额外的命令行选项可以用于调试导致服务器异常退出。 用于这种状况的一般策略是通知所有其它服务器必须退出, 然后重新初始化共享内存和信号灯。这是因为一个出错的服务器在退出前可能已经破坏了一些共享的状态。 这些选项控制这种环境下的 postmaster 的性质,而且没有哪个选项是为普通操作准备的。
这些特殊选项是:
一个提到了 semget 或者 shmget 的错误信息可能意味着你需要配置你的内核, 提供足够的共享内存和信号灯。更多讨论,参阅 Section 16.5 ``Managing Kernel Resouces‘‘ 。
如果是一个说另外一个 postmaster 正在运行的错误信息,那你应该确保没有其他的 postmaster 进程正在运行。判断这个情况的最简单的办法是使用命令
$ ps ax | grep postmaster
或
$ ps -ef | grep postmaster
具体使用哪种取决于你的系统。如果确信没有冲突的 postmaster 在运行,那么你可以删除消息里提到的锁文件然后再次运行。
一个说无法绑定端口的错误信息可能表明该端口已经背其它非 PostgreSQL 进程使用。 如果你终止postmaster后又马上用同一个端口运行它,你也有可能得到这个错误信息; 这时,你必须多等几秒,等操作系统关闭了该端口后再试。 最后,如果你使用了一个操作系统认为是保留的端口,也可能导致这个错误信息。 例如,我的 Unix 版本认为低于 1024 的端口号是"可信任的",因而只有 Unix 超级用户可以使用它们。
如果有可能,不要使用 SIGKILL杀死 postmaster。 这样会阻止 postmaster在退出前释放它持有的系统资源(例如共享内存和信号灯)。
要正常结束 postmaster,可以使用信号 SIGTERM,SIGINT, 或 SIGQUIT。 第一个信号将等待所有的客户端退出后才退出。 第二个将强制断开所有客户端,而第三个将不停止立刻退出, 导致在重起时的恢复运行。
工具命令 pg_ctl(1) 可以用于安全而有效地启停 postmaster。
选项 -- 在FreeBSD或者 OpenBSD上无法运行。 应该用 -c。这在受影响的系统里是个臭虫; 如果这个毛病没有修补好,将来的 PostgreSQL 版本将提供一个绕开的办法。
用缺省值在后台启动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 的设置。 请注意在参数名里的下划线在命令行上可以写成下划线,也可以写成划线。
postmaster - PostgreSQL多用户数据库服务器
标签:应用连接 sig 编程错误 shmget int 日志信息 des 关闭 director
原文地址:https://www.cnblogs.com/fanweisheng/p/11097553.html