On this page
Server Sessions
在本页面
3.6 版的新功能。
Overview
MongoDB 的服务器会话或逻辑会话是client sessions用于支持Causal Consistency和retryable 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
选项。
对于采用语句数组的delete,insert和update命令,还可以使用以下选项:
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