KingbaseES-initdb

举报
yd_214609086 发表于 2026/11/11 14:44:34 2026/11/11
【摘要】 简介initdb — 创建一个新的 KingbaseES 数据库集簇。initdb 创建一个新的 KingbaseES 数据库集簇。一个数据库集簇是由一个单一服务器实例管理的数据库的集合。一个数据库集簇的创建包括创建存放数据库数据的目录、生成共享目录表(属于整个集簇而不是任何特定数据库的表) 并且创建 template0、template1、security 和 test 数据库。当后来创建...

简介

initdb — 创建一个新的 KingbaseES 数据库集簇。

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

一个数据库集簇的创建包括创建存放数据库数据的目录、生成共享目录表(属于整个集簇而不是任何特定数据库的表) 并且创建 template0、template1、security 和 test 数据库。当后来创建一个新的数据库时,任何在 template1 数据库中的东西都会被复制 (因此,任何已安装在 template1 中的东西都会被自动地复制到后来创建的每一个数据库中)。test 数据库是便于用户、工具和第三方应用使用的默认数据库。

尽管 initdb 将尝试创建指定的数据目录,它可能没有权限(如果想要的数据目录的父目录被根用户拥有)。要在这样一种设置中初始化,作为 root 创建一个空数据目录, 然后使用 chown 将该目录赋予给数据库用户账户,再然后 su 成为该数据库用户并运行 initdb。

initdb 必须以将拥有该服务器进程的用户运行,因为该服务器需要访问initdb创建的文件和目录。因为该服务器不能作为 root 运行, 你不能以 root 运行 initdb(事实上它会拒绝这样做)。

由于安全原因,由 initdb 创建的新集簇默认将只能由集簇拥有者访问。--allow-group-access 选项允许与集簇拥有者同组的任何用户读取集簇中的文件。 这对非特权用户执行备份很有用。

initdb 初始化该数据库集簇的默认区域和字符集编码。 当一个数据库被创建时,其字符集编码、排序顺序(LC_COLLATE)和字符集类(LC_CTYPE,例如大写、小写、数字)可以被独立设置。initdb 为 template1 数据库 确定那些设置,它们将作为所有其他数据库的默认值。

要修改默认排序顺序或字符集类,使用 --lc-collate 和 --lc-ctype 选项。除 C 或 POSIX 之外的排序顺序会有性能损失。 由于这些原因,在运行 initdb 时选择正确的区域很重要。

余下的区域分类可以在服务器启动之后改变。你也可以使用 --locale 来为所有区域分类设置默认值,包括排序顺序和字符集类。 所有服务器区域值(lc_*)可以通过 SHOW ALL 显示。

要修改默认编码,使用 --encoding。

命令行参数

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

参数说明

-A authmethod --auth=authmethod

这个选项为本地用户指定在 sys_hba.conf 中使用的默认认证方法(host 和 local行)。initdb 将使用指定的认证方法为非复制连接以及复制连接填充 sys_hba.conf 项。

为了安装方便,scram-sha-256 是默认值。支持的加密认证算法 scram-sha-256 、md5 、sm3 、scram-sm3 、sm4 。

--auth-host=authmethod

这个选项为通过 TCP/IP 连接的本地用户指定在 sys_hba.conf 中使用的认证方法(host 行)。支持的加密认证算法 scram-sha-256 、md5 、sm3 、scram-sm3 、sm4 。

--auth-local=authmethod

这个选项为通过 Unix 域套接字连接的本地用户指定在 sys_hba.conf 中使用的认证方法(local行)。支持的加密认证算法 scram-sha-256 、md5 、sm3 、scram-sm3 、sm4 。

-D directory --kingbase_data=directory

这个选项指定数据库集簇应该存放的目录。这是 initdb 要求的唯一信息,但是你可以通过设定 KINGBASE_DATA 环境变量来避免书写它, 这很方便因为之后数据库服务器(kingbase)可以使用同一个变量来找到数据库目录。

-E encoding --encoding=encoding

选择模板数据库的编码。这也将是后来创建的任何数据库的默认编码,除非你覆盖它。 默认值来自于区域,或者如果该值不起作用则为 SQL_ASCII。KingbaseES 服务器所支持的字符集在 字符集 中描述。

-e algorithm --encrypt-algorithm=algorithm

这个选项指定数据库集簇使用的透明加密算法,默认为 SM4(可选 RC4)

-g --allow-group-access

允许与集簇拥有者同组的用户读取 initdb 创建的所有集簇文件。 Windows 会忽略此选项,因为它不支持 POSIX 样式的组权限。

-k --data-checksums

在数据页面上使用校验码来帮助检测 I/O 系统造成的损坏。启用校验码将会引起显著的性能损失。如果被设置,在所有数据库中会为所有对象计算校验码。 所有的检验故障均会在 sys_stat_database 视图中被报告。

--locale=locale

为数据库集簇设置默认区域。如果这个选项没有被指定,该区域将从 initdb 所运行的环境中继承。

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

和 --locale 相似,但是只在指定的分类中设置区域。

-m --dbmode=mode

设置 KingbaseES 初始化时的兼容模式。默认情况下(初始化时不设置此参数)为兼容 Oracle 模式。

