9.1参考3

From PostgreSQL wiki

(Difference between revisions)
Jump to: navigation, search
(initdb)
(pg_controldata)
Line 114: Line 114:
  
 
== pg_controldata ==
 
== pg_controldata ==
-- display control information of a PostgreSQL database cluster
+
'''Name'''
 +
 
 +
pg_controldata -- 显示PostgreSQL数据库集群的控制信息
 +
 
 +
'''Synopsis'''
 +
 
 +
<pre>pg_controldata [option] [datadir]</pre>
 +
 
 +
'''Description'''
 +
 
 +
pg_controldata 打印initdb初始化过的信息,比如系统表的版本。它也可以显示预写日志和检查点处理的信息。这个信息是集群层面的,不针对任何特定的数据库。
 +
 
 +
该工具仅可以被初始化该集群的用户执行,因为它需要对数据库数据目录的访问权限。你可以通过命令行指定数据目录也可以通过设置环境变量 PGDATA。该工具还支持-V和--version选项,该选项打印pg_controldata版本并退出。它还支持选项-?和--help,输出命令行帮助信息。
 +
 
 +
'''Environment'''
 +
 
 +
PGDATA
 +
:缺省数据目录
 +
 
 
== pg_ctl ==
 
== pg_ctl ==
 
-- initialize, start, stop, or control a PostgreSQL server
 
-- initialize, start, stop, or control a PostgreSQL server

Revision as of 06:34, 20 September 2013

参考3 服务器应用

这部分包括 PostgreSQL 服务器应用和支持工具的参考信息。这些命令只能用于在数据库服务器所在的主机上运行。其它工具程序在 Reference II,客户端应用 中列出。

Contents

initdb

Name

initdb -- 创建一个新的 PostgreSQL数据库集群

Synopsis

initdb [option...] --pgdata | -D directory

Description

initdb 创建一个新的 PostgreSQL 数据库集群。 一个数据库集群是由单个服务器实例管理的数据库集合。

创建数据库集群包括创建数据库数据的宿主目录,生成共享的系统表(不属于任何特定数据库的表)和创建 template1 和 postgres 数据库。当你以后再创建一个新数据库时, template1 数据库里所有内容都会拷贝过来。(因此,任何在 template1 里面安装的东西都自动拷贝到之后创建的数据库中。) postgres 数据库是一个缺省数据库,用于给用户、工具或者第三方应用提供缺省数据库。

尽管initdb会尝试创建相应的数据目录, 但经常会发生它没有权限做这些事情的情况。因为所需要的目录的父目录通常是 root 所有的目录。 要初始化这种设置,用 root 创建一个空数据目录, 然后用 chown 把该目录的所有权交给数据库用户帐号, 然后 su 成数据库用户,最后以数据库用户身份运行 initdb。

initdb 必须以服务器进程所有者身份运行,因为服务器需要initdb所创建文件和目录的访问权限。因为服务器不能以root身份运行,你也不能以root身份运行initdb。(事实上会被拒绝。)

initdb 初始化该数据库集群的缺省区域和字符集编码。字符编码排序(LC_COLLATE)和字符集表(LC_CTYPE, 也就是,大写,小写,数字等)可在数据库创建时单独设置。initdb 决定 template1 数据库的编码,而该编码将成为所有其它数据库的缺省。

要修改缺省编码排序或者字符集表,使用--lc-collate和--lc-ctype选项。使用 C 或 POSIX 之外的字符编码排序还会有性能影响。因此在运行initdb时选取正确的设置非常重要。

其余的设置可以在服务器启动后改变。也可以使用--locale设置缺省值,包括编码排序和字符集表。服务器的设置可通过SHOW ALL显示。更多细节可以参考Section 22.1。

若要改变缺省编码,使用--encoding。更多细节可以参考Section 22.3。

Options

-A authmethod --auth=authmethod

