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

来源: - chang_jiang_110的专栏

创建数据库系统包括创建数据库数据的宿主目录, 生成共享的系统表(不属于任何特定数据库的表)和创建 template1 数据库。当你以后再创建一个新数据库时, template1 数据库里所有内容都会拷贝过来。 它包括填充了象内建类型这样的系统表。

initdb 初始化该数据库集群的缺省区域和字符集编码。 有些区域范畴对该集群而言是全生命期固定的,使用 C 或 POSIX 之外的区域还会有性能影响。因此在运行 initdb 的时候选取正确的是非常重要的。 其它区域范畴可以在服务器启动之后的时间里改变。 initdb 将把那些区域设置写到 postgresql.conf 配置文件,这样它们就是缺省的, 但是我们可以通过编辑那些文件来修改它们。要设置 initdb 使用的区域,参阅 --locale 选项的描述。字符集编码可以在数据库创建的时候独立设置。 initdb 决定 template1 数据库的编码,而该编码将成为所有其它数据库的缺省。 要修改缺省编码,我们可以使用 --encoding 选项。

initdb必须以运行数据库服务器进程的用户身份运行它。 因为服务器需要能够访问 initdb 创建的文件和目录。 因为服务器不能以 root 身份运行,所以你也不能以 root 身份运行 initdb。(实际上它拒绝以 root 身份运行。)

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

选项

-A authmethod --auth=authmethod

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

-D directory --pgdata=directory

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

-E encoding --encoding=encoding

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

--locale=locale

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

--lc-collate=locale --lc-ctype=locale --lc-messages=locale --lc-monetary=locale --lc-numeric=locale --lc-time=locale
Tags:  数据库服务器集群 数据库集群技术 数据库集群方案 数据库集群

延伸阅读

最新评论

  1. bc

发表评论