gs_initdb
简介
背景信息
gs_initdb初始化数据库时,会创建数据库目录、生成系统表、创建默认数据库和模板数据库。
系统表
初始化数据库时会生成大量的系统表和视图,其中绝大部分都对任何数据库用户开放查看权限。
说明: pg_user_status、pg_auth_history系统表权限只对初始化数据库用户和sysadmin用户开放。
生成的数据库
- template1:是一个模板数据库,当以后再创建一个新的数据库时,template1数据库里的所有内容都会拷贝到新数据库中。通过gs_initdb的参数可以决定template1数据库的设置。
- template0:是openGauss提供的最初始的备份数据库,当需要时可用template0作为模板生成“干净”的数据库。
- postgres:是一个提供给用户、工具和第三方应用的缺省数据库。
使用指导
背景信息
在安装时,推荐使用-D参数调用gs_initdb初始化数据库。如果由于故障恢复等原因,需要重新初始化一个数据库,可以通过执行gs_initdb来完成。
- 尽管gs_initdb会尝试创建相应的数据目录,但可能没有权限执行此操作,因为要创建目录的父目录通常被root所拥有。如果要创建数据目录,首先用root用户创建一个空数据目录,然后用chown把该目录的所有权交给数据库用户。
- gs_initdb决定template1数据库的设置,而该设置将会成为其他数据库的默认设置。
- gs_initdb初始化数据库的缺省区域和字符集编码。字符集编码、字符编码排序(LC_COLLATE)和字符集类(LC_CTYPE,如大写、小写数字等)可以在创建数据库时独立设置。
语法
gs_initdb [OPTION]... [DATADIR]
操作步骤
以操作系统用户omm登录数据库主节点。
规划数据库目录。
切换到root用户。
su - root
根据提示输入用户名和密码。
进入“/opt/gaussdb”目录,并创建“data1”目录。
cd /opt/gaussdb
mkdir data1
执行gs_initdb命令初始化数据库。
gs_initdb -D /opt/gaussdb/data1 -w "Gauss@123" --nodename='data1'
命令参考
gs_initdb支持的常用参数和不常用参数请分别参见表 1和表 2。
表 1 常用参数说明
参数 | 参数说明 | 取值范围 |
---|
-A, —auth=METHOD | 指定本地用户连接数据库时的认证方法,即“pghba.conf”配置文件中host和local所在行的认证方法。 除非用户对本地用户都是信任的,否则不要使用默认值trust。
须知:若取值为md5,则需手动修改参数文件 postgresql.conf.sample 中的密码存储类型 password_encryption_type 参数的值,修改为0,且放开注释使之生效。gs_initdb工具需同时配合 -W 的使用。
| METHOD的取值: - trust
- reject
- md5(不安全的算法,为了兼容老版本而存在)
- sha256
- sm3
默认值:trust |
—auth-host=METHOD | 指定本地用户通过TCP/IP连接数据库时的认证方法,即:“pg_hba.conf”配置文件中host所在行的认证方法。 指定此参数则会覆盖-A参数的值。 | METHOD的取值: - trust
- reject
- md5(不安全的算法,为了兼容老版本而存在)
- sha256
- sm3
默认值:trust |
—auth-local=METHOD | 指定本地用户通过Unix域套接字连接数据库时的认证方法,即“pg_hba.conf”配置文件中local所在行的认证方法。 指定此参数则会覆盖-A参数的值。 | METHOD的取值: - trust
- reject
- md5(不安全的算法,为了兼容老版本而存在)
- sha256
- sm3
- peer(仅用于local模式)
默认值:trust |
-c, —enable-dcf | 设置安装的节点为DCF模式 | - |
[-D, —pgdata=]DATADIR | 指定数据目录的位置。 | DATADIR的取值:用户自定义。不能包括“|”, “;”,“&”,“$”,“<”,“>”,“`”,“\”,“!”这几个字符。 |
—nodename=NODENAME | 初始化的节点名称。 | 节点的命名需要遵守如下规范: - 节点名称必须为小写字母(a-z)、下划线()、特殊符号#、数字(0-9)。
- 节点名称必须以小写字母(a-z)或下划线()开头。
- 节点名称不能为空,且最大的长度为64个字符 。
|
-E, —encoding=ENCODING | 为新数据库设置编码格式。 | |
—dbcompatibility=DBCOMPATIBILITY | 指定兼容的数据库的类型。 | 取值范围:A、B、C、PG。分别表示兼容O、MY、TD和POSTGRES。 |
—lc-collate=LOCALE —lc-ctype=LOCALE —lc-messages=LOCALE —lc-monetary=LOCALE —lc-numeric=LOCALE —lc-time=LOCALE | 为新数据库设置指定范畴的区域。 | 各参数的取值必须是操作系统支持的值。不能包括不能包括“|”, “;”,“&”,“$”,“<”,“>”,“”,“\\”,“!”这几个字符。</p><div><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_nc48697637c684e3fbc74abf832cbcfc5"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_nc48697637c684e3fbc74abf832cbcfc5"></a>说明:<div><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_zh-cn_topic_0058968084_p783479093635"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_zh-cn_topic_0058968084_p783479093635"></a>如果用户在数据库安装的时候没有指定--lc-collate参数,则--lc-collate参数的默认值为C。</p></div></div></td></tr><tr><td headers="mcps1.2.4.1.1 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a61be6a616dbf499ebec62cdef807ee22"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a61be6a616dbf499ebec62cdef807ee22"></a>--no-locale</p></td><td headers="mcps1.2.4.1.2 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_zh-cn_topic_0058968084_p93658414042"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_zh-cn_topic_0058968084_p93658414042"></a>和--locale=C等价。</p></td><td headers="mcps1.2.4.1.3 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a02154014d8804f94b02a28b77103ec89"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a02154014d8804f94b02a28b77103ec89"></a>-</p></td></tr><tr><td headers="mcps1.2.4.1.1 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a1986cbe2b2054e9d949bd7d55ae635a5"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a1986cbe2b2054e9d949bd7d55ae635a5"></a>--pwfile=FILE</p></td><td headers="mcps1.2.4.1.2 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_zh-cn_topic_0058968084_p670015314042"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_zh-cn_topic_0058968084_p670015314042"></a>gs_initdb时从文件FILE中读取数据库中系统管理员的密码。该文件的第一行将被当作密码使用。</p></td><td headers="mcps1.2.4.1.3 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_ac7818172370b415c96f02f3eb914d9a1"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_ac7818172370b415c96f02f3eb914d9a1"></a>FILE可以是“相对路径+文件”的形式,也可以是“绝对路径+文件”的形式。相对路径是相对当前路径的。不能包括“|”, “;”,“&”,“$”,“<”,“>”,“ ”,“\”,“!”这几个字符。 |
-T, —text-search-config=CFG | 设置缺省的文本搜索方式。此配置项的值不会做正确性校验,配置成功后,有日志记录提醒当前配置项的取值。 | text-search-config的取值: 默认值:simple |
-U, —username=NAME | 选择数据库系统管理员的用户名。 | 取值范围:正常的数据库用户。不能包括“|”, “;”,“&”,“$”,“<”,“>”,“`”,“\”,“!”这几个字符。 默认值:运行gs_initdb的操作系统用户。 |
-W, —pwprompt | gs_initdb时强制交互式输入数据库管理员的密码。 | - |
-w, —pwpasswd=PASSWD | gs_initdb时通过命令行指定的管理员用户的密码,而不是交互式输入。 | 设置的密码要符合复杂度要求: - 最少包含8个字符;
- 不能和用户名和当前密码(ALTER)相同,或和当前密码反序;
- 至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-=+|[{}];:,<.>/?)四类字符中的三类字符。
|
-C, —enpwdfiledir=DIR | gs_initdb时指定的经AES128加密算法加密过的密码文件所在目录。gs_initdb会将该目录下密码文件进行解密,同时把解密后的密码做密码复杂度校验,校验通过的话会将此密码作为用户的密码。 说明: - 加密密码文件需使用gs_guc工具生成:gs_guc encrypt -K Gauss@123 -D Dir。
- 如果用户指定多个-w和-C参数,gs_initdb会将用户输入的最后一个-w或-C参数作为用户的需求,即输入密码的明文或经过AES128加密后的密码。
| 不能包括“|”, “;”,“&”,“$”,“<”,“>”,“”,“\\”,“!”这几个字符。</p></td></tr><tr><td headers="mcps1.2.4.1.1 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a3a039c42f6cc4b9f950bcb1f0f37fcd6"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a3a039c42f6cc4b9f950bcb1f0f37fcd6"></a>-X, --xlogdir=XLOGDIR</p></td><td headers="mcps1.2.4.1.2 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a006d0d95e29748c592fdd4cd2d275db7"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a006d0d95e29748c592fdd4cd2d275db7"></a>声明事务日志存储的目录。</p><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_aa7f9aced4b4f49529a06901c7baa05ba"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_aa7f9aced4b4f49529a06901c7baa05ba"></a>所设置的目录,必须满足运行openGauss的用户有读写权限。</p></td><td headers="mcps1.2.4.1.3 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_ad84c6e72a8014e17b4fc637e4744fcb0"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_ad84c6e72a8014e17b4fc637e4744fcb0"></a>只支持绝对路径。不能包括“|”, “;”,“&”,“$”,“<”,“>”,“ ”,“\”,“!”这几个字符。 |
-S, —security | 安全方式初始化数据库。 | 以-S方式初始化的数据库后,创建的数据库用户权限受到限制,默认不再具有public schema的使用权限。 |
表 2 不常用参数说明
参数 | 参数说明 | 取值范围 |
---|
-d, —debug | 从初始化后端打印调试输出信息。初始化后端是gs_initdb用于创建系统表的程序。 | - |
-L DIRECTORY | gs_initdb初始化数据库所需要的输入文件的路径。通常是不必要的。如果需要明确声明的话,程序会提示输入。因该参数意为创建指定配置信息的数据库,建议将share/postgresql下的所有涉及启动相关的子目录及文件全部复制过来,避免其他因素的影响。 | 初始化数据库所需的输入文件路径。不能包括“|”, “;”,“&”,“$”,“<”,“>”,“”,“\\”,“!”这几个字符。</p></td></tr><tr><td headers="mcps1.2.4.1.1 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_af0f24cb7bf5b4f1fa1ba5f81fdf53fa2"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_af0f24cb7bf5b4f1fa1ba5f81fdf53fa2"></a>-n, --noclean</p></td><td headers="mcps1.2.4.1.2 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a6e425272494742d5a19f77d99bf796b2"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a6e425272494742d5a19f77d99bf796b2"></a>不指定该参数时,当gs_initdb发现一些错误妨碍它完成创建数据库的工作时,它将在检测到不能结束工作之前将其创建的所有文件删除。这个选项禁止任何清理动作,因而对调试很有用。</p></td><td headers="mcps1.2.4.1.3 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a6812e35ed982480493c851dadf1d4e2e"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a6812e35ed982480493c851dadf1d4e2e"></a>-</p></td></tr><tr><td headers="mcps1.2.4.1.1 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_ab4b1d602d8e64fa7935cc69bdefd63dc"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_ab4b1d602d8e64fa7935cc69bdefd63dc"></a>-s, --show</p></td><td headers="mcps1.2.4.1.2 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a5011243f8d344adc983426a76fe5c054"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_a5011243f8d344adc983426a76fe5c054"></a>显示内部设置。</p></td><td headers="mcps1.2.4.1.3 " valign="top"><p><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_adb419280469547c786f06333a1d3f20a"></a><a name="zh-cn_topic_0287276015_zh-cn_topic_0237152414_zh-cn_topic_0059778168_adb419280469547c786f06333a1d3f20a"></a>-</p></td></tr><tr><td headers="mcps1.2.4.1.1 " valign="top"><p><a name="p133518103016"></a><a name="p133518103016"></a>-H, --host-ip</p></td><td headers="mcps1.2.4.1.2 " valign="top"><p><a name="p113512103016"></a><a name="p113512103016"></a>初始化openGauss节点node_host。</p></td><td headers="mcps1.2.4.1.3 " valign="top"><p><a name="p1397291616461"></a><a name="p1397291616461"></a>不能包括“|”, “;”,“&”,“$”,“<”,“>”,“ ”,“\”,“!”这几个字符。 |
-V, —version | 打印gs_initdb版本信息,然后退出。 | - |
-?, —help | 显示关于gs_initdb命令行参数的帮助信息,然后退出。 | - |
表 3 主备共享存储参数说明
参数 | 参数说明 | 取值范围 |
---|
—I | 指定节点ID,初始化共享存储参数ss_instance_id。 | [0-63], 需要从0开始指定。 |
—enable_dss | 开启ss_enable_dss功能。 | - |
—vgname | 卷组名。 | 数据类型:字符串 。 例如:一个卷组“+data”或者两个卷组中间用“,”连接“+data,+log”。 |
—socketpath | dss实例进程使用的socket文件路径。 | 支持绝对路径。 |
—dms_url | 节点之间mes通信url。 | 数据类型:字符串。格式为“节点id:ip:port,节点id:ip:port,…….” 例如:“0:127.0.0.1:1611,1:127.0.0.1:1711” |
说明: 共享存储下系统表存放在段页式中,unlogging表保持页式存储。