文档下载建议反馈入口

  • kwbase start
  • kwbase start-single-replica
  • kwbase start-single-node
  • kwbase init
  • kwbase cert
  • kwbase sql
  • kwbase auth-session
  • kwbase node
  • kwbase gen
  • kwbase version
  • kwbase help

kwbase 命令参考

kwbase start

功能描述

kwbase start 命令用于启动 KaiwuDB 节点。

命令格式

./kwbase start [flags]

参数说明

参数说明
--advertise-addr节点使用的 IP 地址或主机名,与其他节点通过该地址进行通信,采用 <addr/host>[:<port>] 格式。如果是主机名,则要求能正常解析地址。如果是 IP 地址,则要求能正常访问 IP 地址。对于 IPv6 地址,使用 [...] 表示法,例如:[::1]:26257[fe80::f6f2:::]:26257。如未指定,则默认使用 listen-addr 参数的取值。如只指定部分参数值,未指定的部分则使用 listen-addr 参数中相同部分的取值。参数的效果取决于与 --listen-addr 参数的组合使用。例如,如果端口号与 --listen-addr 参数中使用的端口号不同,则需要设置端口转发。
默认值:--listen-addr 参数的取值。
--attrs有序的、使用冒号(:)隔开的节点属性列表。节点属性可以是任意字符串,用于指定机器的能力。机器的能力可能包括专有硬件或内核数量(例如 gpu、x16c)。例如,--attrs=x16c:gpu
--background在后台启动 KaiwuDB 节点。该功能与在直接在命令行末尾添加 & 类似。但是,当使用 --background 选项启动 KaiwuDB 节点时,直到 KaiwuDB 节点准备好接受请求后,控制权才会返回给 shell。
说明
--background 参数适用于短时间运行和测试服务的场景。目前,由于无法从当前终端完全分离,不推荐在长时间的服务运行中使用该参数。这种情况下,推荐使用服务管理器或者 daemon(8) 等工具。
--buffer-pool-sizeAE executor 缓冲池大小。
默认值:4096
--cache缓存大小,多个物理存储设备共享使用。参数值支持准确的内存值(单位:字节)、带小数点的十进制数值(转换为百分比数值)、百分比值:
- --cache=.25
- --cache=25%
- --cache=1000000000:1000000000 字节
- --cache=1GB:1000000000 字节
- --cache=1GiB:1073741824 字节
默认值:128 MiB
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
-h, --helpkwbase start 命令的帮助信息。
--http-addr对外开放的 Admin 界面的 IP 地址或主机名。IPv6 地址使用 [...] 表示法,例如:[::1]:8080[fe80::f6f2:::]:8080
默认值:与 --listen-addr 参数一致,端口为 8080
--import-path导入文件所在的路径。
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。
-j, --join节点连接集群的地址。初始化时,需要指定集群 3-5 个节点的地址和端口,然后执行 kwbase init 命令启动集群。如未指定该参数时,则启动一个单节点集群。此时,无需执行 kwbase init 命令。如需向已有集群添加新节点,支持使用该参数指定集群 3-5 个节点的地址和端口。
--listen-addr侦听来自其他节点和客户端连接的 IP 地址/主机名和端口。IPv6 地址使用 [...] 表示法,例如:[::1][fe80::f6f2:::]。参数的效果取决于与 --advertise-addr 参数的组合使用。如未指定 --advertise-addr 参数,使用 canonical hostname 与其他节点进行通信。
默认值:侦听所有 IP 地址,端口为 26257
--locality有序的、使用逗号(,)隔开的键值对列表,用于描述机器拓扑结构,可能包括国家、数据中心、机架等信息。系统自动复制数据,以最大程度地增加每个层级的多样性。层级的顺序用于确定多样性的优先级,因此包容性更大的本地信息(例如国家)应该在包容性较小的本地信息(例如数据中心)之前。所有节点的层级和顺序必须相同,包含更多层级比包含较少层级更好。例如 --locality=country=cn,region=east,datacenter=shanghai,rack=01
--log-dir启动日志功能并在指定的目录下记录日志。--log-dir 配置为空字符串(--log-dir="")时,表示关闭日志功能。
--log-dir-max-size所有日志文件大小达到阈值以后,KaiwuDB 将删除最早的日志。
默认值:100 MiB
--log-file-verbosity将指定日志级别及以上的日志输出到日志文件,例如:--log-file-verbosity=WARNING
默认值:INFO
--max-disk-temp-storage磁盘上可用于存储超出内存预算的 SQL 查询临时数据的最大存储空间。这可确保 JOIN、SORT 和其他内存密集型 SQL 操作能够将中间结果溢出到磁盘。该值可以是百分数或者准确的值(单位:字节),例如:
- --max-disk-temp-storage=.25
- --max-disk-temp-storage=25%
- --max-disk-temp-storage=10000000000:1000000000 字节
- --max-disk-temp-storage=1GB:1000000000 字节
- --max-disk-temp-storage=1GiB:1073741824 字节。
这些临时文件存储在 --store 参数取值的第一个存储目录的子目录中。
默认值:32GiB
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--max-offset群集允许的最大时钟偏移。如果观察到的时钟偏移超过此限制,服务器将会崩溃,以最大限度降低读取不一致数据的可能性。增加此值会延长故障恢复时间和基于不确定性的读取重启频率。请注意,此值必须在集群的所有节点上保持一致。如需更改此值,必须同时停止集群中的所有节点,然后使用新值重新启动。
默认值:500ms
--max-sql-memorySQL 查询缓存的临时数据支持使用的最大内存空间,包括准备好的查询和在查询执行期间中间数据行。该值可以是百分数或者准确的值(单位:字节),例如:
- --max-sql-memory=.25
- --max-sql-memory=25%
- --max-sql-memory=10000000000:1000000000 字节
- --max-sql-memory=1GB:1000000000 字节
- --max-sql-memory=1GiB:1073741824 字节。
这些临时文件存储在 --temp-dir 文件夹当中。
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--restful-portRESTful 端口,取值范围为 [0, 65535]
默认值:8080
--restful-timeoutRESTful API 超时时间。
默认值:60
--sql-audit-dir安全审计日志的位置。默认情况下,SQL 审核日志与 KaiwuDB 生成的其他日志写入同一目录。
-s, --store存储设备路径,用于存储数据库数据。支持同时指定设备属性和空间大小。若使用多个设备存储数据,则使用 --store=/mnt/ssd01 --store=/mnt/ssd02 方式。
--thread-pool-sizeAE executor 线程池大小。
默认值:10
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。
--upgrade-complete节点升级完成。

