提升企业级数据处理效率!3.0 系列版本的四个集群优化点详解

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 为了帮助企业更好地进行大数据处理,我们在此前 TDengine 3.x 系列版本中进行了几项与集群相关的优化和新功能开发,本文将对这几项重要优化进行详细阐述。

为了帮助企业更好地进行大数据处理,我们在此前 TDengine 3.x 系列版本中进行了几项与集群相关的优化和新功能开发,以提升集群的稳定性和在异常情况下的恢复能力。这些优化包括 clusterID 隔离、leader rebalance、raft learner 和 restore dnode。本文将对这几项重要优化进行详细阐述,以解答企业在此领域的疑问,并帮助大家更好地应对相关挑战。

clusterID 隔离

  1. 问题
  • firstEp 节点挂掉后,磁盘挂载错误,挂载了一个空白磁盘启动,或者 firstEp 数据被意外删除;
  • firstEp 再次重启。严重点是这个出错的节点,导致其他节点也无法工作,整个集群都挂掉,集群失去了高可用特性。
  1. 造成的后果

firstEp 节点在无数据的情况下重新启动,相当于新创建了一个集群,它重新初始化为一个新集群(重新生成了 clusterid),但此时原集群(旧的 clusterId)中的其它 N-1 个节点仍然向它们所保存的 firstEp 发送心跳,而收到心跳消息的 firstEp 已经是一个新的集群了,所以会拒绝心跳消息,返回节点不存在,要求心跳发送方下线,这些节点收到下线通知后会主动下线,直接导致原集群中的所有节点都不可用

  1. 解决办法

为节点心跳、raft 心跳增加对 clusterid 的判断,即对 clusterid 进行隔离,让具有不同 clusterid 的节点可以独立运行。这种解决办法可以应对节点已经在空白数据上重启的情况。

  1. 解决后的效果

在出现磁盘故障后,firstEp 节点启动后,会形成两个集群,一个是 firstEp 节点形成的单节点新集群,另一个是所有其他节点保持旧 clusterid 的旧集群。两个集群可以独立且互不干扰的正常运行。

RAFT Leader Rebalance(TDengine Enterprise 企业版)

  1. 问题

比较常见的使用场景,在滚动升级后,所有的 leader 都被赶到一个节点上,整个集群严重失衡

  1. 解决办法

增加 balance vgroup leader; 的 SQL 命令,由 DBA 人工触发集群再平衡,该命令会依次顺序对每个 vgroup 强制重新选举 RAFT leader。因为选举是随机的,所以我们可以通过选举让 leader 迁移到其他的节点上。

  1. 解决后的效果

选举理论上随机选出 leader,导致 leader 散开的结果。理论上会均匀,实际上不会绝对均匀。

Raft Learner

  1. 问题

在副本变更时(create mnode, alter db replia),如果存量数据(元数据或时序数据)量比较大时,相应操作会执行很长时间,要等待存量数据同步完成后命令才能执行完成,并且在此期间会阻塞数据写入

  1. 解决办法

在 Leader/Follower/Candidate 之外引入第四种 Raft 角色——Raft learner。Raft Learner 只同步数据不参与选主,也不参与数据写入时的一致性协议。当 Raft Learner 的数据同步进度被追上后才会变身为 Follower,成为 Raft 集群的一部分。这样命令虽然执行很长时间,但不会阻塞写入

  1. 受影响的命令

Create mnode on dnode id;

ALTER DATABASE power replica 3;
Create mnode on dnode id;ALTER DATABASE power replica 3;

  1. 解决后的效果

副本变更时,不会再阻塞写入。相应的命令执行可以很快返回。

Restore dnode(TDengine Enterprise 企业版)

  1. 问题

数据盘出现问题,重新挂载新数据盘,这个节点上所有数据目录都丢失

  1. 解决办法

增加命令:

restore dnode <dnode_id>;# 恢复dnode上的mnode,所有vnode和qnode

restore mnode on dnode <dnode_id>;# 恢复dnode上的mnode

