本文记录了在由三个物理节点组成的集群上,原地将TDengine 2.6版升级到3.0版的过程,由于3.0的改动比较大,所以此次升级并非完全平滑的升级,只升级了数据库服务,没有将数据库里的存量数据导入到新版环境,如需保留数据请联系taos团队。本文使用的TDengine版本均为社区版,非docker安装。
一、卸载2.6版
备份配置文件
> ansible allnode -m shell -a "mv /etc/taos/ /etc/taos.bak"
按taos文档说明卸载程序后配置文件是会保留的,但3.0版与2.6版的配置文件(配置项)有差异,直接让3.0使用2.6版配置文件会导致服务启动失败。因此决定自行保留并在安装后再3.0版的配置文件:
当缺省配置文件( /etc/taos/taos.cfg )存在时,仍然使用已有的配置文件,安装包中携带的配置文件修改为taos.cfg.org保存在 /usr/local/taos/cfg/ 目录
备份数据文件
数据文件默认位置在/usr/local/taos/data
。
> ansible allnode -m shell -a "mv /data/tdengine /data/tdengine.bak"
如果升级3.0失败需要恢复为2.6版,则备份的数据文件会起作用,否则可以删除。数据文件的位置以taos.cfg
文件内的配置为准。
停止taosd服务并卸载程序
> ansible allnode -m shell -a "systemctl stop taosd"
> ansible allnode -m shell -a "rpm -e tdengine"
192.168.130.153 | CHANGED | rc=0 >>
taosadapter is running, stopping it...
TDengine is removed successfully!
192.168.130.154 | CHANGED | rc=0 >>
taosadapter is running, stopping it...
TDengine is removed successfully!
192.168.130.152 | CHANGED | rc=0 >>
taosadapter is running, stopping it...
TDengine is removed successfully!
其中ansible allnode -m shell -a
命令是为了方便在集群所有节点上一起执行,如果没有装ansible工具可在每个节点上手工执行,效果是一样的。
二、安装TDengine3.0
下载单机版安装包
TDengine提供了多种格式的安装包,我们在CentOS上选择使用RPM版的。
> wget https://www.taosdata.com/assets-download/3.0/TDengine-server-3.0.1.5-Linux-x64.rpm
由于安装过程中需要输入一些信息,所以建议在每个节点上手工执行(而非通过ansible):
> rpm -ivh TDengine-server-3.0.1.5-Linux-x64.rpm
安装过程会提示输入两个信息,按taos的安装说明输入即可(我两个都选择了回车跳过):
当安装第一个节点时,出现 Enter FQDN: 提示的时候,不需要输入任何内容。只有当安装第二个或以后更多的节点时,才需要输入已有集群中任何一个可用节点的 FQDN,支持该新节点加入集群。当然也可以不输入,而是在新节点启动前,配置到新节点的配置文件中。
三、修改taos配置文件
根据之前备份的2.6版的taos.cfg
文件修改3.0版的配置文件,我这里主要改的是firstEp
、fqdn
、logDir
、dataDir
、timezone
、charset
等几个:
# first fully qualified domain name (FQDN) for TDengine system
firstEp taos-1:6030
# local fully qualified domain name (FQDN)
fqdn taos-1
# The directory for writing log files
logDir /data/tdengine/log
# All data files are stored in this directory
dataDir /data/tdengine/data
# system time zone
timezone Asia/Shanghai (CST, +0800)
# system locale
locale en_US.UTF-8
# default system charset
charset UTF-8
为节约时间,可以先改好第一个节点的,再复制到其他节点,然后只要去每个节点修改fqdn
的值即可。
> scp /etc/taos/taos.cfg root@taos-2:/etc/taos/taos.cfg
> scp /etc/taos/taos.cfg root@taos-3:/etc/taos/taos.cfg
四、启动taosd并查看状态
启动第一个节点
在第一个节点(firstEp)上启动taosd
服务,并验证服务启动成功:
> systemctl start taosd
> systemctl status taosd
此处如果遇到启动失败可进一步查看日志文件来找原因。遇到过一个DND ERROR failed to start since read config error
的错误比较坑,原因提示不明确。后来发现是hostname与taos.cfg不匹配造成的。
在taos命令行里验证此时有一个dnode:
> taos
taos> show dnodes;
id | endpoint | vnodes | support_vnodes | status | create_time | note |
=================================================================================================================================================
1 | taos-1:6030 | 0 | 16 | ready | 2022-10-26 14:50:57.131 | |
Query OK, 1 rows in database (0.003960s)
添加其他节点
与第一个节点类似,只不过启动后要在taos命令行里执行create dnode
命令将当前节点添加到集群。
> systemctl start taosd
> systemctl status taosd
> taos
taos> create dnode "taos-2";
Query OK, 0 of 0 rows affected (0.002127s)
taos> show dnodes;
id | endpoint | vnodes | support_vnodes | status | create_time | note |
=================================================================================================================================================
1 | taos-1:6030 | 0 | 16 | ready | 2022-10-26 14:50:57.131 | |
2 | taos-2:6030 | 0 | 16 | ready | 2022-10-26 14:54:48.635 | |
Query OK, 2 rows in database (0.003566s)
五、创建数据库用户(可选)
创建必要的数据库用户:
> taos -s "CREATE USER k2data PASS 'xxxxxxxx';"
创建必要的database:
注意在2.6里的DAYS改为DURATION了,且3.0不支持UPDATE参数了(相当于UPDATE=1不可修改):
taos -s 'CREATE DATABASE repos REPLICA 3 KEEP 3650 DURATION 10;'
至此TDengine版本升级完成。