当前位置: 首页 > news >正文

TDengine 高可用——双副本

在这里插入图片描述

概述

部分用户期望在保证一定可靠性、可用性条件下,尽可能压缩部署成本。为此,TDengine 提出基于 Arbitrator 的双副本方案,可提供集群中只有单个服务故障且不出现连续故障的容错能力。双副本方案是 TDengine Enterprise 特有功能,在 3.3.0.0 版本中第一次发布,建议使用最新版本。

双副本选主由高可用的 Mnode 提供仲裁服务,不由 Raft 组内决定。

  1. Arbitrator:仲裁服务,不存储数据,VGroup 因某一 Vnode 故障而无法提供服务时,Arbitrator 可根据数据同步情况指定 VGroup 内另一 Vnode 成为 Assigned Leader
  2. AssignedLeader:被强制设置为 Leader 的 Vnode,无论其他副本 Vnode 是否存活,均可一直响应用户请求

在这里插入图片描述

集群配置

双副本要求集群至少配置三个节点,基本部署与配置步骤如下:

  1. 确定服务器节点数量、主机名或域名,配置好所有节点的域名解析:DNS 或 /etc/hosts
  2. 各节点分别安装 TDengine 企业版服务端安装包,按需编辑好各节点 taos.cfg
  3. 可选择其中一个节点仅提供仲裁服务(部署 Mnode),将 SupportVnodes 参数设置为 0,表示不存储时序数据;该占用资源较少,仅需 1~2 核,且可与其他应用共用
  4. 启动各节点 taosd 服务,其他服务可按需启动(taosadapter/taosx/taoskeeper/taos-explorer)

约束条件

  1. 最小配置的服务器节点数为 2+1 个,其中两个数据节点,一个仲裁节点
  2. 双副本为数据库建库参数,不同数据库可按需选择副本数
  3. 支持 TDengine 集群的完整特性,包括:读缓存、数据订阅、流计算等
  4. 支持 TDengine 所有语言连接器以及连接方式
  5. 支持单副本与双副本之间切换(前提是节点数量满足需求、各节点可用 Vnode 数量/内存/存储空间足够)
  6. 不支持双副本与三副本之间的切换
  7. 不支持双副本切换为双活,除非另外部署一套实例与当前实例组成双活方案

运维命令

创建集群

创建三节点的集群

CREATE dnode <dnode_ep> port <dnode_port>;
CREATE dnode <dnode_ep> port <dnode_port>;

创建三副本的 Mnode,保证 Mnode 高可用,确保仲裁服务的高可用

CREATE mnode on dnode <dnode_id>;
CREATE mnode on dnode <dnode_id>;

数据库创建

按需创建双副本数据库

create database <dbname> replica 2 vgroups xx buffer xx ...

修改数据库副本数

创建了单副本数据库后,希望改为双副本时,可通过 alter 命令来实现,反之亦然

alter database <dbname> replica 2|1

异常情况

异常场景集群状态
没有 Vnode 发生故障:Arbitrator 故障(Mnode 宕机节点超过一个,导致 Mnode 无法选主)持续提供服务
仅一个 Vnode 故障:VGroup 已经达成同步后,某一个 Vnode 才发生故障的持续提供服务
仅一个 Vnode 故障:2 个 Vnode 同时故障,故障前 VGroup 达成同步,但是只有一个 Vnode 从故障中恢复服务,另一个 Vnode 服务故障通过下面的命令,强制指定 leader, 继续提供服务
仅一个 Vnode 故障:离线 Vnode 启动后,VGroup 未达成同步前,另一个 Vnode 服务故障的无法提供服务
两个 Vnode 都发生故障无法提供服务
ASSIGN LEADER FORCE;

常见问题

1. 创建双副本数据库或修改为双副本时,报错:DB error: Out of dnodes

  • 服务器节点数不足:原因是,数据服务器节点数少于两个。
  • 解决方案:增加服务器节点数量,满足最低要求。

2. 创建双副本数据库或 split vgroup 时,报错:DB error: Vnodes exhausted

  • 服务器可用 Vnodes 不足:原因是某些服务器节点可用 Vnodes 数少于建库或 split vgroup 的需求数。
  • 解决方案:调整服务器 CPU 数量、SupportVnodes 数量,满足建库要求。

访问官网

更多内容欢迎访问 TDengine 官网

相关文章:

  • Android Raspberry 请求 api 失败 iOS 请求成功【ssl 证书配置问题】
  • 【LangChain大模型应用与多智能体开发 ① 初识LangChain 】
  • 人工智能100问☞第30问:什么是损失函数?
  • 20250523-BUG:无法加载“GameLib/Framework.h“头文件(已解决)
  • 【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’
  • 20250523-BUG-E1696:无法打开元数据文件“platform.winmd(已解决)
  • UI 设计|提高审美|Linear UI风格分享
  • 钉钉出口IP有哪些
  • ECharts图表工厂,完整代码+思路逻辑
  • 【GAN网络入门系列】二,DCGAN人脸图片生成与转置卷积讲解
  • Redis7 新增数据结构深度解析:ListPack 的革新与优化
  • 软件测试(4) 白盒测试
  • 1536. 【中山市第十一届信息学邀请赛决赛】同质(same)
  • 63. 不同路径 II
  • siparmyknife:SIP协议渗透测试的瑞士军刀!全参数详细教程!Kali Linux教程!
  • 运维打铁:生产服务器用户权限管理方案全解析
  • 前端地图数据格式标准及应用
  • vue项目表格甘特图开发
  • 告别“盘丝洞”车间:4-20mA无线传输如何重构工厂神经网?
  • Python打卡训练营学习记录Day34
  • 哪里有网站制作设计/图片百度搜索
  • 天津做网站开发的/北京seo培训
  • 香港主机网站充值/企业管理软件
  • 网站制作属于什么行业/品牌广告语
  • 政府网站建设要求/有哪些推广平台和渠道
  • 网站建设企业宣传册/网站建设山东聚搜网络