pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
initdb — 创建一个新的 Postgres 数据库安装
initdb [ --pgdata=dbdir| -rdbdir] [ --pglib=libdir| -llibdir] [ --template=template| -ttemplate] [ --username=name| -uname] [ --noclean | -n ] [ --debug | -d ]
libdirlibdirPGLIB构成 Postgres 的文件在哪里?除了那些因功能原因必须放在特定目录中的文件外,构成 Postgres软件的文件都安装在名为 libdir的目录中。initdb 需要的文件中有一个可以在那里找到的例子是 global1.bki.source,它包含进入共享目录表的全部信息。
dbdirdbdirPGDATA你希望数据库数据放在 Unix 文件系统的什么位置?顶层目录称为 PGDATA目录。
namenamePGUSER谁将成为这个数据库系统的 Postgres 超级用户?Postgres 超级用户是一个 Unix 用户,他拥有存储数据库系统的所有文件,也拥有访问这些文件的 postmaster 和后端进程。或者就让它默认为你(运行 initdb的 Unix 用户)。
只有 Unix 超级用户(root)才能创建拥有者不同于 Postgres超级用户的数据库系统。
还有其他一些较少使用的参数:
templatetemplate替换现有数据库系统中的 template1数据库,其他什么都不动。当你需要用来自更新版本 Postgres的 initdb升级你的template1数据库时,或者当你的template1数据库因某些系统问题而损坏时,这很有用。通常,template1的内容在数据库系统的整个生命期内保持不变。用 initdb加 --template 选项运行不会破坏任何东西。
默认情况下,当 initdb判定某个错误使它无法完全创建数据库 系统时,它会删除在判定无法完成工作之前可能已创建的所有文件。其中包括它调用的程序留下的任何 core 文件。这个选项抑制任何清理,因此对调试有用。
打印引导后端的调试输出。引导后端是 initdb用来创建目录表的程序。这个选项会产生大量的输出。它还会关闭最终的 vacuum 步骤。
文件也是 initdb的输入:
如果出现在 Unix 命令搜索路径(由 PATH 环境变量定义)中的话。这是一个为某些命令选项指定默认值的程序。见下文。
PGLIB/global1.bki.source新数据库系统中共享目录表的内容。这个文件是 Postgres软件的一部分。
PGLIB/local1_template1.bki.source新数据库系统中 template1 表的内容。这个文件是 Postgres软件的一部分。
initdb会在 PGDATA 数据区域中创建作为完整安装的系统表和框架的文件。
initdb创建一个新的 Postgres数据库系统。数据库系统是由同一个 Unix 用户管理、并由单个 postmaster 管理的一组数据库的集合。
创建数据库系统包括:创建存放数据库数据的目录,生成共享目录表(不属于任何特定数据库的表),以及创建 template1 数据库。template1 数据库是什么?当你创建数据库时,Postgres 是通过复制 template1 数据库中的所有内容来完成的。其中包含为内建类型等内容填好的目录表。
在 initdb 创建数据库之后,它会运行 vacuum来完成初始化,这会重置一些优化参数。
有三种方式向 initdb传递参数。
可以使用 initdb 命令选项。
可以在调用 initdb 之前设置环境变量。
可以在 Unix 命令搜索路径中放一个名为 postconfig的程序。 initdb会调用该程序,该程序随后把 initdb参数写到它的标准输出流。不过第三种方式并不常见。
命令选项总是覆盖以其他任何方式指定的参数。postconfig 返回的值覆盖任何环境变量,但如果你希望使用环境变量的值,你的 postconfig 程序可以让它的输出基于环境变量。
postconfig 输出的值必须具有格式
var1=value1var2=value2...
如果它不想提供任何参数,也可以什么都不输出。var的值与相应的环境变量名相同。例如,
PGDATA=/tmp/postgres_test
的效果与以一个名为 PGDATA、值为 /tmp/postgres_test的环境变量调用 initdb相同。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。