使用举例

以下示例开启一个多节点 KaiwuDB 集群。

  • 安全模式

    以下示例假设已为 root 用户生成证书。有关生成证书的详细信息,参见 kwbase cert 命令的使用举例章节。

    • TLS 安全模式

      ./kwbase start \
      --certs-dir=/root/certs \
      --store=/opt/node1 \
      --advertise-addr=<node1_address>:26257 \
      --listen-addr=<node1_address>:26257 \
      --http-addr=<node1_address>:8080 \
      --join=<node1_address>,<node2_address>,<node3_address> \
      --cache=.25 \
      --max-sql-memory=.25 \
      --background
      
    • TLCP 安全模式

      ./kwbase start \
      --certs-dir=certs \
      --store=/opt/store1 \
      --advertise-addr=<node1_address>:26257 \
      --listen-addr=<node1_address>:26257 \
      --http-addr=<node1_address>:8080 \
      --background \
      --tlcp
      
  • 非安全模式

    1. 将 KaiwuDB 二进制文件,例如 kaiwudb-2.1.0-centos-amd64,复制到 PATH 路径下。

      示例:

      cp -i kaiwudb-2.1.0-centos-amd64/kaiwudb /usr/local/bin/kaiwudb
      
    2. 启动 KaiwuDB 服务。

      ./kwbase start \
      --insecure \
      --store=/opt/node1 \
      --advertise-addr=<node1_address>:26257 \
      --listen-addr=<node1_address>:26257 \
      --http-addr=<node1_address>:8080 \
      --join=<node1_address>,<node2_address>,<node3_address> \
      --cache=.25 \
      --max-sql-memory=.25 \
      --background
      

kwbase start-single-replica

功能描述

kwbase start-single-replica 命令用于启动一个单副本节点。

命令格式

./kwbase start-single-replica [flags]

参数说明

