You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YugabyteDB集群节点重启后T-server启动报版本密钥不存在错误

YugabyteDB节点重启后T-server启动失败故障处理

问题背景

[问题来自YugabyteDB社区Slack用户提问]
在3节点YugabyteDB集群(单节点同时运行master、T-server进程)负向测试过程中,停止单个节点后重启时T-server无法正常拉起,删除节点旧数据是当时唯一可临时恢复的手段。

核心报错日志

F20220506 06:50:49 ../../src/yb/tserver/tablet_server_main.cc:220] Invalid argument (yb/util/universe_key_manager.cc:73): Could not init Tablet Manager: Failed to open tablet metadata for tablet: eb1e5457022f42c084148ca8fa4ba5c6: Failed to load tablet metadata for tablet id eb1e5457022f42c084148ca8fa4ba5c6: Could not load Raft group metadata from /data/yugabyte/data/yb-data/tserver/tablet-meta/eb1e5457022f42c084148ca8fa4ba5c6: Key with version number c7b91fad-dd60-404f-8846-cab568e52468 does not exist.
    @     0x7fcdace5ee4c  yb::LogFatalHandlerSink::send()
    @     0x7fcdaa5e28ee  google::LogMessage::SendToLog()
    @     0x7fcdaa5dfa7a  google::LogMessage::Flush()
    @     0x7fcdaa5e3169  google::LogMessageFatal::~LogMessageFatal()
    @           0x4124ea  yb::tserver::(anonymous namespace)::TabletServerMain()
    @     0x7fcda6811825  __libc_start_main
    @           0x410f99  _start
    @              (nil)  (unknown)

故障复现步骤

  • 启动3节点集群
  • 创建包含3个分区的表,通过UI确认各分区分布在不同tablet上
  • 向3个不同分区分别插入测试数据,执行SELECT *查询正常
  • 关停其中一个T-server,再次执行SELECT *查询正常
  • 重启被关停的T-server即触发上述报错

现有环境配置

T-server启动命令

/usr/local/yugabyte/src/yugabyte-2.11.0.1/bin/./yb-tserver --flagfile /data/yugabyte/etc/tserver.conf

T-server配置文件内容

--tserver_master_addrs=ip1:7100,ip2:7100,ip3:7100
--rpc_bind_addresses=fqdn
--server_broadcast_addresses=ip1
--enable_ysql
--pgsql_proxy_bind_address=ip1:5433
--cql_proxy_bind_address=ip1:9042
--fs_data_dirs=/data/yugabyte/data
--placement_cloud=cloud
--placement_region=reg
--placement_zone=zone
--use_client_to_server_encryption=true
--certs_for_client_dir=/data/yugabyte/ssl
--certs_dir=/data/yugabyte/ssl
--use_node_to_node_encryption=true
--ysql_enable_auth=true
--log_dir=/data/yugabyte/logs
--ssl_protocols=tls12,tls13
--ysql_pg_conf=pgaudit.log='DDL',pgaudit.log_level=notice,pgaudit.log_client=ON,log_min_messages=notice,log_line_prefix='\%m \%r \%u \%d [\%p]'

前期排查结果

集群已开启静态加密,密钥文件存放在指定路径,但全域密钥未加载到内存:

  1. 执行集群配置查询命令:
/usr/local/yugabyte/src/yugabyte-2.11.0.1/bin/yb-admin -master_addresses $master get_universe_config

返回结果显示keyInMemory为false:

{"version":2,"replicationInfo":{"liveReplicas":{"numReplicas":3,"placementBlocks":[{"cloudInfo":{"placementCloud":"cloud","placementRegion":"region","placementZone":"zone"},"minNumReplicas":1}]}},"clusterUuid":"dccea8cb-9790-48ba-8a05-6218a8e875a4","encryptionInfo":{"encryptionEnabled":true,"universeKeyRegistryEncoded":"sZTzNciYu6b1KxZonpJx6v7CDDvexiv1jh/HIEAOkpV4YRrIZbIK9jtajdEMmVEUy706+dmz8bmnZvy6/n33u+qS7fzRSOTPOlpxYI6+k1lSM6bu2DRTTffhZtaiKN15gy8a3ifaZV7xJ9QJ3z9SvFYzb96+KDWw","keyPath":"/data/yugabyte/rest/universe_key","latestVersionId":"c7b91fad-dd60-404f-8846-cab568e52468","keyInMemory":false}}
KeyInMemory: False
  1. 执行全域密钥内存加载状态检查命令:
usr/local/yugabyte/src/yugabyte-2.11.0.1/bin/yb-admin -master_addresses fqdn:7100 all_masters_have_universe_key_in_memory 7e13c99e-5278-4abd-ab78-79f70d6c2679

返回报错:

Error running all_masters_have_universe_key_in_memory: Operation failed. Try again. (yb/tools/yb-admin_client_ent.cc:1027): Unable to check whether master has universe key in memory.: Node fqdn:7100 does not have universe key in memory

故障根因

该故障由三个问题共同导致,不属于复杂配置错误:

  • 静态加密机制逻辑要求:T-server启动时必须从master拉取对应版本的全域密钥,才能解密本地存储的tablet元数据完成初始化。当前集群master节点未将最新版本的加密密钥加载到内存,T-server拉取密钥失败,无法解密本地Raft组元数据,最终启动崩溃。
  • 拓扑配置不一致:T-server配置中placement_region参数填写为reg,但集群元数据中记录的placementRegion为region,拓扑信息不匹配会导致master间密钥同步流程异常,密钥无法自动加载到内存。
  • 排查操作参数错误:执行密钥内存状态检查时,命令后传入的是集群UUID,实际该位置需要传入密钥版本ID,是前期检查返回失败的原因之一。

修复步骤

不需要删除节点本地数据,按以下步骤操作即可恢复:

  1. 修正所有节点master、T-server配置中的拓扑信息,保证placement_cloud/placement_region/placement_zone三个参数和集群元数据记录的拓扑完全一致,修正后滚动重启所有master进程。
  2. 所有master启动完成后,手动将全域密钥加载到所有master内存,执行命令:
/usr/local/yugabyte/src/yugabyte-2.11.0.1/bin/yb-admin -master_addresses ip1:7100,ip2:7100,ip3:7100 add_universe_keys_to_all_masters /data/yugabyte/rest/universe_key
  1. 执行检查命令确认所有master都已加载对应版本的密钥,注意命令最后传入的是报错中提到的最新密钥版本IDc7b91fad-dd60-404f-8846-cab568e52468,不要传集群UUID:
/usr/local/yugabyte/src/yugabyte-2.11.0.1/bin/yb-admin -master_addresses ip1:7100,ip2:7100,ip3:7100 all_masters_have_universe_key_in_memory c7b91fad-dd60-404f-8846-cab568e52468
  1. 确认命令返回所有master密钥加载成功后,直接启动之前启动失败的T-server即可正常拉起。

注意事项

  • 开启静态加密的集群,所有节点的placement配置必须和集群拓扑配置完全一致,否则会出现密钥同步异常
  • 节点重启前,先确认所有master节点已加载当前最新版本的全域密钥,避免T-server启动时拉取不到密钥
  • 2.11.0.1属于开发预览版本,存在多个静态加密相关的已知bug,开展稳定性测试建议使用官方正式发布的稳定版本。

内容的提问来源于stack exchange,提问作者dh YB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 21:57:23