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

MongoDB PSSSA集群PSA状态下HMAC密钥刷新失败致查询异常问询

问题:MongoDB PSSSA架构缩为PSA后主节点重启后查询失败异常

场景描述

  • 部署环境:Kubernetes下的MongoDB 8.0.6社区版,初始架构为PSSSA(1主节点、3从节点、1仲裁节点)
  • 触发条件:2个从节点宕机,集群仅剩PSA(主、从、仲裁)架构;多次重启主节点后出现异常

异常现象

  • 所有数据库查询均失败,应用统一报错 Failed to refresh key cache
  • 主节点日志输出以下错误:

"ctx":"monitoring-keys-for-HMAC","msg":"setting timestamp read source","attr":{"readSource":"kMajorityCommitted","provided":"none"
"ctx":"monitoring-keys-for-HMAC","msg":"setting timestamp read source","attr":{"readSource":"kNoTimestamp","provided":"none"
"ctx":"monitoring-keys-for-HMAC","msg":"Failed to refresh key cache","attr":{"error":"ReadConcernMajorityNotAvailableYet: Read concern majority reads are currently not possible.

  • 集群全局读关注已配置为local,但密钥刷新流程强制使用majority读关注
  • 仅恢复一个从节点、集群回到支持majority读的状态后,服务自动自愈,异常消失

疑问

该现象是否为预期行为?是否存在遗漏的配置项?

分析结论

这是预期行为,核心原因如下:

  • MongoDB的HMAC密钥刷新逻辑(对应keys_collection_manager.cpp中的相关实现)默认使用majority读关注读取system.keys集合,该逻辑不受全局读关注配置的影响
  • PSA架构下,仲裁节点不存储数据,仅主节点+单个从节点无法满足majority读的仲裁条件(无法确认多数节点已提交数据),因此密钥刷新流程失败
  • 密钥刷新失败会导致所有依赖密钥的数据库操作(查询、写入等)无法执行,直到集群恢复足够节点以支持majority读

目前没有配置项可以修改密钥刷新流程的读关注级别,只能通过保证集群节点数量满足majority读要求来避免该问题。

内容的提问来源于stack exchange,提问作者sakthivel C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:51:04