参数说明
--advertise-addr节点使用的 IP 地址或主机名,与其他节点通过该地址进行通信,采用 <addr/host>[:<port>] 格式。如果是主机名,则要求能正常解析地址。如果是 IP 地址,则要求能正常访问 IP 地址。对于 IPv6 地址,使用 [...] 表示法,例如:[::1]:26257[fe80::f6f2:::]:26257。如未指定,则默认使用 listen-addr 参数的取值。如只指定部分参数值,未指定的部分则使用 listen-addr 参数中相同部分的取值。参数的效果取决于与 --listen-addr 参数的组合使用。例如,如果端口号与 --listen-addr 参数中使用的端口号不同,则需要设置端口转发。
默认值:--listen-addr 参数的取值。
--attrs有序的、使用冒号(:)隔开的节点属性列表。节点属性可以是任意字符串,用于指定机器的能力。机器的能力可能包括专有硬件或内核数量(例如 gpu、x16c)。例如,--attrs=x16c:gpu
--background在后台启动 KaiwuDB 节点。该功能与在直接在命令行末尾添加 & 类似。但是,当使用 --background 选项启动 KaiwuDB 节点时,直到 KaiwuDB 节点准备好接受请求后,控制权才会返回给 shell。
说明
--background 参数适用于短时间运行和测试服务的场景。目前,由于无法从当前终端完全分离,不推荐在长时间的服务运行中使用该参数。这种情况下,推荐使用服务管理器或者 daemon(8) 等工具。
--buffer-pool-sizeAE executor 缓冲池大小。
默认值:4096
--cache缓存大小,多个物理存储设备共享使用。参数值支持准确的内存值(单位:字节)、带小数点的十进制数值(转换为百分比数值)、百分比值:
- --cache=.25
- --cache=25%
- --cache=1000000000:1000000000 字节
- --cache=1GB:1000000000 字节
- --cache=1GiB:1073741824 字节
默认值:128 MiB
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
-h, --helpkwbase start-single-replica 命令的帮助信息。
--http-addr对外开放的 Admin 界面的 IP 地址或主机名。IPv6 地址使用 [...] 表示法,例如:[::1]:8080[fe80::f6f2:::]:8080
默认值:与 --listen-addr 参数一致,端口为 8080
--import-path导入文件所在的路径。
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。
-j, --join节点连接集群的地址。初始化时,需要指定集群 3-5 个节点的地址和端口,然后执行 kwbase init 命令启动集群。如未指定该参数时,则启动一个单节点集群。此时,无需执行 kwbase init 命令。如需向已有集群添加新节点,支持使用该参数指定集群 3-5 个节点的地址和端口。
--listen-addr侦听来自其他节点和客户端连接的 IP 地址/主机名和端口。IPv6 地址使用 [...] 表示法,例如:[::1][fe80::f6f2:::]。参数的效果取决于与 --advertise-addr 参数的组合使用。如未指定 --advertise-addr 参数,使用 canonical hostname 与其他节点进行通信。
默认值:侦听所有 IP 地址,端口为 26257
--locality有序的、使用逗号(,)隔开的键值对列表,用于描述机器拓扑结构,可能包括国家、数据中心、机架等信息。系统自动复制数据,以最大程度地增加每个层级的多样性。层级的顺序用于确定多样性的优先级,因此包容性更大的本地信息(例如国家)应该在包容性较小的本地信息(例如数据中心)之前。所有节点的层级和顺序必须相同,包含更多层级比包含较少层级更好。例如 --locality=country=cn,region=east,datacenter=shanghai,rack=01
--log-dir启动日志功能并在指定的目录下记录日志。--log-dir 配置为空字符串(--log-dir="")时,表示关闭日志功能。
--log-dir-max-size所有日志文件大小达到阈值以后,KaiwuDB 将删除最早的日志。
默认值:100 MiB
--log-file-verbosity将指定日志级别及以上的日志输出到日志文件,例如:--log-file-verbosity=WARNING
默认值:INFO
--max-offset群集允许的最大时钟偏移。如果观察到的时钟偏移超过此限制,服务器将会崩溃,以最大限度降低读取不一致数据的可能性。增加此值会延长故障恢复时间和基于不确定性的读取重启频率。请注意,此值必须在集群的所有节点上保持一致。如需更改此值,必须同时停止集群中的所有节点,然后使用新值重新启动。
默认值:500ms
--max-sql-memorySQL 查询缓存的临时数据支持使用的最大内存空间,包括准备好的查询和在查询执行期间中间数据行。该值可以是百分数或者准确的值(单位:字节),例如:
- --max-sql-memory=.25
- --max-sql-memory=25%
- --max-sql-memory=10000000000:1000000000 字节
- --max-sql-memory=1GB:1000000000 字节
- --max-sql-memory=1GiB:1073741824 字节。
这些临时文件存储在 --temp-dir 文件夹当中。
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--restful-portRESTful 端口,取值范围为 [0, 65535]
默认值:8080
--restful-timeoutRESTful API 超时时间。
默认值:60
--sql-audit-dir安全审计日志的位置。默认情况下,SQL 审核日志与 KaiwuDB 生成的其他日志写入同一目录。
-s, --store存储设备路径,用于存储数据库数据。支持同时指定设备属性和空间大小。若使用多个设备存储数据,则使用 --store=/mnt/ssd01 --store=/mnt/ssd02 方式。
--thread-pool-sizeAE executor 线程池大小。
默认值:10
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。
--upgrade-complete节点升级完成。

使用举例

以下示例开启一个单副本节点。

./kwbase start-single-replica \
--insecure \
--store=/opt/node1 \
--advertise-addr=<node1_address>:26257 \
--listen-addr=<node1_address>:26257 \
--http-addr=<node1_address>:8080 \
--join=<node1_address> 

kwbase start-single-node

功能描述

kwbase start-single-node 命令用于启动一个单节点集群。

命令格式

./kwbase start-single-node [flags]

参数说明

