9-TDengine低版本分页offset出现bug,如何平滑升级版本、迁移数据

简介: 9-TDengine低版本分页offset出现bug,如何平滑升级版本、迁移数据

背景


为什么要对 TDengine 进行升级?


从一开始使用 TDengine 就选了当时最新的版本 2.1.2.0 ,这个版本应该也不算旧了。不过今天在使用其分页功能查询表时,发现了一个问题, TDengine 毕竟是一款新的数据库,有问题也很正常。


[root@hadoop2 ~]# taos --version
version: 2.1.2.0


问题复现


前端页面点击不同页码后,表格的数据不变。。。

image.png

使用 SpringBoot 集成了 TDengine , MyBatisPlus 后,在对一些表中分页查询时,不同的 offset 竟然返回相同的值。检查了前后端参数数据交互,没啥问题;以下是 MyBatisPlus 关于表查询的前3页生成的SQL语句,拿着这些语句在 taos 客户端执行,竟然返回相同的数据!!神奇了~

SELECT ts,voltage,currente,temperature,sn,city,groupid  FROM power  WHERE sn = '1105' AND ts BETWEEN '2021-09-07 09:15:11.138
' AND '2021-09-07 10:15:11.138' and groupid=2 LIMIT 10 offset 10;
SELECT ts,voltage,currente,temperature,sn,city,groupid  FROM power  WHERE sn = '1105' AND ts BETWEEN '2021-09-07 09:15:11.138
' AND '2021-09-07 10:15:11.138' and groupid=2 LIMIT 10 offset 20;
SELECT ts,voltage,currente,temperature,sn,city,groupid  FROM power  WHERE sn = '1105' AND ts BETWEEN '2021-09-07 09:15:11.138
' AND '2021-09-07 10:15:11.138' and groupid=2 LIMIT 10 offset 30;

也就是说 offset 在这里好像并没有起作用,经过反复检查代码与配置,并在官方的 Issues 中检索后,发现这可能是个bug,而且也有对应的PR,新版本可能已经解决了这个问题。那么就升级下版本试试?


主要有两大步骤:


  1. 升级服务端;
  2. 升级客户端;


版本升级:升级服务端


我这里从 2.1.2.0 升级为 2.2.0.0 版本。


为了防止数据丢失,虽然我放的都是测试数据(官方demo数据以及我自建的测试数据,数据量都是亿级别),不过还是对两台虚拟机做了快照,哈哈~


之前我的两台虚拟机上的 TDengine 已经建立了集群,不过在这次升级版本时,我并没有将第二台主机移出集群,一方面也是想看看 TDengine 在做这种版本升级时对已有的数据以及集群是怎么处理的,另一方面,毕竟做了快照,随时可以进行时光穿梭(论备份的重要性)。


  • 下载rpm
[root@hadoop1 local]# wget https://www.taosdata.com/assets-download/TDengine-server-2.2.0.0-Linux-x64.rpm
  • 第一台主机上的操作:
