homework-jianmu/docs/zh/14-reference/01-components/01-taosd.md

14 KiB
Raw Blame History

title sidebar_label toc_max_heading_level
taosd 参考手册 taosd 4

taosd 是 TDengine 数据库引擎的核心服务,其配置文件默认是 /etc/taos/taos.cfg 但也可以指定不同路径的配置文件。本节详细介绍 taosd 的命令行参数及配置文件中的配置参数。

命令行参数

taosd 命令行参数如下

  • -a <json file>:指定一个 JSON 文件,其中包含服务启动时的各项配置参数,其格式形如 {"fqdn":"td1"},关于配置参数的细节请参考下一节
  • -c <directory>:指定配置文件所在目录
  • -s打印 SDB 信息
  • -C: 打印配置信息
  • -e: 指定环境变量,其格式形如 -e 'TAOS_FQDN=td1'
  • -k: 获取机器码
  • -dm: 启用内存调度
  • -V: 打印版本信息

配置参数

:::note 配置文件参数修改后,需要重启taosd服务,或客户端应用才能生效。

:::

连接相关

参数名称 参数说明
firstEp taosd 启动时,主动连接的集群中首个 dnode 的 end point缺省值localhost:6030
secondEp taosd 启动时,如果 firstEp 连接不上,尝试连接集群中第二个 dnode 的 endpoint缺省值
fqdn 启动 taosd 后所监听的服务地址,缺省值:所在服务器上配置的第一个 hostname
serverPort 启动 taosd 后所监听的端口缺省值6030
maxShellConns 一个 dnode 容许的连接数,取值范围为 10-5000000缺省值5000
numOfRpcSessions 允许一个客户端能创建的最大连接数,取值范围 100-100000缺省值30000
timeToGetAvailableConn 获得可用连接的最长等待时间,取值范围 10-50000000单位为毫秒缺省值500000

监控相关

参数名称 参数说明
monitor 是否收集监控数据并上报0: 关闭1:打开缺省值0
monitorFqdn taosKeeper 服务所在服务器的 FQDN缺省值
monitorPort taosKeeper 服务所监听的端口号缺省值6043
monitorInternal 监控数据库记录系统参数CPU/内存)的时间间隔,单位是秒,取值范围 1-200000 缺省值30
telemetryReporting 是否上传 telemetry0: 不上传1上传缺省值1
crashReporting 是否上传 crash 信息0: 不上传1: 上传;缺省值: 1

查询相关

参数名称 参数说明
queryPolicy 查询策略1: 只使用 vnode不使用 qnode; 2: 没有扫描算子的子任务在 qnode 执行,带扫描算子的子任务在 vnode 执行; 3: vnode 只运行扫描算子,其余算子均在 qnode 执行 缺省值1
maxNumOfDistinctRes 允许返回的 distinct 结果最大行数,默认值 10 万,最大允许值 1 亿
countAlwaysReturnValue ount/hyperloglog函数在输入数据为空或者NULL的情况下是否返回值0: 返回空行1: 返回;该参数设置为 1 时,如果查询中含有 INTERVAL 子句或者该查询使用了TSMA时, 且相应的组或窗口内数据为空或者NULL 对应的组或窗口将不返回查询结果. 注意此参数客户端和服务端值应保持一致.

区域相关

参数名称 参数说明
timezone 时区,缺省值:当前服务器所配置的时区
locale 系统区位信息及编码格式 ,缺省值:系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过 API 设置
charset 字符集编码,缺省值:系统自动获取

:::info

  1. 为应对多时区的数据写入和查询问题TDengine 采用 Unix 时间戳(Unix Timestamp)来记录和存储时间戳。Unix 时间戳的特点决定了任一时刻不论在任何时区产生的时间戳均一致。需要注意的是Unix 时间戳是在客户端完成转换和记录。为了确保客户端其他形式的时间转换为正确的 Unix 时间戳,需要设置正确的时区。

在 Linux/macOS 中,客户端会自动读取系统设置的时区信息。用户也可以采用多种方式在配置文件设置时区。例如:

timezone UTC-8
timezone GMT-8
timezone Asia/Shanghai

均是合法的设置东八区时区的格式。但需注意Windows 下并不支持 timezone Asia/Shanghai 这样的写法,而必须写成 timezone UTC-8

时区的设置对于查询和写入 SQL 语句中非 Unix 时间戳的内容(时间戳字符串、关键词 now 的解析)产生影响。例如:

