服务端配置

TDengine系统后台服务由taosd提供,可以在配置文件taos.cfg里修改配置参数,以满足不同场景的需求。配置文件的缺省位置在/etc/taos目录,可以通过taosd命令行执行参数-c指定配置文件目录。比如taosd -c /home/user来指定配置文件位于/home/user这个目录。

另外可以使用 “-C” 显示当前服务器配置参数:

  1. taosd -C

下面仅仅列出一些重要的配置参数,更多的参数请看配置文件里的说明。各个参数的详细介绍及作用请看前述章节,而且这些参数的缺省配置都是工作的,一般无需设置。注意:配置修改后,需要重启taosd服务才能生效。

  • firstEp: taosd启动时,主动连接的集群中首个dnode的end point, 默认值为localhost:6030。
  • fqdn:数据节点的FQDN,缺省为操作系统配置的第一个hostname。如果习惯IP地址访问,可设置为该节点的IP地址。
  • serverPort:taosd启动后,对外服务的端口号,默认值为6030。
  • httpPort: RESTful服务使用的端口号,所有的HTTP请求(TCP)都需要向该接口发起查询/写入请求, 默认值为6041。
  • dataDir: 数据文件目录,所有的数据文件都将写入该目录。默认值:/var/lib/taos。
  • logDir:日志文件目录,客户端和服务器的运行日志文件将写入该目录。默认值:/var/log/taos。
  • arbitrator:系统中裁决器的end point, 缺省值为空。
  • role:dnode的可选角色。0-any; 既可作为mnode,也可分配vnode;1-mgmt;只能作为mnode,不能分配vnode;2-dnode;不能作为mnode,只能分配vnode
  • debugFlag:运行日志开关。131(输出错误和警告日志),135( 输出错误、警告和调试日志),143( 输出错误、警告、调试和跟踪日志)。默认值:131或135(不同模块有不同的默认值)。
  • numOfLogLines:单个日志文件允许的最大行数。默认值:10,000,000行。
  • logKeepDays:日志文件的最长保存时间。大于0时,日志文件会被重命名为taosdlog.xxx,其中xxx为日志文件最后修改的时间戳,单位为秒。默认值:0天。
  • maxSQLLength:单条SQL语句允许最长限制。默认值:65380字节。
  • telemetryReporting: 是否允许 TDengine 采集和上报基本使用信息,0表示不允许,1表示允许。 默认值:1。
  • stream: 是否启用连续查询(流计算功能),0表示不允许,1表示允许。 默认值:1。
  • queryBufferSize: 为所有并发查询占用保留的内存大小。计算规则可以根据实际应用可能的最大并发数和表的数字相乘,再乘 170 。单位为 MB(2.0.15 以前的版本中,此参数的单位是字节)。
  • ratioOfQueryCores: 设置查询线程的最大数量。最小值0 表示只有1个查询线程;最大值2表示最大建立2倍CPU核数的查询线程。默认为1,表示最大和CPU核数相等的查询线程。该值可以为小数,即0.5表示最大建立CPU核数一半的查询线程。

注意:对于端口,TDengine会使用从serverPort起13个连续的TCP和UDP端口号,请务必在防火墙打开。因此如果是缺省配置,需要打开从6030到6042共13个端口,而且必须TCP和UDP都打开。

不同应用场景的数据往往具有不同的数据特征,比如保留天数、副本数、采集频次、记录大小、采集点的数量、压缩等都可完全不同。为获得在存储上的最高效率,TDengine提供如下存储相关的系统配置参数:

  • days:一个数据文件存储数据的时间跨度,单位为天,默认值:10。
  • keep:数据库中数据保留的天数,单位为天,默认值:3650。
  • minRows:文件块中记录的最小条数,单位为条,默认值:100。
  • maxRows:文件块中记录的最大条数,单位为条,默认值:4096。
  • comp:文件压缩标志位,0:关闭;1:一阶段压缩;2:两阶段压缩。默认值:2。
  • walLevel:WAL级别。1:写wal,但不执行fsync;2:写wal, 而且执行fsync。默认值:1。
  • fsync:当wal设置为2时,执行fsync的周期。设置为0,表示每次写入,立即执行fsync。单位为毫秒,默认值:3000。
  • cache:内存块的大小,单位为兆字节(MB),默认值:16。
  • blocks:每个VNODE(TSDB)中有多少cache大小的内存块。因此一个VNODE的用的内存大小粗略为(cache * blocks)。单位为块,默认值:4。
  • replica:副本个数,取值范围:1-3。单位为个,默认值:1
  • precision:时间戳精度标识,ms表示毫秒,us表示微秒。默认值:ms
  • cacheLast:是否在内存中缓存子表 last_row,0:关闭;1:开启。默认值:0。(从 2.0.11 版本开始支持此参数)

对于一个应用场景,可能有多种数据特征的数据并存,最佳的设计是将具有相同数据特征的表放在一个库里,这样一个应用有多个库,而每个库可以配置不同的存储参数,从而保证系统有最优的性能。TDengine允许应用在创建库时指定上述存储参数,如果指定,该参数就将覆盖对应的系统配置参数。举例,有下述SQL:

  1. create database demo days 10 cache 32 blocks 8 replica 3 update 1;

该SQL创建了一个库demo, 每个数据文件存储10天数据,内存块为32兆字节,每个VNODE占用8个内存块,副本数为3,允许更新,而其他参数与系统配置完全一致。

TDengine集群中加入一个新的dnode时,涉及集群相关的一些参数必须与已有集群的配置相同,否则不能成功加入到集群中。会进行校验的参数如下:

  • numOfMnodes:系统中管理节点个数。默认值:3。
  • balance:是否启动负载均衡。0:否,1:是。默认值:1。
  • mnodeEqualVnodeNum: 一个mnode等同于vnode消耗的个数。默认值:4。
  • offlineThreshold: dnode离线阈值,超过该时间将导致该dnode从集群中删除。单位为秒,默认值:86400*10(即10天)。
  • statusInterval: dnode向mnode报告状态时长。单位为秒,默认值:1。
  • maxTablesPerVnode: 每个vnode中能够创建的最大表个数。默认值:1000000。
  • maxVgroupsPerDb: 每个数据库中能够使用的最大vgroup个数。
  • arbitrator: 系统中裁决器的end point,缺省为空。
  • timezone、locale、charset 的配置见客户端配置。

为方便调试,可通过SQL语句临时调整每个dnode的日志配置,系统重启后会失效:

  1. ALTER DNODE <dnode_id> <config>
  • dnode_id: 可以通过SQL语句”SHOW DNODES”命令获取
  • config: 要调整的日志参数,在如下列表中取值

    resetlog 截断旧日志文件,创建一个新日志文件 debugFlag < 131 | 135 | 143 > 设置debugFlag为131、135或者143

例如:

  1. alter dnode 1 debugFlag 135;