参数说明
--attrs有序的、使用冒号(:)隔开的节点属性列表。节点属性可以是任意字符串,用于指定机器的能力。机器的能力可能包括专有硬件或内核数量(例如 gpu、x16c)。例如,--attrs=x16c:gpu
--background在后台启动 KaiwuDB 节点。该功能与在直接在命令行末尾添加 & 类似。但是,当使用 --background 选项启动 KaiwuDB 节点时,直到 KaiwuDB 节点准备好接受请求后,控制权才会返回给 shell。
说明
--background 参数适用于短时间运行和测试服务的场景。目前,由于无法从当前终端完全分离,不推荐在长时间的服务运行中使用该参数。这种情况下,推荐使用服务管理器或者 daemon(8) 等工具。
--buffer-pool-sizeAE executor 缓冲池大小。
默认值:4096
--cache缓存大小,多个物理存储设备共享使用。参数值支持准确的内存值(单位:字节)、带小数点的十进制数值(转换为百分比数值)、百分比值:
- --cache=.25
- --cache=25%
- --cache=1000000000:1000000000 字节
- --cache=1GB:1000000000 字节
- --cache=1GiB:1073741824 字节
默认值:128 MiB
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
-h, --helpkwbase start-single-node 命令的帮助信息。
--http-addr对外开放的 Admin 界面的 IP 地址或主机名。IPv6 地址使用 [...] 表示法,例如:[::1]:8080[fe80::f6f2:::]:8080
默认值:与 --listen-addr 参数一致,端口为 8080
--import-path导入文件所在的路径。
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。
--listen-addr侦听来自其他节点和客户端连接的 IP 地址/主机名和端口。IPv6 地址使用 [...] 表示法,例如:[::1][fe80::f6f2:::]。参数的效果取决于与 --advertise-addr 参数的组合使用。如未指定 --advertise-addr 参数,使用 canonical hostname 与其他节点进行通信。
默认值:侦听所有 IP 地址,端口为 26257
--locality有序的、使用逗号(,)隔开的键值对列表,用于描述机器拓扑结构,可能包括国家、数据中心、机架等信息。系统自动复制数据,以最大程度地增加每个层级的多样性。层级的顺序用于确定多样性的优先级,因此包容性更大的本地信息(例如国家)应该在包容性较小的本地信息(例如数据中心)之前。所有节点的层级和顺序必须相同,包含更多层级比包含较少层级更好。例如 --locality=country=cn,region=east,datacenter=shanghai,rack=01
--log-dir启动日志功能并在指定的目录下记录日志。--log-dir 配置为空字符串(--log-dir="")时,表示关闭日志功能。
--log-dir-max-size所有日志文件大小达到阈值以后,KaiwuDB 将删除最早的日志。
默认值:100 MiB
--log-file-verbosity将指定日志级别及以上的日志输出到日志文件,例如:--log-file-verbosity=WARNING
默认值:INFO
--max-disk-temp-storage磁盘上可用于存储超出内存预算的 SQL 查询临时数据的最大存储空间。这可确保 JOIN、SORT 和其他内存密集型 SQL 操作能够将中间结果溢出到磁盘。该值可以是百分数或者准确的值(单位:字节),例如:
- --max-disk-temp-storage=.25
- --max-disk-temp-storage=25%
- --max-disk-temp-storage=10000000000:1000000000 字节
- --max-disk-temp-storage=1GB:1000000000 字节
- --max-disk-temp-storage=1GiB:1073741824 字节。
这些临时文件存储在 --store 参数取值的第一个存储目录的子目录中。
默认值:32GiB
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--max-sql-memorySQL 查询缓存的临时数据支持使用的最大内存空间,包括准备好的查询和在查询执行期间中间数据行。该值可以是百分数或者准确的值(单位:字节),例如:
- --max-sql-memory=.25
- --max-sql-memory=25%
- --max-sql-memory=10000000000:1000000000 字节
- --max-sql-memory=1GB:1000000000 字节
- --max-sql-memory=1GiB:1073741824 字节。
这些临时文件存储在 --temp-dir 文件夹当中。
说明
如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。
--restful-portRESTful 端口,取值范围为 [0, 65535]
默认值:8080
--restful-timeoutRESTful API 超时时间。
默认值:60
--sql-audit-dir安全审计日志的位置。默认情况下,SQL 审核日志与 KaiwuDB 生成的其他日志写入同一目录。
-s, --store存储设备路径,用于存储数据库数据。支持同时指定设备属性和空间大小。若使用多个设备存储数据,则使用 --store=/mnt/ssd01 --store=/mnt/ssd02 方式。
--thread-pool-sizeAE executor 线程池大小。
默认值:10
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。
--upgrade-complete节点升级完成。

使用举例

以下示例开启一个单节点 KaiwuDB 集群。

  • 安全模式

    以下示例假设已为 root 用户生成证书。有关生成证书的详细信息,参见 kwbase cert 命令的使用举例章节。

    • TLS 安全模式

      ./kwbase start-single-node \ 
      --certs-dir=/root/certs \ 
      --listen-addr=0.0.0.0:26257 \
      --advertise-addr=127.0.0.1:26257 \
      --http-addr=0.0.0.0:8080 \
      --store=/kaiwudb/deploy/kaiwudb
      
    • TLCP 安全模式

      ./kwbase start-single-node \
      --certs-dir=/root/certs \
      --listen-addr=0.0.0.0:26257 \
      --advertise-addr=127.0.0.1:26257 \
      --http-addr=0.0.0.0:8080 \
      --store=/kaiwudb/deploy/kaiwudb \
      --tlcp
      
  • 非安全模式

    ./kwbase start-single-node \
    --insecure \
    --listen-addr=0.0.0.0:26257 \
    --advertise-addr=127.0.0.1:26257 \
    --http-addr=0.0.0.0:8080 \
    --store=/kaiwudb/deploy/kaiwudb
    

kwbase init

功能描述

kwbase init 命令用于初始化 KaiwuDB 集群。

命令格式

./kwbase init [flags]

参数说明

参数说明
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
-h, --helpkwbase init 命令的帮助信息。
--host连接的 KaiwuDB 节点。支持 IP 地址/主机名,采用 <addr/host>[:<port>] 格式。如果未指定端口号,默认使用 26257。对于 IPv6 地址,使用 [...] 表示法,例如:[::1]:26257[fe80::f6f2:::]:26257
环境变量:KWBASE_HOST
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。
--url连接 URL,采用 postgresql://[user[:passwd]@]host[:port]/[db][?parameters...] 格式,例如 "postgresql://myuser@localhost:26257/mydb"。如未指定,使用 hostportuserdatabseinsecurecerts-dir 等连接参数。
环境变量:KWBASE_URL

使用举例

以下示例假设已启动 KaiwuDB。有关详细信息,参见 kwbase start 命令的使用举例章节。

用户可以在集群的任意节点执行 kwbase init 命令。

./kwbase init \
--certs-dir=/root/certs \
--host=<address_of_any_node>

kwbase cert

功能描述

kwbase cert 命令用于生成 Certificate Authority(CA)、节点和客户端证书。

命令格式

./kwbase cert <subcommand> [flags]
  • create-ca

    ./kwbase cert create-ca --certs-dir=<path-to-kaiwudb-certs-dir> --ca-key=<path-to-ca-key> [flags]
    
  • create-client-ca

    ./kwbase cert create-client-ca --certs-dir=<path-to-kaiwudb-certs-dir> --ca-key=<path-to-client-ca-key> [flags]
    
  • create-node

    ./kwbase cert create-node --certs-dir=<path-to-kaiwudb-certs-dir> --ca-key=<path-to-ca-key> <host1> <host2> ... <hostN> [flags]
    
  • create-client

    ./kwbase cert create-client --certs-dir=<path-to-kaiwudb-certs-dir> --ca-key=<path-to-ca-key> <username> [flags]
    
  • list

    ./kwbase cert list [flags]
    

