Atlas会自动运行数据验证,以主动检测项目中所有集群之间的数据不一致情况。数据验证有助于在静默数据损坏影响应用程序之前将其识别出来。
当副本集节点之间的数据不同但不会触发错误或警告时,就会发生静默数据损坏。这可能是由于硬件故障、网络问题或其他系统级问题造成的。示例包括:
丢失文档:文档存在于某些节点上,但在其他节点上丢失。
内容差异:所有节点上都存在文档,但内容各不相同。
索引不一致:索引项因节点而异。
如果没有验证,这些不一致可能未被检测到,并导致应用程序错误、数据丢失或查询结果不正确。
数据验证的工作原理
Atlas跨副本集节点验证数据,通过比较副本集节点之间的数据来检测静默数据损坏。
验证进程包括以下步骤:
在与集群相同的云提供商和地区中创建临时验证实例。
将节点快照恢复到验证实例。
比较节点快照之间的数据以检测不一致之处。
检测到不一致时,将验证结果存储在Atlas系统 (AWS)
us-east-1中。
数据验证会在项目中的所有集群上自动运行。如果需要,可以在项目级别禁用验证。
数据访问和存储
在验证中, Atlas会读取数据库和集合数据来计算哈希值并检测不一致情况。 Atlas不会修改集群数据或存储解密的文档内容。解密的数据仅在验证进程中暂时存在,不会持久化。
当验证检测到不一致时, Atlas仅存储以下元数据:
数据类型 | 保留期 | 说明 |
|---|---|---|
运行元元数据 | 3岁月 | 验证运行状态、时间戳和不一致摘要,包括按数据库、集合和不一致类型进行计数。 |
不一致的详细信息 | 90 天 | 未通过验证的文档的数据库名称、集合名称、文档ID 和不一致类型。 |
验证日志 | 90 天 | 详细的验证输出存储在 S3 中。可通过Atlas用户界面进行故障排除。 |
深入分析结果 | 21 天 | 验证进程中使用的中间哈希结果。 |
Atlas仅保留不一致的元数据以进行分析和故障排除。
使用静态加密进行数据验证
对于使用客户管理的密钥进行静态加密的集群,验证需要对密钥管理服务的额外访问权限。
验证实例必须使用客户管理的密钥解密数据,才能执行验证检查。这会导致额外的KMS API请求和相关成本。
禁用数据验证
您可以为项目中的所有集群禁用数据验证。
重要
禁用数据验证意味着Atlas无法主动检测集群中的数据不一致情况。仅当您有阻止验证运行的特定要求时才禁用验证。