使用docker容器部署TSDB,修改配置文件无效

镜像版本:tdengine/tsdb:3.4.0.0

问题
使用docker exec进入镜像修改/etc/taos/taos.cfg文件添加如下内容后重启容器,配置未生效,创建容器的时候使用外部挂载方式挂载taos.cfg文件添加下述配置也同样无效:

queryUseMemoryPool 1
minReservedMemorySize 1024
singleQueryMaxMemorySize 10

使用sql语句修改上述配置报错如下:

alter dnode 1 ‘queryUseMemoryPool’ ‘1’;
DB error: syntax error near "‘queryusememorypool’ ‘1’;" [0x80002600] (0.000118s)

alter dnode 1 ‘minReservedMemorySize‘ ‘1024‘;
DB error: syntax error near "‘minreservedmemorysize‘ ‘1024‘;" [0x80002600] (0.000085s)


taos> alter dnode 1 ‘singleQueryMaxMemorySize‘ ‘10‘;
DB error: Invalid config option [0x80000119] (0.000633s)

修改或者挂载容器中的taosadapter.toml,taoskeeper.toml,explorer.toml配置文件内容也同样无效。

请问使用容器部署TSDB的时候改如何修改各种相关配置?上述手段全部无效,官方文档中也没有提及。

可以按照如下步骤配置和部署:

1. 在 taos.cfg 中正确配置

配置文件 /etc/taos/taos.cfg 的正确写法如下。确保每行开头没有 # 号。

properties

开启内存池

queryUseMemoryPool 1 # 设置最小预留系统内存为 1024 MB (1 GB) minReservedMemorySize 1024 # 设置单个查询内存上限为 10240 MB (10 GB) singleQueryMaxMemorySize 10240 #

可选:强制加载配置文件,影响面较大,建议谨慎使用。

forceReadConfig 1

2. 在Docker中正确使配置生效

  1. 停止并删除现有容器docker stop <容器名> && docker rm <容器名>
  2. 准备配置文件 :确保宿主机的 taos.cfg 文件内容正确。
  3. 启动新容器并挂载配置

bash

docker run -d \ –name tdengine \ -v /path/to/your/taos.cfg:/etc/taos/taos.cfg \ tdengine/tsdb:3.4.0.0

  1. 进入容器并重启服务 :在容器内执行 taosd 重启命令。
  2. 验证配置是否生效 :在 taos 命令行中执行以下命令查看参数是否已更新。
    sql
    SHOW DNODE 1 VARIABLES LIKE ‘queryUseMemoryPool’;
    SHOW DNODE 1 VARIABLES LIKE ‘minReservedMemorySize’;
    SHOW DNODE 1 VARIABLES LIKE ‘singleQueryMaxMemorySize’;

但是我看官方文档中说明3.4.0.0中 forceReadConfig参数废弃了呀

我现在的问题就是,修改配置文件无效(可能是因为废弃了),但是使用alert修改配置也不行。根本无法修改配置。

taos.cfg中添加了如下参数后重启容器, queryUseMemoryPool以外的配置修改成功:

我现在还有两个问题:
1.在3.4.0.0版本中,forceReadConfig参数到底是否有效,官方文档是否准确?
2.为什么queryUseMemoryPool的修改没有生效?

查看一下你的系统的内存使用情况:

queryUseMemoryPool

  • 说明:查询是否使用内存池管理内存
  • 类型:整数;0:关闭;1:打开 当内存池开关打开时,还需要满足如下条件才会启用内存池:1. 系统的可用内存总量不低于 5G;2. 扣除预留部分后系统的可用内存不低于4G
  • 默认值:1
  • 最小值:0
  • 最大值:1
  • 参数类型:局部配置参数
  • 动态修改:支持通过 SQL 修改,重启后效。
  • 支持版本:v3.3.5.0 引入

内存足够,而且也没有限制容器的内存上限:
image