子命令

子命令说明
create-ca生成 CA 证书和密钥。
create-client-ca生成客户端 CA 证书和密钥。
create-node生成节点证书和密钥。
create-client生成客户端证书和密钥。
list查看 --cert-dir 目录中的证书。

参数说明

参数说明
支持的命令
--allow-ca-key-reuse使用已存在的 CA 密钥。- kwbase cert create-ca
- kwbase cert create-client-ca
--ca-keyCA 密钥的路径。
环境变量:KWBASE_CA_KEY
- kwbase cert create-ca
- kwbase cert create-client-ca
- kwbase cert create-node
- kwbase cert create-client
--cert-principal-map使用逗号(,)隔开的 <cert-principal>:<db-principal> 映射列表,允许将证书中的主体映射到数据库主体,如节点、root 或任何 SQL 用户。这适用于证书管理系统对证书中的 Subject.CommonNameSubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 root 等 CommonName)。如果同一证书主体有多个映射项,列表中最后指定的映射项优先生效。映射中未指明的主体将按原样传递。如果数据库主体的名称包含在映射的 CommonName 或 DNS 类型的 SubjectAlternateName 字段中,则允许证书对数据库主体进行身份验证。- kwbase cert create-ca
- kwbase cert create-client-ca
- kwbase cert create-node
- kwbase cert create-client
- kwbase cert list
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
- kwbase cert create-ca
- kwbase cert create-client-ca
- kwbase cert create-node
- kwbase cert create-client
- kwbase cert list
-h, --help命令的帮助信息。- kwbase cert
- kwbase cert create-ca
- kwbase cert create-client-ca
- kwbase cert create-node
- kwbase cert create-client
- kwbase cert list
--key-sizeCA、节点、客户端证书密钥的大小(单位:比特)。
默认值:2048 比特
- kwbase cert create-ca
- kwbase cert create-client-ca
- kwbase cert create-node
- kwbase cert create-client
--lifetime证书的生命周期。
默认值:43920h0m0s
- kwbase cert create-ca
- kwbase cert create-client-ca
- kwbase cert create-node
- kwbase cert create-client
--overwrite覆写存在的证书和密钥文件。- kwbase cert create-ca
- kwbase cert create-client-ca
- kwbase cert create-node
- kwbase cert create-client
--tlcp生成 TLCP 证书。kwbase cert

使用举例

  1. 新建 /opt/certs/opt/my-safe-directory 目录。

    mkdir /opt/certs
    mkdir /opt/my-safe-directory
    
    • /opt/certs:用于存放生成的 CA 证书以及所有节点和客户端的证书和密钥文件,其中部分文件会传输到节点机器上。
    • /opt/my-safe-directory:用于存放生成的 CA 密钥文件,节点和用户创建证书和密钥的时候使用。
  2. 创建 CA 证书和密钥。

    ./ kwbase cert create-ca \
    --certs-dir=/opt/certs \
    --ca-key=/opt/my-safe-directory/ca.key
    

    建议备份生成的 CA 证书和密钥对。

  3. 为集群的第一个节点创建证书和密钥。

    ./kwbase cert create-node <IP_address_of_node1> [<node1_hostname>]   [<other_common_names_for_ node1>] localhost 127.0.0.1 [<load_balancer_IP_address>]   [<load_balancer hostname>] [<other_common_names_for_load_balancer>] \  
    --certs-dir=/opt/certs \
    --ca-key=/opt/my-safe-directory/ca.key
    

    说明

    节点的 IP 地址为生成证书的内网或外网 IP 地址。示例:

    ./kwbase cert create-node 117.73.10.12 localhost   127.0.0.1 \
    --certs-dir=/opt/certs \
    --ca-key=/opt/my-safe-directory/ca.key
    
  4. 将 CA 证书、节点证书和密钥传送到第一个节点。

    ssh <username>@<node1_address>   "mkdir /root/certs"
    scp /opt/certs/ca.crt /opt/certs/node.crt /opt/certs/node.key   <username>@<node1_address>:/root/certs
    
  5. 删除本地的节点证书和密钥。

    rm /opt/certs/node.crt /opt/certs/node.key
    
  6. 重复第 3-5 步,为集群其他节点创建证书和密钥。

  7. root 用户创建客户端证书和密钥。

    ./kwbase cert create-client root   \
    --certs-dir=/opt/certs \
    --ca-key=/opt/my-safe-directory/ca.key
    
  8. 将证书和密钥传输到执行 KaiwuDB 命令的机器上,该机器可以是集群内或集群外的节点。拥有证书的机器能够使用 root 账户执行 KaiwuDB 命令,并可以通过该节点访问集群。

    ssh <username>@<workload address>   "mkdir /root/certs"
    scp /opt/certs/ca.crt /opt/certs/client.root.crt   /opt/certs/client.root.key <username>@<workload   address>:/root/certs
    

    说明

    如果以后需要在其它机器上运行 KaiwuDB 客户端命令,需要将 root 用户的证书和密钥复制到该节点。只有拥有 root 用户证书和密钥的节点,才能够访问集群。

kwbase sql

功能描述

kwbase sql 命令用于开启交互式 SQL Shell。

命令格式

./kwbase sql [flags]

参数说明