restore vnode on dnode <dnode_id> ;# 恢复dnode上的所有vnode

restore qnode on dnode <dnode_id>;# 恢复dnode上的qnode

该命令,从 mnode 读取节点中关于 mndoe、vnode、qnode 的信息,按照这些在节点重建 mnode、vnode、qnode,在重建结束后,会开始从其他副本复制数据。

  1. 解决后的效果

按照原有的 taos.cfg 的配置启动 taosd,该节点会自动加入群,并且 dnode 显示为 ready,即 online 状态。在节点变为 online 后,通过命令可恢复全部 mnode、vnode、qnode,也可以分别恢复。

  1. 功能限制

该功能是基于已有的复制功能的恢复,不是灾难恢复或者备份恢复,所以对于 mnode 和 vnode 来说,使用该命令一定是还存在其他 mnode 和 vnode 的其他副本。该命令不能修复数据目录中个别文件的损坏或者丢失,是整体的恢复一个 mnode 或者 vnode。

写在最后

通过本文,相信大家已经初步了解了上述几项功能优化。如果你对这些功能有进一步的了解需求,或者希望进一步讨论在应用中遇到的问题,欢迎与我们专业的解决方案架构师直接沟通。

目录
相关文章
|
SQL 关系型数据库 MySQL
MySQL 事务详解
在数据库管理中,事务是一组SQL语句的执行单元,它们被视为一个整体。事务的主要目标是保持数据库的一致性和完整性,即要么所有SQL语句都成功执行,要么所有SQL语句都不执行。在MySQL中,事务起到了非常重要的作用,特别是在需要确保数据的完整性和一致性的应用程序中。 本文将详细介绍MySQL事务的概念、特性、隔离级别、事务的控制和示例代码等内容,以帮助您更好地理解和应用MySQL事务。
497 2
|
6月前
|
存储 弹性计算 安全
阿里云服务器四种购买方式解析:自定义、快速、活动、云市场镜像选购流程参考
阿里云服务器主要的购买方式有自定义购买、快速购买、通过活动购买、通过云市场镜像页面购买这四种购买方式。然而,面对阿里云服务器多样化的购买方式和配置选项,有些新手用户并不清楚他们的区别及具体流程,因此可能不知道哪种方式更适合自己。本文将详细解析阿里云服务器的四种主流购买方式的适用场景及购买流程,帮助用户轻松选择最适合自己的购买途径。
|
存储 安全 数据安全/隐私保护
在Docker中,Docker安全么?
在Docker中,Docker安全么?
|
Prometheus Cloud Native Java
解决golang 的内存碎片问题
解决golang 的内存碎片问题
173 3
|
11月前
|
JSON 人工智能 自然语言处理
剖析大模型连“Strawberry”的“r”都数不对的原因
本文将从两个常见的大模型翻车问题入手解析这些问题背后体现的大模型技术原理,并解释了为什么会导致这些问题,接着我们利用CoT(思维链)方法解决这些问题并基于上述原理试图剖析CoT方法起作用的可能原因,最后提出【理由先行】风格这一简单有效的Prompt Trick。
1394 36
|
12月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
338 9
|
运维 负载均衡 监控
slb学习教程
【9月更文挑战第1天】
323 1
|
人工智能 安全 API
【解锁神秘力量!】ModelScope中的访问令牌:掌控AI世界的钥匙 —— 探索身份验证与授权的终极奥秘!
【8月更文挑战第7天】ModelScope(魔搭)作为开放的模型即服务平台,提供丰富的预训练模型。访问令牌在此类平台中至关重要,用于验证用户身份并授权访问特定模型或服务。本文介绍访问令牌的概念、获取方法及使用示例,强调安全性与有效期内的使用,并简述刷新令牌机制。掌握这些知识可帮助用户安全高效地利用ModelScope的资源。
461 1
QObject的setUserData和setProperty——Qt
QObject的setUserData和setProperty——Qt
351 0