掘金 后端 ( ) • 2024-04-28 17:07

注:集群搭建是在虚拟机中进行的,与阿里云部署网路部分可能略有差异;请自行调整

一,修改服务器ip和主机名

ip修改路径:vim /etc/sysconfig/network-scripts/ifcfg-ens33

(我的虚拟机测试集群网段为192.168.103.*)

主机名修改路径:vim /etc/hostname

二,开放端口或者关闭防火墙

数据库需要确保集群中所有主机在端口 6030-6042 上的 TCP/UDP 协议能够互通。(如果关闭了防火墙可忽略)

防火墙未关闭执行该命令:

sudo firewall-cmd --zone=public --add-port=6030-6042/tcp --permanent && sudo firewall-cmd --reload

查看端口是否开放:

sudo firewall-cmd --zone=public --list-ports

三,安装包下载上传与安装

官方页面选择tar.gz下载需要安装包

(我使用的是3.2.3.0版本)

提示输入邮箱地址,会发送到指定邮箱

将安装包上传到需要的位置并进行解压 解压文件后,进入相应子目录,执行其中的 安装脚本:

sudo ./install.sh

执行该命令时会提示以下内容:

直接回车;第二个提示(该提示尤其要注意不要输入错误):

该提示需要统一输入第一个数据库时的服务器名称加端口;

输入完成后,回车,第三个提示:

该提示可忽略直接回车;

回车后,当控制台看到以下内容时,则安装完成;

安装完成后检查配置文件中的配置项是否正确

fqdn为当前服务器名称 firstEp 为后边启动数据库时的第一台服务器的名称加端口,(启动时也必须先启动firstEp指定的服务器上的数据库)

后边第二台以及第n台都按照该方式安装。

四,服务器启动与集群配置

1,启动数据库:

在指定的第一台服务器上启动第一个数据库,如上图我指定的是hadoop105:

sudo systemctl start taosd

执行命令:taos 进入taos 命令界面

show dnodes;

可以看到刚启动的数据节点的 End Point 是:hadoop105:6030,就是这个新集群的 firstEp

2,启动其他服务器:

在第二台服务器上执行"1,启动数据库"中命令,启动数据库。

数据库启动后在第一台服务器上执行命令添加数据节点:

CREATE DNODE "hadoop106:6030";

并查看添加的数据节点是否正常

如果该被加入的数据节点处于离线状态(offline),请做以下检查:

  1)首先要检查增加的新节点上的 taosd 服务是否已经正常启动
  2)如果已经启动,再检查到新节点的网络是否通畅,可以使用 ping fqdn 验证下
  3)如果前面两步都没有问题,这一步要检查新节点做为独立集群在运行了,可以使用 taos -h fqdn 连接上后,show dnodes; 命令查看.
    如果显示的列表与你主节点上显示的不一致,说明此节点自己单独成立了一个集群,解决的方法是停止新节点上的服务,然后清空新节点上
    taos.cfg 中配置的 dataDir 目录下的所有文件,重新启动新节点服务即可解决。

如果该方式还不能解决,删除数据库,重新安装部署

安装完成后,在各个节点执行show dnodes;都可以看到下图这种状态

3,数据库删除

如果出现错误或需重装,执行内置删除命令

rmtaos

此命令并不会清除data和log目录, 建议手工清理彻底删除。

rm -rf /etc/taos/

rm -rf /var/log/taos/

rm -rf /var/lib/taos/

然后重新安装重新启动 一定要查看/var/lib/taos/ 是否生成以下文件(mnode除firstEp外其他节点可以没有)

以及文件夹中是否有对应的.json*(vnode除外)

五,mnode-集群的高可用

1,mnode的官方解释

管理节点(mnode): 一个虚拟的逻辑单元,负责所有数据节点运行状态的监控和维护,以及节点之间的负载均衡(图中 M)。同时,管理节点也负责元数据(包括用户、数据库、超级表等)的存储和管理,因此也称为 Meta Node。TDengine 集群中可配置多个(最多不超过 3 个)mnode,它们自动构建成为一个虚拟管理节点组(图中 M1,M2,M3)。mnode 支持多副本,采用 RAFT 一致性协议,保证系统的高可用与高可靠,任何数据更新操作只能在 Leader 上进行。mnode 集群的第一个节点在集群部署时自动完成,其他节点的创建与删除由用户通过 SQL 命令完成。每个 dnode 上至多有一个 mnode,由所属的数据节点的 EP 来唯一标识。每个 dnode 通过内部消息交互自动获取整个集群中所有 mnode 所在的 dnode 的 EP。

按照该解释mnode的需要三个节点各有一个才能保证其中一台服务器宕机时集群能够正常运行

2,mnode的创建

3.X版本的集群部署完成后,只有一个mnode,

所以我们需要在集群中在创建一个mnode,创建命令:

create mnode on dnode id;

创建完成后查看:

3,mnode的删除

drop mnode on dnode id;

4,mnode的宕机测试

4.1三节点的集群中有两个mnode宕机验证

三节点集群中有两个mnode:

宕机主mnode的moster集群不能正常运行

4.2三节点集群中三个mnode宕机验证

三节点急群众三个mnode宕机主节点

服务正常运行

六,taosAdapter 的开启

1,为什么开始taosAdapter

TDengine数据库提供了三种访问方式:

  1. 通过客户端驱动程序 taosc 直接与服务端程序 taosd 建立连接,这种连接方式下文中简称 “原生连接”。
  2. 通过 taosAdapter 组件提供的 REST API 建立与 taosd 的连接,这种连接方式下文中简称 “REST 连接”
  3. 通过 taosAdapter 组件提供的 Websocket API 建立与 taosd 的连接,这种连接方式下文中简称 “Websocket 连接”

我们想要不安装客户端访问数据库必须要开启taosAdapter组件。

2,开启taosAdapter

在集群的每台服务器上都执行命令:

systemctl start taosadapter就开启taosAdapter服务了

同理想要关闭taosadapter服务在每台服务器都执行命令: systemctl stop taosadapter就可以停止服务了

tdengine的字段不允许数字开头,但是我们的productId有些是以数字开头的所以所有字段前边都拼接“_”;

根据测试tdengine的列是不区分大小写的,列名中存在大写查询时存在查不到的情况,所以所有列名都转小写;

数据库名也不允许数字开头

并且也不允许有大写字母