SELECT count(*) FROM table_name WHERE TS<'2019-04-11 12:01:08';

在东八区SQL 语句等效于

SELECT count(*) FROM table_name WHERE TS<1554955268000;

在 UTC 时区SQL 语句等效于

SELECT count(*) FROM table_name WHERE TS<1554984068000;

为了避免使用字符串时间格式带来的不确定性,也可以直接使用 Unix 时间戳。此外,还可以在 SQL 语句中使用带有时区的时间戳字符串例如RFC3339 格式的时间戳字符串2013-04-12T15:52:01.123+08:00 或者 ISO-8601 格式时间戳字符串 2013-04-12T15:52:01.123+0800。上述两个字符串转化为 Unix 时间戳不受系统所在时区的影响。

  1. TDengine 为存储中文、日文、韩文等非 ASCII 编码的宽字符,提供一种专门的字段类型 nchar。写入 nchar 字段的数据将统一采用 UCS4-LE 格式进行编码并发送到服务器。需要注意的是,编码正确性是客户端来保证。因此,如果用户想要正常使用 nchar 字段来存储诸如中文、日文、韩文等非 ASCII 字符,需要正确设置客户端的编码格式。

客户端的输入的字符均采用操作系统当前默认的编码格式,在 Linux/macOS 系统上多为 UTF-8部分中文系统编码则可能是 GB18030 或 GBK 等。在 docker 环境中默认的编码是 POSIX。在中文版 Windows 系统中,编码则是 CP936。客户端需要确保正确设置自己所使用的字符集即客户端运行的操作系统当前编码字符集才能保证 nchar 中的数据正确转换为 UCS4-LE 编码格式。

在 Linux/macOS 中 locale 的命名规则为: <语言>_<地区>.<字符集编码> 如zh_CN.UTF-8zh 代表中文CN 代表大陆地区UTF-8 表示字符集。字符集编码为客户端正确解析本地字符串提供编码转换的说明。Linux/macOS 可以通过设置 locale 来确定系统的字符编码,由于 Windows 使用的 locale 中不是 POSIX 标准的 locale 格式,因此在 Windows 下需要采用另一个配置参数 charset 来指定字符编码。在 Linux/macOS 中也可以使用 charset 来指定字符编码。

  1. 如果配置文件中不设置 charset在 Linux/macOS 中taos 在启动时候,自动读取系统当前的 locale 信息,并从 locale 信息中解析提取 charset 编码格式。如果自动读取 locale 信息失败,则尝试读取 charset 配置,如果读取 charset 配置也失败,则中断启动过程。

在 Linux/macOS 中locale 信息包含了字符编码信息,因此正确设置了 Linux/macOS 的 locale 以后可以不用再单独设置 charset。例如

locale zh_CN.UTF-8

在 Windows 系统中,无法从 locale 获取系统当前编码。如果无法从配置文件中读取字符串编码信息taos 默认设置为字符编码为 CP936。其等效在配置文件中添加如下配置

charset CP936

如果需要调整字符编码,请查阅当前操作系统使用的编码,并在配置文件中正确设置。

在 Linux/macOS 中,如果用户同时设置了 locale 和字符集编码 charset并且 locale 和 charset 的不一致,后设置的值将覆盖前面设置的值。

locale zh_CN.UTF-8
charset GBK

则 charset 的有效值是 GBK。

charset GBK
locale zh_CN.UTF-8

charset 的有效值是 UTF-8。

:::

存储相关

参数名称 参数说明
dataDir 数据文件目录,所有的数据文件都将写入该目录,缺省值:/var/lib
tempDir 指定所有系统运行过程中的临时文件生成的目录,缺省值:/tmp
minimalTmpDirGB tempDir 所指定的临时文件目录所需要保留的最小空间,单位 GB缺省值: 1
minimalDataDirGB dataDir 指定的时序数据存储目录所需要保留的最小空间,单位 GB缺省值: 2

集群相关

参数名称 参数说明
supportVnodes dnode 支持的最大 vnode 数目取值范围0-4096缺省值 CPU 核数的 2 倍 + 5

性能调优

参数名称 参数说明
numOfCommitThreads 写入线程的最大数量,取值范围 0-1024缺省值为 4

日志相关