参数说明
--cert-principal-map使用逗号(,)隔开的 <cert-principal>:<db-principal> 映射列表,允许将证书中的主体映射到数据库主体,如节点、root 或任何 SQL 用户。这适用于证书管理系统对证书中的 Subject.CommonNameSubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 root 等 CommonName)。如果同一证书主体有多个映射项,列表中最后指定的映射项优先生效。映射中未指明的主体将按原样传递。如果数据库主体的名称包含在映射的 CommonName 或 DNS 类型的 SubjectAlternateName 字段中,则允许证书对数据库主体进行身份验证。
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
-d--database待连接数据库的名称。
环境变量:KWBASE_DATABASE
--debug-sql-cli用于简化 SQL CLI,以便于排查 KaiwuDB 问题。该方式回显已发送的 SQL 语句,从提示符中移除数据库名称和事务状态,并强制其行为独立于当前事务状态。
--echo-sql显示命令行工具隐式发送的 SQL 语句。
-e--execute使用 CLI 工具执行 SQL 语句,然后退出。支持多次配置此参数。每个值支持包含多个用分号(;)隔开的语句。如果任何语句出现错误,将以非零状态码退出 CLI 命令行。每个 SQL 语句的结果都会打印到标准输出上。
--format选择如何在结果中显示表格行。支持以下取值:
- tsv
- csv
- table
- records
- sql
- raw
- html
如未指定,对于非交互式会话,默认为 tsv;对于交互式会话,默认为 table
默认值:table
-h, --helpkwbase sql 命令的帮助信息。
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。
--safe-updates禁用可能产生意外副作用的 SQL 语句。例如,未指定 WHERE 子句的 DELETEUPDATE 语句。默认情况下,开启该配置(true)。用户可以用 SET sql_safe_updates = FALSE 来禁用此配置。
--set用于在运行 SQL Shell 之前,设置客户端配置参数。
--ssl-version使用 TLCP 安全启动客户端。
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。
--url连接 URL,采用 postgresql://[user[:passwd]@]host[:port]/[db][?parameters...] 格式,例如 "postgresql://myuser@localhost:26257/mydb"。如未指定,使用 hostportuserdatabseinsecurecerts-dir 等连接参数。
环境变量:KWBASE_URL
-u, --userKaiwuDB 数据库用户名。
环境变量:KWBASE_USER
--watch按照指定的时间间隔重复执行 --execute 参数指定的 SQL 语句。如果某次 SQL 语句执行失败,客户端将停止监控。

使用举例

  • 安全模式

    以下示例假设已为 root 用户生成证书。有关生成证书的详细信息,参见 kwbase cert 命令的使用举例章节。

    • TLS 安全模式

      ./kwbase sql --certs-dir=certs --host=<address_of_any node>
      
    • TLCP 安全模式

      ./kwbase sql --certs-dir=certs --host=<address_of_any node> --ssl-version=TLCPv1.1
      
  • 非安全模式

    ./kwbase sql --insecure --host=<address_of_any_node>
    

kwbase auth-session

功能描述

kwbase auth-session 命令用于创建和管理 HTTP 接口的会话和认证令牌。

所需权限

  • 非三权分立模式下,用户是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。

命令格式

./kwbase auth-session <subcommand> [flags]
  • login

    ./kwbase auth-session login <session-username> [flags]
    
  • logout

    ./kwbase auth-session logout <session-username> [flags]
    
  • list

    ./kwbase auth-session list [flags]
    

子命令

子命令说明
login为指定用户创建 HTTP 会话和令牌。
logout撤回之前为指定用户创建的所有 HTTP 会话令牌。
list查看当前活跃的 HTTP 会话。

参数说明

参数说明
支持的命令
--cert-principal-map使用逗号(,)隔开的 <cert-principal>:<db-principal> 映射列表,允许将证书中的主体映射到数据库主体,如节点、root 或任何 SQL 用户。这适用于证书管理系统对证书中的 Subject.CommonNameSubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 root 等 CommonName)。如果同一证书主体有多个映射项,列表中最后指定的映射项优先生效。映射中未指明的主体将按原样传递。如果数据库主体的名称包含在映射的 CommonName 或 DNS 类型的 SubjectAlternateName 字段中,则允许证书对数据库主体进行身份验证。- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
--echo-sql显示命令行工具隐式发送的 SQL 语句。- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
--expire-after新创建的 HTTP 认证令牌的持续时间。超过该时间后令牌将过期。使用数值指定持续时间,并在数值后附加一个或多个 hms 来表示小时、分钟和秒的时长。
默认值:1h0m0s
kwbase auth-session login
--format选择如何在结果中显示表格行。支持以下取值:
- tsv
- csv
- table
- records
- sql
- raw
- html
如未指定,对于非交互式会话,默认为 tsv;对于交互式会话,默认为 table
默认值:table
- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
-h, --help命令的帮助信息。- kwbase auth-session
- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
--only-cookie将命令行回显中只显示新创建的 HTTP 认证令牌(即 “cookie”),适用于向其他命令输出。kwbase auth-session login
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
--url连接 URL,采用 postgresql://[user[:passwd]@]host[:port]/[db][?parameters...] 格式,例如 "postgresql://myuser@localhost:26257/mydb"。如未指定,使用 hostportuserdatabseinsecurecerts-dir 等连接参数。
环境变量:KWBASE_URL
- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list
-u, --userKaiwuDB 数据库用户名。
环境变量:KWBASE_USER
- kwbase auth-session login
- kwbase auth-session logout
- kwbase auth-session list

返回字段说明

auth-session login

