
TDengine TSDB 企业版激活指南从获取激活码到集群授权的完整流程【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本篇指南讲解如何通过激活码activeCode对 TDengine TSDB 企业版部署完成授权覆盖「获取机器信息 → 申请激活码 → 激活集群 → 验证授权」的完整闭环并结合源码说明激活码与机器绑定、ALTER CLUSTER activeCode命令在 MNode 中的处理链路。读完后你可以独立完成企业版激活操作并理解授权数据的存储结构与机器码machine ID的底层生成机制。前提条件执行激活操作前请确认满足以下条件已向 TDengine 或授权代理商购买 TDengine TSDB 企业版已在拟授权的实际机器上安装并部署 TDengine TSDB 企业版激活码与机器绑定机器信息发生变化后需重新申请。第一步获取机器信息SHOW CLUSTER MACHINES激活码是按机器签发的因此第一步是采集集群各节点的机器身份信息以root用户打开 TDengine CLItaos执行以下 SQL获取部署所需信息SHOW CLUSTER MACHINES;示例输出如下id | dnode_num | machine | version | 3609687158593567855 | 1 | BdwqvOCyvAOc3SS5GIyEOIi | 3.3.6.13 |将上述语句的完整输出复制后连同以下信息一并提供给客户经理或授权代理商公司名称主要技术联系人的姓名与邮箱使用环境生产、PoC 或测试期望的授权期限。客户经理或代理商将向你提供用于激活的激活码。机器码从哪里来tGetMachineId 与机器绑定机制SHOW CLUSTER MACHINES输出中的machine字段即节点的机器码machine ID它由tGetMachineId接口生成。从源码结构看该接口在多个关键路径中被调用节点管理侧节点管理模块 在节点加入集群时通过tGetMachineId(machineId)获取本机机器码元数据同步侧dmFile.c 中先调用tGetMachineId取机器码再调用generateEncryptCode(key, machineId, encryptCode)生成与机器码绑定的加密码并落盘用于跨节点核对授权状态MNode 侧mndDnode.c 同样依赖tGetMachineId校验节点身份。配合 tgrant.h 中声明的checkAndGetCryptKey(encryptCode, machineId, key)与generateEncryptCode(key, machineId, encryptCode)两个函数可以推断激活码在签发时被加密并与目标机器码绑定激活时服务端会用本机机器码反向校验因此换机部署必须重新申请激活码。这也是激活前必须先采集SHOW CLUSTER MACHINES输出的根本原因。第二步将激活码应用到集群收到激活码后可以选择 TDengine CLI 或 TDengine TSDB Explorer 两种方式完成激活。方式一TDengine CLI以root用户打开 TDengine CLItaos将激活码应用到集群ALTER CLUSTER activeCode your-activation-code;此时 TDengine TSDB 企业版部署已完成授权。可执行以下 SQL 查看授权详情含到期时间SHOW GRANTS\G;方式二TDengine TSDB Explorer以root用户登录 TDengine TSDB Explorer默认地址为http://127.0.0.1:6060在左侧主菜单选择系统管理打开许可证标签页点击激活许可证输入激活码点击确定。重要请确保激活码外侧没有单引号。在 Explorer 中若多输了引号等价于把code整体当作激活码值传入会导致校验失败。验证授权结果激活成功后无论使用哪种方式都应验证授权状态CLI 中执行SHOW GRANTS\G;查看版本、到期时间与各配额项Explorer 的许可证标签页同样展示授权详情含到期时间。源码解析ALTER CLUSTER activeCode 的完整处理链路ALTER CLUSTER语句在 MNode 中由 mndProcessConfigClusterReq 处理其核心流程为反序列化SMCfgClusterReq请求记录option:%s, value:%s日志调用mndCheckOperPrivilege校验当前用户是否具备MND_OPER_CONFIG_CLUSTER操作权限——这就是必须使用root用户执行激活的原因通过mndAcquireCluster获取并拷贝当前SClusterObj集群对象依据配置项名称分发处理if (strncmp(cfgReq.config, GRANT_ACTIVE_CODE, TSDB_DNODE_CONFIG_LEN) 0) { #ifdef TD_ENTERPRISE if (0 ! (code mndProcessConfigGrantReq(pMnode, pReq, cfgReq))) { goto _exit; } #else code TSDB_CODE_OPS_NOT_SUPPORT; goto _exit; #endif }其中GRANT_ACTIVE_CODE即字符串常量activeCode定义见 tgrant.h。可以看到该分支仅在定义了TD_ENTERPRISE编译宏的企业版构建中才会执行真正的授权处理mndProcessConfigGrantReq开源构建下会直接返回TSDB_CODE_OPS_NOT_SUPPORT。同一入口还处理SoD职责分离separation_of_duties与MAC强制访问控制mandatory_access_control等企业版集群级配置处理完成后若审计级别达到AUDIT_LEVEL_CLUSTER会通过auditRecord将本次alterCluster操作记入审计日志——激活操作在企业版审计体系中是可追溯的。授权状态如何展示GRANTS 系统表SHOW GRANTS的取数逻辑注册在 mndGrant.c 的mndInitGrant中通过mndAddShowRetrieveHandle(pMnode, TSDB_MGMT_TABLE_GRANTS, mndRetrieveGrant)绑定。在未授权开源默认时mndRetrieveGrant 会输出一行默认值产品名、unlimited期限、limited、false、ungranted状态等这解释了为什么社区环境执行SHOW GRANTS时状态列显示ungranted。授权数据本身存储在系统表GRANTS中其表结构由 GRANTS_SCHEMA 宏 定义包含以下列列名含义version授权/产品版本信息expire_time授权到期时间SHOW GRANTS\G中展示的到期时间来源service_time服务起始时间expired是否已过期state授权状态如ungranted/已激活/被吊销等timeseries时间线数量配额dnodesDNode 节点数量配额cpu_coresCPU 核数配额vnodesVNode 数量配额storage_size存储容量配额此外mndDef.h 中定义了GRANT_STATE_REASON_ALTER 1状态原因对应alter activeCode revoked or xxx说明激活码支持通过同一入口进行吊销/变更操作。而 tgrant.h 中的GRANT_EXPIRE_VALUE (31556995201LL)约等于 1000 年的毫秒级时间跨度被用作永久授权的到期时间表示。激活码解锁哪些企业能力EGrantType 一览tgrant.h 中的EGrantType枚举列出了激活码所对应的全部企业版授权维度也即SHOW GRANTS各配额项背后的功能开关枚举值对应能力TSDB_GRANT_ALL全功能授权TSDB_GRANT_TIMESERIES/TSDB_GRANT_STABLE/TSDB_GRANT_TABLE时间线 / 超级表 / 普通表数量配额TSDB_GRANT_DNODE/TSDB_GRANT_CPU_CORES/TSDB_GRANT_VNODE/TSDB_GRANT_STORAGE节点数 / CPU 核数 / VNode 数 / 存储容量配额TSDB_GRANT_AUDIT审计日志TSDB_GRANT_VIEW视图TSDB_GRANT_QUERY_TIME查询时长限制TSDB_GRANT_SUBSCRIPTION数据订阅TMQTSDB_GRANT_STREAMS流计算任务数TSDB_GRANT_MULTI_TIER多层架构部署TSDB_GRANT_SHARED_STORAGE/TSDB_GRANT_MOUNT共享存储 / 存储挂载TSDB_GRANT_ACTIVE_ACTIVE/TSDB_GRANT_DUAL_REPLICA_HA双活 / 双副本高可用TSDB_GRANT_DB_ENCRYPTION数据库级加密TSDB_GRANT_TD_GPTTDgpt 智能分析TSDB_GRANT_XNODE/TSDB_GRANT_EXT_SOURCEXNode / 外部数据源联邦查询这些配额项由grantCheck/grantCheckEx/grantCheckExpire等接口在各功能入口处做运行时校验激活码写入后相应配额生效。多实例场景License CenterELS CLS单集群使用上述激活码流程即可若需统一管理多个 TSDB / IDMP 实例的额度与槽位quota slot建议使用 License CenterELS CLS完成授权管理详见License Center 参考手册License Center 部署与激活。注意事项与常见问题必须使用 root 执行ALTER CLUSTER属于集群级配置操作源码中通过MND_OPER_CONFIG_CLUSTER权限点拦截普通用户执行会被拒绝激活码与机器强绑定机器码由tGetMachineId基于本机环境生成并经加密码机制校验迁移到新机器或更换硬件后原激活码不再适用需重新采集SHOW CLUSTER MACHINES输出并申请集群级生效ALTER CLUSTER activeCode作用于整个集群而非单个 DNode多节点集群只需在任一节点执行一次验证授权激活后务必执行SHOW GRANTS\G或查看 Explorer 的许可证页签确认state为已激活状态并核对expire_time到期时间社区版不可用从源码编译条件看activeCode分支依赖TD_ENTERPRISE宏开源版构建执行该语句将返回不支持错误激活流程仅对企业版安装包有意义。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考