KingbaseES-initdb
简介
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 被调用。
- 点赞
- 收藏
- 关注作者
评论(0)