字段说明
username认证用户的用户名。
session ID为指定用户创建的 HTTP 接口的会话 ID。
authentication cookie用于用户通过 CLI 工具或其他工具访问 HTTP 接口时进行身份认证时使用的认证令牌。

auth-session logout

字段说明
username撤销会话的用户的用户名。
session ID为指定用户创建的 HTTP 接口的会话 ID。
revoked撤销指定用户认证会话的日期和时间。

auth-session list

字段说明
username认证用户的用户名。
session ID为指定用户创建的 HTTP 接口的会话 ID。
created认证会话创建的时间和日期。
expired认证会话过期的时间和日期。
revoked撤销指定用户认证会话的日期和时间。如果认证会话依旧活跃,则显示 NULL
last used上一次使用该会话令牌访问 HTTP 接口的时间和日期。

kwbase node

功能描述

kwbase node 命令用于查看、检查、排空或移除 KaiwuDB 集群中每个节点。

命令格式

./kwbase node <subcommand> [flags]
  • ls

    ./kwbase node ls [flags]
    
  • status

    ./kwbase node status [<node_id>] [flags]
    
  • decommission

    ./kwbase node decommission <node_id 1> [<node_id 2> ...] [flags]
    
  • recommission

    ./kwbase node recommission <node_id 1> [<node_id 2> ...] [flags]
    
  • drain

    ./kwbase node drain [flags]
    
  • upgrade

    ./kwbase node upgrade <node_id 1> [<node_id 2> ...] [flags]
    

子命令

子命令说明
ls列出集群中所有节点的 ID。
status查看集群中单个或所有节点的状态。
decommission停用集群节点。
recommission重新配置停用的集群节点。
drain排空节点。
upgrade升级节点。

参数说明

参数说明
支持的命令
--all查看所有节点的详细信息。如未指定节点 ID,查看集群内所有已停用的节点。kwbase node status
--cert-principal-map使用逗号(,)隔开的 <cert-principal>:<db-principal> 映射列表,允许将证书中的主体映射到数据库主体,如节点、root 或任何 SQL 用户。这适用于证书管理系统对证书中的 Subject.CommonNameSubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 root 等 CommonName)。如果同一证书主体有多个映射项,列表中最后指定的映射项优先生效。映射中未指明的主体将按原样传递。如果数据库主体的名称包含在映射的 CommonName 或 DNS 类型的 SubjectAlternateName 字段中,则允许证书对数据库主体进行身份验证。- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--cluster-name为远程节点或集群设置名称,以验证其身份。该值必须与此节点和通过 --join 参数指定的远程节点相匹配。当节点或集群或两者都尚未初始化,也不知道其集群 ID 时,可以使用此名称作为额外的验证手段。要将集群名称加入已初始化的集群中,请将此参数与 --disable-cluster-name-verification 搭配使用。- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--decommission查看节点停用的详细信息。如未指定节点 ID,查看集群内所有已停用的节点。kwbase node status
--disable-cluster-name-verification配置服务器忽略群集名称不匹配。适用于启动现有集群,或更改群集名称后启动集群的情况。应使用 --cluster-name--disable-cluster-name-verification 参数重新启动集群。一旦所有节点都已更新为知道新的集群名称,就可以移除该参数并再次重启集群。- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--drain-wait系统等待节点排空所有活动的客户端连接以及迁移数据分片租约的时间。
默认值:10m0s
kwbase node drain
--format选择如何在结果中显示表格行。支持以下取值:
- tsv
- csv
- table
- records
- sql
- raw
- html
如未指定,对于非交互式会话,默认为 tsv;对于交互式会话,默认为 table
默认值:table
- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
-h, --help命令的帮助信息。- kwbase node
- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--host连接的 KaiwuDB 节点。支持 IP 地址/主机名,采用 <addr/host>[:<port>] 格式。如果未指定端口号,默认使用 26257。对于 IPv6 地址,使用 [...] 表示法,例如:[::1]:26257[fe80::f6f2:::]:26257
环境变量:KWBASE_HOST
- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。- kwbase node ls
- kwbase node status
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--ranges查看节点数据分片和副本的详细信息。kwbase node status
--stats查看节点磁盘使用的详细信息。kwbase node status
--timeout设置子命令运行的超时时间。如果未在规定时间内完成操作,系统返回错误。超时时间以秒(s)、分钟(m)和小时(h)为单位。用户在数值后添加相应的时间单位即可,例如 1hkwbase node ls
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。- kwbase node ls
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--url连接 URL,采用 postgresql://[user[:passwd]@]host[:port]/[db][?parameters...] 格式,例如 "postgresql://myuser@localhost:26257/mydb"。如未指定,使用 hostportuserdatabseinsecurecerts-dir 等连接参数。
环境变量:KWBASE_URL
- kwbase node ls
- kwbase node decommission
- kwbase node recommission
- kwbase node drain
- kwbase node upgrade
--wait指定在将目标节点标记为停用状态后要何时返回。该参数支持以下取值:
- all:直到所有目标节点的副本数量降至零。
- none:将目标节点标记为停用状态,但无需等待整个过程完成。当从外部系统手动轮询时,使用该参数取值。
默认值:all
- kwbase node decommission
- kwbase node upgrade

kwbase gen

功能描述

kwbase gen 命令用于生成 CLI 工具信息、SQL Shell 配置举例、数据库举例等信息。

命令格式

./kwbase gen <subcommand> [flags]
  • haproxy

    ./kwbase gen haproxy [flags]
    
  • encryption-key

    ./kwbase gen encryption-key [flags]
    