支持以下参数值: pg 、 oracle 、 mysql 、 sqlserver 、 0 、 1 、 2 、3 ,其中

  • pg 和 0 表示兼容 PostgreSQL 模式。
  • oracle 和 1 表示兼容 Oracle 模式。
  • mysql 和 2 表示兼容 MySQL 模式。
  • sqlserver 和 3 表示兼容 SQLServer 模式。

注意:参数值 pg 、 oracle 、 mysql 和 sqlserver 不区分大小写。

--no-locale

等效于 --locale=C。

-N --no-sync

默认情况下,initdb 将等待所有文件被安全地写到磁盘之后再返回。这个选项会导致 initdb 不等待就返回, 后续操作系统如果崩溃可能损坏数据目录。这个选项不适用于生产环境。

--pwfile=filename

让 initdb 从一个文件读取数据库超级用户的口令。该文件的第一行被当作口令。

-S --sync-only

安全地把所有数据库文件写入到磁盘并退出。这个指令不会执行任何数据库初始化操作。

-T config --text-search-config=config

设置默认的文本搜索配置。详见参数 default_text_search_config。

-U username --username=username

选择数据库超级用户的用户名。这个的默认值是实际运行 initdb 的用户的名称。超级用户的名字是什么真的不重要, 但是你可以选择保留常用的名字 kingbase,即使操作系统的用户名不同。

-W --pwprompt

让 initdb 提示要求为数据库超级用户给予一个口令。如果你没有计划使用口令认证,这就不重要。否则在你设置一个口令之前你就无法使用口令认证。

-X directory --waldir=directory

这个选项指定预写式日志会被存储在哪个目录中。

--wal-segsize=size

设置 *WAL段尺寸*,以兆字节为单位。这是 WAL 日志中每个文件的尺寸。默认的尺寸为 16 兆字节。该值必须位于 2 的 1 次幂和 1024 次幂(兆字节)之间。 这个选项只能在初始化期间设置,并且之后不能更改。

调整这个值来控制 WAL 日志传送或者归档可能会有用。此外,在有大量 WAL 的数据库中,每个目录中数量巨大的 WAL 文件可能会成为性能和管理问题。 增加 WAL 文件尺寸将会降低 WAL 文件的数量。

--enable-ci

启用字符串大小写不敏感比较,取值为 on 或 off 。设置此参数为 on 则以大小写不敏感的方式进行字符串比较。

-t --aud-tblspc-enc

允许审计表空间加密

-K KEY --enckey=KEY

设置审计表空间加密密钥

-M --passwordcheck

允许开启密码复杂度检查

-I --identity-pwdexp

允许开启用户密码过期检查

--saoname=newsaoname

对数据库审计员重命名,未设置时默认为 sao 。

--ssoname=newssoname

对数据库安全员重命名,未设置时默认为 sso 。

--block-size=size

设置表块大小,以千字节为单位。默认的尺寸为 8 千字节。该值必须是 2 的整数次幂,并且在 1 到 32 之间。这个选项只能在初始化期间设置,并且之后不能更改。

其他较少使用的选项:

-d --debug

打印来自引导后端的调试输出以及详细消息。引导后端被程序 initdb 用来创建目录表。这个选项会生成大量详细流程输出。

-L directory

指定 initdb 应从哪里寻找输入文件来初始化数据库集簇。通常无需设置。需要显式地指定它们的位置时,会进行告知。

-n --no-clean

默认情况下,当 initdb 确定已发生错误阻止它完整地创建数据库集簇时,会移除本次执行创建的任何文件。这个选项会禁止这种移除,用于调试场景。

-a --checksum-algorithm=ALOGRITHM

参数开启数据页校验并指定校验算法,取值可为 crc、sm3、sm3_hmac。

-h --hmac-key = KEY

当开启 -a 参数并指定页校验算法为 sm3_hmac 时可用,用来设置 sm3_hmac 的秘钥。参数格式是长度为 64 字节的 ASCII 码可见字符。

-c --config-protect

指定参数后,生成的配置文件为加密配置。默认情况下生成明文配置文件。

--encrypt-device-lib --encrypt-driver-lib --encrypt-maxkey-len --encrypt-align-num 以上四个参数分别代表加密设备库、加密驱动程序库、加密最大密钥长度、加密算法对齐数。在-e参数指定为非本地算法(sm4/rc4)时生效, 且 -e 参数指定为非本地算法时必须指定这四个参数。当 -e 参数指定为本地算法时,如果指定了这四个参数,将提示忽略参数输入。

--init-audit-rules

启动初始化审计规则。

--amm=1

指定该参数为1后,可以在用户登录认证阶段禁用不安全的认证方式。该参数默认为0。

其他选项:

-V --version

打印 initdb 版本并退出。

-? --help

显示有关 initdb 命令行参数的帮助并退出。

-s --show

显示内部参数。

环境变量

KINGBASE_DATA

指定数据库集簇应该被存放的目录,可以使用 -D 选项覆盖。

SYS_COLOR

指定是否在诊断消息中使用颜色。可能取值为 always、auto 和 never。

TZ

指定创建的数据集簇的默认时区。值应该是一个完整的时区名称。

和大部分其他 KingbaseES 工具相似,这个工具也使用 libkci。

备注

initdb 可以通过 sys_ctl initdb 被调用。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。