TDengine初搭建--第三版

本文介绍TDengine服务端配置要点,包括防火墙设置、用户密码修改等;客户端安装及使用方法,涉及IDEA工具连接数据库的过程,并提供多种驱动下载途径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、TDengine服务端需注意点

如果6030或者其它端口号需要供客户端访问,就需要运行防火墙设置,如下所示:

firewall-cmd --zone=public --add-port=6030/tcp --permanent
firewall-cmd --zone=public --add-port=6030/udp --permanent
firewall-cmd --reload

默认是root账号,需要调整密码如下所示:

taos> alter user root pass 'admin';
Query OK, 0 of 0 row(s) in database (0.001059s)

2、客户端下载

第一种方式:直接在官网下载。

官网链接:快速上手 | 涛思数据 (taosdata.com)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_20,color_FFFFFF,t_70,g_se,x_16

第二种方式:如果是windows64位版,直接可以从这个链接下载(这个链接包含windows64位客户端和数据库驱动jar包:taos-jdbcdriver-2.0.34-dist.jar):

(4条消息) TDengine驱动加客户端.rar-Linux文档类资源-优快云文库

3、客户端安装

双击下一步安装即可,这里除了安装客户端外,安装过程还会往系统路径写入数据库的dll包,这也是后面我们想要IDEA工具连接TDengine数据库的关键。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 4、打开桌面客户端

安装完成后,桌面会出现如下图所示工具快捷方式,双击打开如图所示窗口:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_20,color_FFFFFF,t_70,g_se,x_16

接下来开始连接我们的服务端数据库,具体指令如下:

taos -h 192.168.0.119 -u 账号 -p 密码

 提示输入密码,咱们输入下密码,等待出现taos后代表连接成功,接下来我们开始连接库,做一个简单的查询操作

taos> use epiot;
Query OK, 0 of 0 row(s) in database (0.109000s)

taos> select * from weather;
           ts            | temprature  |       humidity       |
===============================================================
 2022-01-13 13:32:53.611 |          27 |              0.60000 |
 2022-01-13 13:32:54.979 |          27 |              0.60000 |

 5、通过IDEA连接数据库

官网有专门的教程:博客: 如何借助 IDEA 数据库管理工具可视化使用 TDengine? | 涛思数据 (taosdata.com)

需要注意的是:我们用教程的jar包版本,没法匹配

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_20,color_FFFFFF,t_70,g_se,x_16

我们需要重新下载一个jar包文件,这里有两种方式:

第一种:参考这个文档两个步骤

关于驱动怎么编译:

方法一:使用我已经编译好的驱动(2.0.34),下载地址:https://download.youkuaiyun.com/download/csp_6666/23364593

方法二:如下

下载源码:git clone https://github.com/taosdata/TDengine.git
进入 taos-jdbcdriver 源码目录: cd src/connector/jdbc
执行 mvn clean package -Dmaven.test.skip=true 即可生成相应 jar 包。
执行完在target下找到对应jar包,注意选择结尾为dist的 (这个把驱动需要的依赖包导入进去了,否则报错:Driver class ‘org.apache.http.conn.HttpClientConnectionManager’ not found.)

第二种: 找刚刚下载链接下的文件

(4条消息) TDengine驱动加客户端.rar-Linux文档类资源-优快云文库

选上这个jar包后,我们还是按照官网教程去操作,有些人会提示如下错误:no taos in java.library.path,这是因为电脑没有装上面说的客户端,你缺少dll文件

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_9,color_FFFFFF,t_70,g_se,x_16

 如果都不缺,基本就可以了,如下图所示

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 打开数据库表查询记录

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_20,color_FFFFFF,t_70,g_se,x_16

注意点:C:\Windows\System32\drivers\etc 路径下的hosts文件需加上指定IP转换

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS25pZ2h0X0tleQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

 