子命令

子命令说明
haproxy为连接的集群生成 haproxy.cfg 文件。
encryption-key为静态加密生成存储键。

参数说明

参数说明
支持的命令
--cert-principal-map使用逗号(,)隔开的 <cert-principal>:<db-principal> 映射列表,允许将证书中的主体映射到数据库主体,如节点、root 或任何 SQL 用户。这适用于证书管理系统对证书中的 Subject.CommonNameSubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 root 等 CommonName)。如果同一证书主体有多个映射项,列表中最后指定的映射项优先生效。映射中未指明的主体将按原样传递。如果数据库主体的名称包含在映射的 CommonName 或 DNS 类型的 SubjectAlternateName 字段中,则允许证书对数据库主体进行身份验证。kwbase gen haproxy
--certs-dir安全证书目录的路径,用于访问、验证以安全模式部署的集群。
默认值:${HOME}/.kaiwudb-certs/
kwbase gen haproxy
--cluster-name为远程节点或集群设置名称,以验证其身份。该值必须与此节点和通过 --join 参数指定的远程节点相匹配。当节点或集群或两者都尚未初始化,也不知道其集群 ID 时,可以使用此名称作为额外的验证手段。要将集群名称加入已初始化的集群中,请将此参数与 --disable-cluster-name-verification 搭配使用。kwbase gen haproxy
--disable-cluster-name-verification配置服务器忽略群集名称不匹配。适用于启动现有集群,或更改群集名称后启动集群的情况。应使用 --cluster-name--disable-cluster-name-verification 参数重新启动集群。一旦所有节点都已更新为知道新的集群名称,就可以移除该参数并再次重启集群。kwbase gen haproxy
-h, --help命令的帮助信息。- kwbase gen
- kwbase gen haproxy
- kwbase gen encryption-key
--host连接的 KaiwuDB 节点。支持 IP 地址/主机名,采用 <addr/host>[:<port>] 格式。如果未指定端口号,默认使用 26257。对于 IPv6 地址,使用 [...] 表示法,例如:[::1]:26257[fe80::f6f2:::]:26257
环境变量:KWBASE_HOST
kwbase gen haproxy
--insecure以非安全模式启动集群。如未指定,以安全模式启动集群。kwbase gen haproxy
--locality有序的、使用逗号(,)隔开的键值对列表,用于描述机器拓扑结构,可能包括国家、数据中心、机架等信息。系统自动复制数据,以最大程度地增加每个层级的多样性。层级的顺序用于确定多样性的优先级,因此包容性更大的本地信息(例如国家)应该在包容性较小的本地信息(例如数据中心)之前。所有节点的层级和顺序必须相同,包含更多层级比包含较少层级更好。例如 --locality=country=cn,region=east,datacenter=shanghai,rack=01kwbase gen haproxy
--outHaproxy 配置文件的生成路径。
默认值:haproxy.cfg
kwbase gen haproxy
--overwrite覆写已存在的密钥。kwbase gen encryption-key
-s--size静态加密时,AES 密钥的大小,支持以下取值:
- 128
- 192
- 256
默认值:128
kwbase gen encryption-key
--tlcp使用 TLCP 安全启动 KaiwuDB 节点。kwbase gen haproxy
--url连接 URL,采用 postgresql://[user[:passwd]@]host[:port]/[db][?parameters...] 格式,例如 "postgresql://myuser@localhost:26257/mydb"。如未指定,使用 hostportuserdatabseinsecurecerts-dir 等连接参数。
环境变量:KWBASE_URL
kwbase gen haproxy

kwbase version

功能描述

kwbase version 命令用于查看 KaiwuDB 的版本信息。

命令格式

./kwbase version [flags]

参数说明

参数说明
-h, --helpkwbase version 命令的帮助信息。

使用举例

以下示例查看 KaiwuDB 的版本信息。

./kwbase version
KaiwuDB Version:  2.1.1
Build Time:       2024/12/02 06:42:24
Distribution:
Platform:         linux amd64 (x86_64-linux-gnu)
Go Version:       go1.16.15
C Compiler:       gcc 11.4.0
Build SHA-1:      83c35a67ab352611ce97300307ebe7d704d24888

kwbase help

功能描述

kwbase help 命令用于查看 kwbase CLI 工具的帮助信息。

命令格式

./kwbase help

参数说明

使用举例

./kwbase help
KwDB command-line interface and server.

Usage:
  kwbase [command]

Available Commands:
  start                start a node in a multi-node cluster
  start-single-replica start a single-replica node in a multi-node cluster
  start-single-node    start a single-node cluster
  init                 initialize a cluster
  cert                 create ca, node, and client certs
  sql                  open a sql shell
  statement-diag       commands for managing statement diagnostics bundles
  auth-session         log in and out of HTTP sessions
  node                 list, inspect, drain or remove nodes
  nodelocal            upload and delete nodelocal files
  demo                 open a demo sql shell (not suitable for time-series scenario)
  gen                  generate auxiliary files
  version              output version information
  debug                debugging commands
  sqlfmt               format SQL statements
  workload             generators for data and query loads
  systembench          Run systembench
  help                 Help about any command

Flags:
  -h, --help                             help for kwbase
      --logtostderr Severity[=DEFAULT]   logs at or above this threshold go to stderr (default NONE)
      --no-color                         disable standard error log colorization
      --vmodule moduleSpec               comma-separated list of pattern=N settings for file-filtered logging (significantly hurts performance)

Use "kwbase [command] --help" for more information about a command.