参数名称 参数说明
logDir 日志文件目录,运行日志将写入该目录,缺省值:/var/log/taos
minimalLogDirGB 当日志文件夹所在磁盘可用空间大小小于该值时停止写日志单位GB缺省值1
numOfLogLines 单个日志文件允许的最大行数缺省值10,000,000
asyncLog 日志写入模式0: 同步1: 异步,缺省值: 1
logKeepDays 日志文件的最长保存时间 单位缺省值0意味着无限保存当设置为大于0 的值时,日志文件会被重命名为 taosdlog.xxx其中 xxx 为日志文件最后修改的时间戳。
slowLogThreshold 慢查询门限值,大于等于门限值认为是慢查询,单位秒,默认值: 3
slowLogScope 定启动记录哪些类型的慢查询可选值ALL, QUERY, INSERT, OHTERS, NONE; 默认值ALL
debugFlag 运行日志开关131输出错误和警告日志135输出错误、警告和调试日志143输出错误、警告、调试和跟踪日志; 默认值131 或 135 (取决于不同模块)
tmrDebugFlag 定时器模块的日志开关,取值范围同上
uDebugFlag 共用功能模块的日志开关,取值范围同上
rpcDebugFlag rpc 模块的日志开关,取值范围同上
jniDebugFlag jni 模块的日志开关,取值范围同上
qDebugFlag query 模块的日志开关,取值范围同上
dDebugFlag dnode 模块的日志开关,取值范围同上,缺省值 135
vDebugFlag vnode 模块的日志开关,取值范围同上
mDebugFlag mnode 模块的日志开关,取值范围同上
wDebugFlag wal 模块的日志开关,取值范围同上
sDebugFlag sync 模块的日志开关,取值范围同上
tsdbDebugFlag tsdb 模块的日志开关,取值范围同上
tqDebugFlag tq 模块的日志开关,取值范围同上
fsDebugFlag fs 模块的日志开关,取值范围同上
udfDebugFlag udf 模块的日志开关,取值范围同上
smaDebugFlag sma 模块的日志开关,取值范围同上
idxDebugFlag index 模块的日志开关,取值范围同上
tdbDebugFlag tdb 模块的日志开关,取值范围同上

压缩参数

参数名称 参数说明
compressMsgSize 是否对 RPC 消息进行压缩;-1: 所有消息都不压缩; 0: 所有消息都压缩; N (N>0): 只有大于 N 个字节的消息才压缩;缺省值 -1
fPrecision 设置 float 类型浮点数压缩精度 取值范围0.1 ~ 0.00000001 ,默认值 0.00000001 , 小于此值的浮点数尾数部分将被截断
dPrecision 设置 double 类型浮点数压缩精度 , 取值范围0.1 ~ 0.0000000000000001 缺省值 0.0000000000000001 小于此值的浮点数尾数部分将被截取
lossyColumn 对 float 和/或 double 类型启用 TSZ 有损压缩;取值范围: float, double, none缺省值: none表示关闭无损压缩
ifAdtFse 在启用 TSZ 有损压缩时,使用 FSE 算法替换 HUFFMAN 算法, FSE 算法压缩速度更快,但解压稍慢,追求压缩速度可选用此算法; 0: 关闭1打开默认值为 0

补充说明

  1. 在 3.2.0.0 ~ 3.3.0.0(不包含)版本生效,启用该参数后不能回退到升级前的版本
  2. TSZ 压缩算法是通过数据预测技术完成的压缩,所以更适合有规律变化的数据
  3. TSZ 压缩时间会更长一些,如果您的服务器 CPU 空闲多,存储空间小的情况下适合选用
  4. 示例:对 float 和 double 类型都启用有损压缩
lossyColumns     float|double
  1. 配置需重启服务生效,重启如果在 taosd 日志中看到以下内容,表明配置已生效:
   02/22 10:49:27.607990 00002933 UTL  lossyColumns     float|double

其他参数

参数名称 参数说明
enableCoreFile crash 时是否生成 core 文件0: 不生成1生成默认值 为 1; 不同的启动方式,生成 core 文件的目录如下1、systemctl start taosd 启动:生成的 core 在根目录下
2、手动启动就在 taosd 执行目录下。
udf 是否启动 UDF 服务0: 不启动1启动默认值 为 0
ttlChangeOnWrite ttl 到期时间是否伴随表的修改操作改变; 0: 不改变1改变 ;默认值 为
tmqMaxTopicNum 订阅最多可建立的 topic 数量; 取值范围 1-10000缺省值 为20
maxTsmaNum 集群内可创建的TSMA个数取值范围0-3缺省值: 3