<think>我们正在使用Docker部署TDengine数据库集群。根据引用[2]和[3]的信息,我们可以使用DockerCompose或Docker Swarm来部署集群。引用[4]提到了使用docker-compose进行集群部署,但未给出完整配置。引用[3]则提到了使用Docker Swarm搭建集群,并指出社区版无法使用delete命令(企业版才支持)。由于用户要求部署集群,我们可以采用DockerCompose或Docker Swarm。这里我们选择使用DockerCompose来部署,因为Docker Compose更简单,适合在单台机器上模拟集群(通过不同端口映射),或者可以在多台机器上分别启动容器(每台机器一个节点,但需要配置网络和主机名)。 然而,注意引用[3]和[4]都提到了多节点部署,因此我们需要配置多个节点,每个节点一个容器,并且它们之间需要通信。 根据TDengine的官方文档,要组建集群,需要配置每个节点的FQDN(完全限定域名),并在每个节点上配置其他节点的FQDN和IP地址映射(通过hosts文件或DNS)。以下是一个使用DockerCompose部署三个节点(一个主节点,两个从节点)的示例步骤:1.创建一个docker-compose.yml文件,定义三个服务(节点)。2.每个节点需要配置主机名(hostname)和网络,以便节点间可以互相通信。 3.在每个节点的配置中,需要将其他节点的IP和主机名映射添加到hosts文件中(或者使用自定义网络让Docker自动解析主机名,但TDengine要求使用FQDN,所以我们需要设置hostname,并在其他节点的hosts中明确指定IP和主机名的映射)。 4.启动第一个节点作为主节点,然后启动其他节点并加入集群。 但是,在DockerCompose中,我们可以利用自定义网络,让容器之间通过服务名进行通信。然而,TDengine要求每个节点有一个固定的FQDN,并且集群配置时使用这个FQDN。因此,我们可以为每个容器设置一个固定的hostname(例如taos1,taos2,taos3),并在每个容器的hosts文件中添加其他容器的IP和hostname的映射。但是,由于Docker Compose在启动时容器的IP可能不固定,所以我们可以使用静态IP或者使用extra_hosts来手动指定。 另一种方法是使用Docker Compose的network配置,并设置容器的hostname,然后通过自定义网络让容器之间通过hostname通信。但是,由于TDengine集群配置需要每个节点知道其他节点的IP和FQDN,我们可以利用DockerCompose的links或者depends_on来确保启动顺序,但IP问题仍然需要解决。实际上,我们可以使用Docker Compose的“hostname”和“container_name”来固定容器名,然后使用自定义网络,这样容器间就可以通过容器名(hostname)解析到IP。但是,TDengine要求每个节点在配置集群时使用相同的FQDN,并且这个FQDN必须能够解析到对应的IP。因此,我们可以设置每个容器的hostname为对应的节点名(如taos1, taos2, taos3),然后在docker-compose.yml中配置网络别名(aliases)或者直接使用服务名作为网络标识。 然而,更简单的方法是在每个容器中通过extra_hosts手动添加其他节点的IP和主机名映射。但是,由于我们无法预先知道IP,所以我们可以使用DockerCompose的network配置,让容器在同一个网段,然后使用固定的容器名(container_name)作为主机名,然后在每个容器中通过extra_hosts将其他容器的主机名指向其容器名(因为同一自定义网络中,容器名可以解析为容器的IP)。但是,这样其实不需要extra_hosts,因为Docker网络会自动解析容器名。 因此,我们可以在docker-compose.yml中这样配置: -创建一个自定义网络。 -每个容器设置container_name(作为主机名)和hostname(也设为相同值),这样在容器内部,hostname就是设定的值,并且其他容器可以通过这个hostname(即container_name)解析到该容器的IP。但是,注意:TDengine要求每个节点在启动时能够通过FQDN解析到其他节点的IP。因此,我们只需要确保每个容器中,其他节点的FQDN(即hostname)能够解析到正确的IP即可。而Docker自定义网络会自动将容器名(container_name)和hostname解析为容器的IP,所以我们可以直接使用。步骤: 1.编写docker-compose.yml文件,定义三个服务:td1(主节点)、td2、td3。2.每个服务使用相同的镜像:tdengine/tdengine(可以使用特定版本,如tdengine/tdengine:3.0.0.0) 3.每个服务设置container_name和hostname(例如,td1、td2、td3)。 4.每个服务暴露必要的端口(6030-6049,以及UDP端口6043-6049)。5.创建一个自定义网络,让三个容器都连接在这个网络上,这样它们可以通过hostname互相访问。 6.启动主节点(td1),然后启动从节点(td2、td3)并加入集群。但是,TDengine集群的配置需要在启动容器后执行命令来配置。我们可以通过环境变量或者启动脚本来完成。 根据TDengine官方文档,在启动容器时,可以通过环境变量来配置集群。例如:-对于主节点,设置环境变量`TAOS_FIRST_EP`为空(因为它是第一个节点) -对于从节点,设置环境变量`TAOS_FIRST_EP`为主节点的FQDN(即td1:6030)另外,每个节点需要设置`TAOS_SERVER_PORT`为6030(默认端口)。但是,实际上,TDengine在容器启动时会根据环境变量自动配置。具体可参考官方文档:https://www.taosdata.com/docs/cn/v3.0/management#container环境变量:- `TAOS_FQDN`:节点的FQDN(必须与hostname一致)- `TAOS_FIRST_EP`:第一个节点的FQDN:端口(主节点)- `TAOS_SERVER_PORT`:节点监听的端口(默认6030)注意:在集群中,每个节点的`TAOS_FQDN`必须不同,并且必须能够被其他节点解析。 因此,我们可以在docker-compose.yml中为每个节点设置环境变量。主节点(td1):- TAOS_FQDN: td1-TAOS_FIRST_EP:td1:6030#也可以是空,因为它是第一个节点,但官方示例中设置为主节点的FQDN-TAOS_SERVER_PORT:6030从节点(td2):- TAOS_FQDN: td2-TAOS_FIRST_EP:td1:6030#指向主节点-TAOS_SERVER_PORT:6030从节点(td3)同理。但是,注意:官方文档提到,如果使用Docker,主节点(第一个节点)的`TAOS_FIRST_EP`应该设置为自己的FQDN,而其他节点设置为第一个节点的FQDN。因此,主节点设置`TAOS_FIRST_EP=td1:6030`,从节点设置`TAOS_FIRST_EP=td1:6030`。另外,每个节点还需要设置`TAOS_DISABLE_ADMIN`为0(以启用管理接口)?这个根据版本,可能需要设置。 我们按照官方推荐,使用环境变量配置。 同时,我们需要将数据目录挂载到宿主机,以便持久化数据。因此,我们编写docker-compose.yml如下:```yamlversion:'3'services:td1:image: tdengine/tdengine:latestcontainer_name: td1hostname:td1environment:-TAOS_FQDN=td1- TAOS_FIRST_EP=td1:6030- TAOS_SERVER_PORT=6030ports:- "6030:6030"-"6041:6041"- "6043-6049:6043-6049"-"6043-6049:6043-6049/udp"volumes:- ./data/td1/data:/var/lib/taos- ./data/td1/log:/var/log/taosnetworks:- taos-nettd2:image:tdengine/tdengine:latestcontainer_name:td2hostname: td2environment:- TAOS_FQDN=td2-TAOS_FIRST_EP=td1:6030-TAOS_SERVER_PORT=6030volumes:-./data/td2/data:/var/lib/taos- ./data/td2/log:/var/log/taosnetworks:- taos-nettd3:image: tdengine/tdengine:latestcontainer_name: td3hostname:td3environment:-TAOS_FQDN=td3- TAOS_FIRST_EP=td1:6030- TAOS_SERVER_PORT=6030volumes:- ./data/td3/data:/var/lib/taos-./data/td3/log:/var/log/taosnetworks:-taos-netnetworks:taos-net:driver: bridge```注意:这里我们只暴露了主节点(td1)的端口,因为通常我们通过主节点来访问集群。从节点不需要暴露端口给宿主机(除非有特殊需求),因为它们之间通过内部网络通信。但是,如果我们希望通过宿主机访问每个节点,也可以暴露从节点的端口,但需要映射到不同的宿主机端口(避免冲突)。例如,td2的6030端口可以映射到宿主机6031,但这样配置较复杂,通常只需要访问主节点即可。另外,我们使用了volumes将数据目录和日志目录挂载到宿主机当前目录下的data子目录中,这样即使容器删除,数据也能保留。启动步骤:1.创建docker-compose.yml文件。2.在终端中执行:`docker-composeup -d`3.等待容器启动后,进入主节点容器:`docker exec-ittd1bash`4.在容器内,执行`taos`进入命令行,然后执行`SHOW DNODES;`查看集群节点状态,应该能看到三个节点。注意:由于从节点启动后会自动向主节点注册,所以集群会自动组建。 但是,根据TDengine的版本,可能需要手动添加节点。在较新的版本中(3.0+),通过环境变量配置,节点会自动加入集群。 如果自动加入失败,可能需要手动添加: 在taos命令行中,执行:```sqlCREATEDNODE"td2:6030"; CREATEDNODE"td3:6030"; ```但上述docker-compose.yml配置的环境变量应该可以自动完成集群配置。 引用[3]提到社区版无法使用delete命令,这是企业版功能,所以我们在部署时注意避免使用delete操作。 以上步骤即可完成TDengine集群的部署。 相关问题: 1.如何验证TDengine集群是否正常工作?2.TDengine集群的节点故障如何处理?3.TDengine集群的数据如何备份和恢复?</think>### 使用 Docker 部署 TDengine 数据库集群 以下是基于 Docker 部署 TDengine 集群的完整步骤,支持单机多节点或多主机集群两种模式: --- #### **一、单机多节点部署(Docker Compose)** **适用场景**:本地开发/测试环境 **配置文件**:`docker-compose.yml` ```yaml version: '3' services: td-node1: image: tdengine/tdengine:3.3.2.0 hostname: td-node1 container_name: td-node1 environment: TAOS_FQDN: td-node1 TAOS_FIRST_EP: td-node1:6030 # 主节点地址 ports: - "6030:6030" - "6041:6041" volumes: - ./node1/data:/var/lib/taos - ./node1/log:/var/log/taos networks: taos-net: aliases: [td-node1] td-node2: image: tdengine/tdengine:3.3.2.0 hostname: td-node2 container_name: td-node2 environment: TAOS_FQDN: td-node2 TAOS_FIRST_EP: td-node1:6030 # 指向主节点 volumes: - ./node2/data:/var/lib/taos - ./node2/log:/var/log/taos networks: taos-net: aliases: [td-node2] networks: taos-net: driver: bridge ``` **部署步骤**: 1. 创建配置文件并启动: ```bash mkdir -p {node1,node2}/{data,log} docker-compose up -d ``` 2. 进入主节点配置集群: ```bash docker exec -it td-node1 bash taos # 进入TDengine CLI ``` ```sql CREATE DNODE "td-node2:6030"; -- 添加从节点 SHOW DNODES; -- 查看集群状态 ``` --- #### **二、多主机集群部署(Docker Swarm)** **适用场景**:生产环境分布式部署 **节点规划**: | 主机 | IP | 角色 | |---------|--------------|--------| | taos1 | 192.168.1.10 | Leader | | taos2 | 192.168.1.11 | Follower | | taos3 | 192.168.1.12 | Follower | **部署步骤**: 1. **始化 Swarm 集群**(在 Leader 节点执行): ```bash docker swarm init --advertise-addr 192.168.1.10 ``` 2. **添加工作节点**: ```bash # 在 taos2taos3 执行返回的加入命令 docker swarm join --token <TOKEN> 192.168.1.10:2377 ``` 3. **创建集群配置文件**:`taos-cluster.yml` ```yaml version: '3.8' services: tdengine: image: tdengine/tdengine:3.3.2.0 deploy: replicas: 3 placement: constraints: [node.role == worker] environment: TAOS_FQDN: "{{.Service.Name}}.{{.Task.Slot}}" TAOS_FIRST_EP: "tdengine.1" # 主节点 volumes: - taos-data:/var/lib/taos - taos-log:/var/log/taos networks: - taos-net networks: taos-net: driver: overlay volumes: taos-data: taos-log: ``` 4. **部署集群**: ```bash docker stack deploy -c taos-cluster.yml tdengine ``` --- #### **三、关键配置说明** 1. **环境变量**: - `TAOS_FQDN`:节点唯一域名(需匹配主机名) - `TAOS_FIRST_EP`:主节点地址(格式:`<主机名>:6030`) 2. **端口映射**: - `6030`:TDengine 客户端端口 - `6041`:REST API 端口 - `6043-6049`:分布式通信端口(需暴露 UDP) 3. **数据持久化**: ```yaml volumes: - /host/path:/var/lib/taos # 数据目录 - /host/log:/var/log/taos # 日志目录 ``` --- #### **四、验证集群状态** ```bash # 进入任意容器 docker exec -it td-node1 bash # 在TDengine CLI中执行 taos> SHOW DNODES; ``` **预期输出**: ``` id | endpoint | vnodes | ... ---+-------------+--------+----- 1 | td-node1:6030 | 1 | ... 2 | td-node2:6030 | 1 | ... ``` --- #### **注意事项** 1. **社区版限制**:社区版不支持 `DELETE` 操作(仅企业版支持)[^3] 2. **网络要求**: - 节点间需开放 `6030-6049` TCP/UDP 端口 - 跨主机部署时配置 `/etc/hosts` 解析: ``` 192.168.1.10 td-node1 192.168.1.11 td-node2 ``` 3. **版本兼容性**:所有节点必须使用相同版本的 TDengine 镜像 > 部署问题参考:[TDengine 官方文档](https://www.taosdata.com/docs/cn/v3.0/management#container) [^1][^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knight-Key

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值