Docs 菜单

Docs 主页开发应用程序MongoDB Manual

读取偏好 maxStalenessSeconds

由于网络拥塞、磁盘吞吐量低、长时间运行的操作等原因,副本集节点可能会滞后于主节点。读取偏好 maxStalenessSeconds 选项允许您指定通过从节点读取的最大复制延迟或“过时时间”。当从节点的估计过时时间超过 maxStalenessSeconds 时,客户端会停止使用它进行读取操作。

重要

maxStalenessSeconds 读取偏好选项适用于从从节点读取数据、并希望避免从在复制主节点写入上远远落后的从节点读取数据的应用程序。例如,从节点可能会由于其自身与主节点之间的网络中断而停止复制。在这种情况下,客户端应停止从从节点读取数据,直到管理员解决中断问题并且从节点已经跟上。

要使用 maxStalenessSeconds,部署中的所有 MongoDB 实例都必须使用 MongoDB 3.4 或更高版本。如果有任何实例在 MongoDB 的早期版本上,则驱动程序或 mongos 将引发错误。

注意

从 4.2 版开始,MongoDB 引入流量控制机制,用于控制主节点适用其写入的速度,目的是将 majority committed 延迟保持在指定的最大值以下。

您可以使用以下读取偏好模式指定 maxStalenessSeconds

最大陈旧度与模式 primary 不兼容,并且仅在为读操作选择副本集的节点时适用。

使用 maxStalenessSeconds 选择用于读取操作的服务器时,客户端通过将从节点的上次写入与主节点的上次写入进行比较来估计每个从节点的过时程度。然后,客户端会将读取操作定向到其估计延迟小于或等于 maxStalenessSeconds 的从节点。

如果没有主节点,客户端将使用最近写入的从节点进行比较。

默认情况下,没有最大过期时限,客户端在选择将读取操作定向到的节点时,也不会考虑从节点的滞后。

您必须指定 90 秒或更长时间的 maxStalenessSeconds 值:指定较小的 maxStalenessSeconds 值将引发错误。客户端通过定期检查每个副本集成员的最新写入日期来估计从节点的陈旧度。由于这些检查并不频繁,陈旧度估计是粗略的。因此,客户端无法执行小于 90 秒的 maxStalenessSeconds 值。

← 读取偏好标签集列表