Server Sessions

在本页面

3.6 版的新功能。

Overview

MongoDB 的服务器会话或逻辑会话是client sessions用于支持Causal Consistencyretryable writes的基础框架。

Important

应用程序使用client sessions连接服务器会话。

服务器会话仅适用于副本集和分片群集。

Command Options

从 3.6 开始,MongoDB 驱动程序将所有操作与服务器会话相关联,但未确认的写入除外。以下选项可用于所有命令以支持与服务器会话的关联:

Important

mongo shell 和驱动程序将这些选项分配给会话中的命令。

Option Type Description
lsid Document 指定与命令关联的会话的唯一 ID 的文档。如果指定了txnNumber,则需要lsid
txnNumber 64-bit integer 严格增加的非负数,用于在命令会话中唯一标识该命令。


如果指定,该命令还必须包含lsid选项。

对于采用语句数组的deleteinsertupdate命令,还可以使用以下选项:

Important

不要手动设置stmtIds。 MongoDB 将stmtIds设置为严格增加的非负数。

Option Type Description
stmtIds 32 位整数数组 在写命令中唯一标识其各自写操作的数字数组。

Sessions Commands

以下命令可用于列出,Management 和终止整个 MongoDB 集群中的服务器会话:

Commands Descriptions
endSessions 使指定的服务器会话到期。
killAllSessions 杀死所有服务器会话。
killAllSessionsByPattern 杀死所有与指定模式匹配的服务器会话。
killSessions 终止指定的服务器会话。
refreshSessions 刷新空闲服务器会话。
startSession 开始新的服务器会话。

会话和访问控制

如果部署强制执行身份验证/授权,则必须对用户进行身份验证才能启动会话,并且只有该用户才能使用该会话。

在版本 3.6.3 中更改:要与$external个身份验证用户(即 Kerberos,LDAP,x.509 用户)一起使用会话,用户名不能超过 10k 字节。

如果部署不强制执行身份验证/授权,则创建的会话没有所有者,并且可以由任何用户在任何连接上使用。如果用户对不执行身份验证/授权的部署进行身份验证并创建会话,则该用户将拥有该会话。但是,任何连接上的任何用户都可以使用该会话。

如果部署在没有任何停机的情况下过渡到身份验证,则无法使用没有所有者的任何会话。

See also

maxSessions

首页