initdb

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

Synopsis

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

Description

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

创建数据库集群包括以下步骤:创建数据库数据将驻留在其中的目录;生成共享目录表(属于整个集群而不是任何特定数据库的表);以及创建template1postgres数据库。以后创建新数据库时,将复制template1数据库中的所有内容。 (因此,安装在template1中的所有内容都会自动复制到以后创建的每个数据库中.)postgres数据库是默认数据库,供用户,Util 和第三方应用程序使用。

尽管initdb会尝试创建指定的数据目录,但是如果所需数据目录的父目录是 root 拥有的,它可能没有权限。要在这种设置中进行初始化,请创建一个空数据目录作为 root 用户,然后使用chown将该目录的所有权分配给数据库用户帐户,然后使用su成为要运行initdb的数据库用户。

initdb必须以拥有服务器进程的用户身份运行,因为服务器需要有权访问initdb创建的文件和目录。由于服务器不能以 root 用户身份运行,因此也不能以 root 用户身份运行initdb。 (实际上它将拒绝这样做.)

出于安全原因,默认情况下,只有initdb创建的新集群才可由集群所有者访问。 --allow-group-access选项允许与群集所有者位于同一组的任何用户读取群集中的文件。这对于以非特权用户身份执行备份很有用。

initdb初始化数据库集群的默认语言环境和字符集编码。创建数据库时,可以分别为数据库设置字符集编码,排序 Sequences(LC_COLLATE)和字符集类(LC_CTYPE,例如大写,小写,数字)。 initdb确定template1数据库的那些设置,这些设置将用作所有其他数据库的默认设置。

要更改默认的排序规则 Sequences 或字符集类别,请使用--lc-collate--lc-ctype选项。除CPOSIX以外的排序规则也有性能损失。由于这些原因,在运行initdb时选择正确的语言环境很重要。

服务器启动以后,可以更改其余的区域设置类别。您还可以使用--locale设置所有语言环境类别的默认值,包括排序规则和字符集类。可以通过SHOW ALL显示所有服务器的语言环境值(lc_*)。可以在Section 23.1中找到更多详细信息。

要更改默认编码,请使用--encoding。可以在Section 23.3中找到更多详细信息。

Options

除非您信任系统上的所有本地用户,否则请不要使用trusttrust是易于安装的默认值。

调整此大小以控制 WAL 日志传送或归档的粒度可能很有用。同样,在具有大量 WAL 的数据库中,每个目录中大量的 WAL 文件可能会成为性能和 Management 问题。增加 WAL 文件大小将减少 WAL 文件的数量。

其他不常用的选项也可用:

Other options:

Environment

与大多数其他 PostgreSQLUtil 一样,该 Util 也使用 libpq 支持的环境变量(请参见Section 34.14)。

Notes

initdb也可以通过pg_ctl initdb调用。

See Also

pg_ctl, postgres

上一章 首页 下一章