这个选项声明本地用户在 pg_hba.conf 里面使用的认证方法。 除非你相信所有你的系统上的本地用户,否则不要使用 trust。 Trust 是所有安装的缺省。

-D directory --pgdata=directory

这个选项声明数据库集群应该存放在哪个目录。 这是initdb需要的唯一信息,但是你可以通过设置 PGDATA 环境变量来避免键入, 这样做可能方便一些,因为稍后数据库服务器(postmaster)可以通过同一个变量找到数据库目录。

-E encoding --encoding=encoding

选择模板数据库的编码方式。这将是你以后创建的数据库的缺省编码方式, 除非你创建数据库时覆盖了它。缺省是从区域设置中获得的,如果没有区域设置,就是 SQL_ASCII。 PostgreSQL 服务器支持的字符集在 Section 22.3.1 里描述。

--locale=locale

为数据库集群设置缺省的区域。如果没有声明这个选项,那么区域 是从 initdb 运行的环境中继承过来的。 区域设置在 Section 22.1 里描述。

--lc-collate=locale --lc-ctype=locale --lc-messages=locale --lc-monetary=locale --lc-numeric=locale --lc-time=locale

类似 --locale,但是只设置特殊范畴的区域。

--no-locale

等价于--locale=C。

--pwfile=filename

使initdb从文件中读取超级用户的密码。密码位于该文件中第一行。

--text-search-config=CFG

设置缺省文本搜索。参看default_text_search_config获得更多信息。

-U username --username=username

选择数据库超级用户的用户名。缺省是运行 initdb 的用户的有效用户。 超级用户的名字是什么并不重要, 但是我们可以选择习惯的名字 postgres,即使操作系统的用户名字不一样也无所谓。

-W --pwprompt

令 initdb 提示输入数据库超级用户的口令。 如果你不准备使用口令认证,这个东西并不重要。 否则你将不能使用口令认证直到你设置了口令。

-X directory --xlogdir=directory

该选项指定事务日志存放的路径。

其他的,不常用的参数同样可用:

-d --debug

从初始化后端打印调试输出以及一些其它的一些普通用户不太感兴趣的信息。 初始化后端是 initdb 用于创建系统表的程序。 这个选项生成大量非常烦人的输出。

-L directory

告诉 initdb 到哪里找初始化数据库所需要的输入文件。 通常是不必要的。如果需要你明确声明的话,程序会提示你输入。

-n --noclean

缺省时,当initdb 发现一些错误妨碍它完成创建数据库集群的工作时, 它将在检测到不能结束工作之前将其创建的所有文件删除。 这个选项禁止任何清理动作,因而对调试很有用。

-V --version

打印initdb版本后退出。

-? --help

显示initdb命令行参数的帮助信息后退出。

Environment

PGDATA

声明数据库集群存储的目录;可以用 -D 选项覆盖。

这个工具,和其他PostgreSQL工具一样都使用libpq支持的环境变量(参照Section31.13)。

Notes

initdb 也可以被pg_ctl initdb调用。

See Also

pg_ctl, postgres

pg_controldata

Name

pg_controldata -- 显示PostgreSQL数据库集群的控制信息

Synopsis

pg_controldata [option] [datadir]

Description

pg_controldata 打印initdb初始化过的信息,比如系统表的版本。它也可以显示预写日志和检查点处理的信息。这个信息是集群层面的,不针对任何特定的数据库。

该工具仅可以被初始化该集群的用户执行,因为它需要对数据库数据目录的访问权限。你可以通过命令行指定数据目录也可以通过设置环境变量 PGDATA。该工具还支持-V和--version选项,该选项打印pg_controldata版本并退出。它还支持选项-?和--help,输出命令行帮助信息。

Environment

PGDATA

缺省数据目录

pg_ctl

-- initialize, start, stop, or control a PostgreSQL server

pg_resetxlog

-- reset the write-ahead log and other control information of a PostgreSQL database cluster

postgres

-- PostgreSQL database server

postmaster

-- PostgreSQL database server

Personal tools