[root@hadoop1 ~]# taos --version
version: 2.1.2.0
# 停止旧版本taosd服务
[root@hadoop1 ~]#  systemctl stop taosd
# 查看已安装的版本信息
[root@hadoop1 ~]# rpm -qa | grep tdengine
tdengine-2.1.2.0-3.x86_64
# 卸载旧版本
[root@hadoop1 ~]# rpm -e tdengine
TDengine is removed successfully!
警告:文件 /usr/local/taos/cfg/taos.cfg: 移除失败: 没有那个文件或目录
# 安装新版本
[root@hadoop1 local]# rpm -ivh TDengine-server-2.2.0.0-Linux-x64.rpm
# 启动新版本
[root@hadoop1 local]# systemctl start taosd
# 确认新版本服务状态
[root@hadoop1 local]# systemctl status taosd
● taosd.service - TDengine server service
   Loaded: loaded (/etc/systemd/system/taosd.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2021-09-10 10:42:11 CST; 1s ago
  Process: 121891 ExecStartPre=/usr/local/taos/bin/startPre.sh (code=exited, status=0/SUCCESS)
 Main PID: 121899 (taosd)
   CGroup: /system.slice/taosd.service
           └─121899 /usr/bin/taosd
9月 10 10:42:11 hadoop1 systemd[1]: Starting TDengine server service...
9月 10 10:42:11 hadoop1 systemd[1]: Started TDengine server service.
9月 10 10:42:11 hadoop1 TDengine:[121899]: Starting TDengine service...
9月 10 10:42:12 hadoop1 TDengine:[121899]: Started TDengine service successfully.
  • 第二台主机上的操作:
[root@hadoop2 ~]# taos --version
version: 2.1.2.0
# 停止旧版本taosd服务
[root@hadoop2 ~]# systemctl stop taosd
# 查看已安装的版本信息
[root@hadoop2 ~]# rpm -qa | grep tdengine
tdengine-2.1.2.0-3.x86_64
# 卸载旧版本
[root@hadoop2 ~]# rpm -e tdengine
TDengine is removed successfully!
警告:文件 /usr/local/taos/cfg/taos.cfg: 移除失败: 没有那个文件或目录
# 安装新版本
[root@hadoop2 local]# rpm -ivh TDengine-server-2.2.0.0-Linux-x64.rpm
# 启动新版本
[root@hadoop2 local]# systemctl start taosd
[root@hadoop2 local]# taos --version
version: 2.2.0.0
# 确认新版本服务状态
[root@hadoop2 local]#  systemctl status taosd
● taosd.service - TDengine server service
   Loaded: loaded (/etc/systemd/system/taosd.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2021-09-10 10:45:29 CST; 14min ago
  Process: 117249 ExecStartPre=/usr/local/taos/bin/startPre.sh (code=exited, status=0/SUCCESS)
 Main PID: 117256 (taosd)
   CGroup: /system.slice/taosd.service
           └─117256 /usr/bin/taosd
9月 10 10:45:29 hadoop2 systemd[1]: Starting TDengine server service...
9月 10 10:45:29 hadoop2 systemd[1]: Started TDengine server service.
9月 10 10:45:29 hadoop2 TDengine:[117256]: Starting TDengine service...
9月 10 10:45:30 hadoop2 TDengine:[117256]: Started TDengine service successfully.

这样两台主机上的 taosd 服务启动后,自动恢复了旧版本的集群, GUI 客户端可连接(使用的是 JDBC-RESTful 方式),而且数据都在,一切正常。这时不禁会有一个疑问:

Q: 哇哦,服务启动后,数据竟然无需进行迁移,而且自动恢复集群啦~,这是什么神仙操作。
A: 其实,稍微观察下就知道,我们在执行卸载命令后,旧版本的配置以及数据甚至日志并没有删除,这也是`TDengine`比较人性化的地方,毕竟不能随意就将用户的数据删除。rpm方式安装后的默认目录如下:
配置文件:`/etc/taos/taos.cfg`
数据目录:`/var/lib/taos`
日志目录:`/var/log/taos`


版本升级:升级客户端


升级了 TDengine 的后台服务后,可能还需要升级客户端。


  1. 如果使用的是 JDBC-RESTful 接口方式,无要依赖本地函数库,就没啥问题,无需做其他改动,直接可以用,到此就升级结束啦;


  1. 如果使用的是 JDBC-JNI 方式,则开发环境的客户端需要升级,同时项目中的taos-jdbcdriver版本也需要升级;即只有这种情况下才需要进行以下操作。


  • Windows10上的taos客户端版本升级


当然,直接下载与服务端相同版本的客户端即可,不要自己找麻烦哦。

我这里从 2.1.2.0 升级为 2.2.0.0 版本。


下载指定版本客户端并安装: https://www.taosdata.com/assets-download/TDengine-client-2.2.0.0-Windows-x64.exe


  • pom文件中的taos-jdbcdriver依赖版本升级

image.png

<dependency>
    <groupId>com.taosdata.jdbc</groupId>
    <artifactId>taos-jdbcdriver</artifactId>
    <version>2.0.30</version>
</dependency>

修改为:

<dependency>
    <groupId>com.taosdata.jdbc</groupId>
    <artifactId>taos-jdbcdriver</artifactId>
    <version>2.0.31</version>
</dependency>


目录
相关文章
|
2月前
|
存储 数据库 对象存储
新版本发布:查询更快,兼容更强,TDengine 3.3.4.3 功能解析
经过 TDengine 研发团队的精心打磨,TDengine 3.3.4.3 版本正式发布。作为时序数据库领域的领先产品,TDengine 一直致力于为用户提供高效、稳定、易用的解决方案。本次版本更新延续了一贯的高标准,为用户带来了多项实用的新特性,并对系统性能进行了深度优化。
56 3
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB开源社区动态:最新版本功能亮点与更新解读
【9月更文挑战第6天】随着云计算技术的发展,分布式数据库系统成为企业数据处理的核心。阿里云的云原生数据库PolarDB自开源以来备受关注,近日发布的最新版本在内核稳定性、性能、分布式CDC架构及基于时间点的恢复等方面均有显著提升,并新增了MySQL一键导入功能。本文将解读这些新特性并提供示例代码,帮助企业更好地利用PolarDB处理实时数据同步和离线分析任务,提升数据安全性。未来,PolarDB将继续创新,为企业提供更高效的数据处理服务。
338 4
|
存储 SQL Cloud Native
PolarDB-X内核新版本:更精细的数据管理
非常高兴为大家带来PolarDB-X内核5.4.14版本。在最新版本中提供了冷热数据存储分离、数据Locality、数据热点诊断、并行DML优化、Flashback Query和AUTO_INCREMENT兼容性,大幅提升了数据的可管理性、SQL处理能力和兼容性,并针对数据热点问题为用户提供了更多运维手段。
|
缓存
「OushuDB」版本升级 二进制替换升级步骤
请注意需要留下足够的升级与测试时间,避免升级出现问题需要回退到老版本。另外,请在升级前做好数据的备份工作,防止出现意外。
129 0
|
SQL 缓存 分布式计算
热点 | MongoDB最全面的增强版本 4.4 新特性曝光
阿里云作为 MongoDB 官方的全球战略合作伙伴,将全网独家上线 4.4 新版本。
1758 0
热点 | MongoDB最全面的增强版本 4.4 新特性曝光
|
SQL 关系型数据库 网络安全
PostgreSQL 大版本升级方法之一 - 不落地并行导出导入
标签 PostgreSQL , 大版本升级 , rds_dbsync , pg_dump , pg_restore 背景 尽量快的大版本升级的方法。 一、9.4以下版本,使用pg_dump并行导出,pg_restore并行导入,迁移 (导出使用源版本pg_dump,导入使用目标版本pg_restore。
2136 0
|
存储 Kubernetes 容器
K8S存储插件版本信息与升级方案
新创建的K8S集群默认安装的都是最新的存储插件,但有时特殊情况需要升级插件到某个版本,可以按照以下方式进行操作; 登陆master节点或者控制端,按照以下操作: 升级flexvolume 目前最新版本(v1.
3577 0
|
数据库
GreenDao 兼容升级,保留旧数据的---全方面解决方案
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.
1728 0
|
程序员 C#
C#各个版本中的新增特性详解
原文:C#各个版本中的新增特性详解 序言 自从2000年初期发布以来,c#编程语言不断的得到改进,使我们能够更加清晰的编写代码,也更加容易维护我们的代码,增强的功能已经从1.0搞到啦7.0甚至7.1,每一次改过都伴随着.NET Framework库的相应支持,也不断的带给我们期待与惊喜。
1587 0

热门文章

最新文章