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-size | AE executor 缓冲池大小。 默认值:4096 |
--cache | 缓存大小,多个物理存储设备共享使用。参数值支持准确的内存值(单位:字节)、带小数点的十进制数值(转换为百分比数值)、百分比值: - --cache=.25 - --cache=25% - --cache=1000000000 :1000000000 字节 - --cache=1GB :1000000000 字节 - --cache=1GiB :1073741824 字节默认值: 128 MiB 说明 如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。 |
--certs-dir | 安全证书目录的路径,用于访问、验证以安全模式部署的集群。 默认值: ${HOME}/.kaiwudb-certs/ |
-h , --help | kwbase 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-memory | SQL 查询缓存的临时数据支持使用的最大内存空间,包括准备好的查询和在查询执行期间中间数据行。该值可以是百分数或者准确的值(单位:字节),例如: - --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-port | RESTful 端口,取值范围为 [0, 65535] 。默认值: 8080 |
--restful-timeout | RESTful API 超时时间。 默认值:60 |
--sql-audit-dir | 安全审计日志的位置。默认情况下,SQL 审核日志与 KaiwuDB 生成的其他日志写入同一目录。 |
-s, --store | 存储设备路径,用于存储数据库数据。支持同时指定设备属性和空间大小。若使用多个设备存储数据,则使用 --store=/mnt/ssd01 --store=/mnt/ssd02 方式。 |
--thread-pool-size | AE 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
非安全模式
将 KaiwuDB 二进制文件,例如 kaiwudb-2.1.0-centos-amd64,复制到 PATH 路径下。
示例:
cp -i kaiwudb-2.1.0-centos-amd64/kaiwudb /usr/local/bin/kaiwudb
启动 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-size | AE executor 缓冲池大小。 默认值:4096 |
--cache | 缓存大小,多个物理存储设备共享使用。参数值支持准确的内存值(单位:字节)、带小数点的十进制数值(转换为百分比数值)、百分比值: - --cache=.25 - --cache=25% - --cache=1000000000 :1000000000 字节 - --cache=1GB :1000000000 字节 - --cache=1GiB :1073741824 字节默认值: 128 MiB 说明 如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。 |
--certs-dir | 安全证书目录的路径,用于访问、验证以安全模式部署的集群。 默认值: ${HOME}/.kaiwudb-certs/ |
-h , --help | kwbase 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-memory | SQL 查询缓存的临时数据支持使用的最大内存空间,包括准备好的查询和在查询执行期间中间数据行。该值可以是百分数或者准确的值(单位:字节),例如: - --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-port | RESTful 端口,取值范围为 [0, 65535] 。默认值: 8080 |
--restful-timeout | RESTful API 超时时间。 默认值:60 |
--sql-audit-dir | 安全审计日志的位置。默认情况下,SQL 审核日志与 KaiwuDB 生成的其他日志写入同一目录。 |
-s, --store | 存储设备路径,用于存储数据库数据。支持同时指定设备属性和空间大小。若使用多个设备存储数据,则使用 --store=/mnt/ssd01 --store=/mnt/ssd02 方式。 |
--thread-pool-size | AE 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-size | AE executor 缓冲池大小。 默认值:4096 |
--cache | 缓存大小,多个物理存储设备共享使用。参数值支持准确的内存值(单位:字节)、带小数点的十进制数值(转换为百分比数值)、百分比值: - --cache=.25 - --cache=25% - --cache=1000000000 :1000000000 字节 - --cache=1GB :1000000000 字节 - --cache=1GiB :1073741824 字节默认值: 128 MiB 说明 如果使用带百分比符号(%)的格式,确保系统能够正常识别转义的百分比符号(%)。例如,在某些配置文件中,百分比符号(%)可能被识别为注解符。因此,推荐使用带小数点的十进制数值。 |
--certs-dir | 安全证书目录的路径,用于访问、验证以安全模式部署的集群。 默认值: ${HOME}/.kaiwudb-certs/ |
-h , --help | kwbase 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-memory | SQL 查询缓存的临时数据支持使用的最大内存空间,包括准备好的查询和在查询执行期间中间数据行。该值可以是百分数或者准确的值(单位:字节),例如: - --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-port | RESTful 端口,取值范围为 [0, 65535] 。默认值: 8080 |
--restful-timeout | RESTful API 超时时间。 默认值:60 |
--sql-audit-dir | 安全审计日志的位置。默认情况下,SQL 审核日志与 KaiwuDB 生成的其他日志写入同一目录。 |
-s, --store | 存储设备路径,用于存储数据库数据。支持同时指定设备属性和空间大小。若使用多个设备存储数据,则使用 --store=/mnt/ssd01 --store=/mnt/ssd02 方式。 |
--thread-pool-size | AE 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 , --help | kwbase 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"。如未指定,使用 host 、port 、user 、databse 、insecure 、certs-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-key | CA 密钥的路径。 环境变量: 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.CommonName 或 SubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 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-size | CA、节点、客户端证书密钥的大小(单位:比特)。 默认值: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 |
使用举例
新建
/opt/certs
和/opt/my-safe-directory
目录。mkdir /opt/certs mkdir /opt/my-safe-directory
/opt/certs
:用于存放生成的 CA 证书以及所有节点和客户端的证书和密钥文件,其中部分文件会传输到节点机器上。/opt/my-safe-directory
:用于存放生成的 CA 密钥文件,节点和用户创建证书和密钥的时候使用。
创建 CA 证书和密钥。
./ kwbase cert create-ca \ --certs-dir=/opt/certs \ --ca-key=/opt/my-safe-directory/ca.key
建议备份生成的 CA 证书和密钥对。
为集群的第一个节点创建证书和密钥。
./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
将 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
删除本地的节点证书和密钥。
rm /opt/certs/node.crt /opt/certs/node.key
重复第 3-5 步,为集群其他节点创建证书和密钥。
为
root
用户创建客户端证书和密钥。./kwbase cert create-client root \ --certs-dir=/opt/certs \ --ca-key=/opt/my-safe-directory/ca.key
将证书和密钥传输到执行 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.CommonName 或 SubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 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 , --help | kwbase sql 命令的帮助信息。 |
--insecure | 以非安全模式启动集群。如未指定,以安全模式启动集群。 |
--safe-updates | 禁用可能产生意外副作用的 SQL 语句。例如,未指定 WHERE 子句的 DELETE 或 UPDATE 语句。默认情况下,开启该配置(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"。如未指定,使用 host 、port 、user 、databse 、insecure 、certs-dir 等连接参数。环境变量: KWBASE_URL |
-u , --user | KaiwuDB 数据库用户名。 环境变量: 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.CommonName 或 SubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 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 认证令牌的持续时间。超过该时间后令牌将过期。使用数值指定持续时间,并在数值后附加一个或多个 h 、m 和 s 来表示小时、分钟和秒的时长。默认值: 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"。如未指定,使用 host 、port 、user 、databse 、insecure 、certs-dir 等连接参数。环境变量: KWBASE_URL | - kwbase auth-session login - kwbase auth-session logout - kwbase auth-session list |
-u , --user | KaiwuDB 数据库用户名。 环境变量: 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.CommonName 或 SubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 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)为单位。用户在数值后添加相应的时间单位即可,例如 1h 。 | kwbase 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"。如未指定,使用 host 、port 、user 、databse 、insecure 、certs-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.CommonName 或 SubjectAlternateName 字段有限制的情况(例如,不允许使用节点或 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=01 。 | kwbase gen haproxy |
--out | Haproxy 配置文件的生成路径。 默认值: 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"。如未指定,使用 host 、port 、user 、databse 、insecure 、certs-dir 等连接参数。环境变量: KWBASE_URL | kwbase gen haproxy |
kwbase version
功能描述
kwbase version
命令用于查看 KaiwuDB 的版本信息。
命令格式
./kwbase version [flags]
参数说明
参数 | 说明 |
---|---|
-h , --help | kwbase 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.