服务器会话
Overview
MongoDB 的服务器会话或逻辑会话是客户端会话用于支持因果一致性和可重试写入的根本的框架。
重要
应用程序使用客户端会话与服务器会话连接。
服务器会话仅适用于副本集和分片集群。
命令选项
从 3.6 开始,MongoDB 驱动程序将所有操作与服务器会话关联,但未确认的写入除外。以下选项用于所有支持与服务器会话关联的命令:
重要
mongosh
而驱动程序会将这些选项分配给会话中的命令。
选项 | 类型 | 说明 |
---|---|---|
| 文档 | 指定与该命令关联的会话的唯一 ID。如果指定了 |
| 64 位整型 | 严格递增的非负数,在该命令的会话中唯一标识该命令。 如果已指定,该命令则还须包含 |
对于采用语句数组的 delete
、insert
和 update
命令,还提供了以下选项:
重要
请勿手动设置 stmtIds
。MongoDB 将 stmtIds
设为严格递增的非负数。
选项 | 类型 | 说明 |
---|---|---|
| 32 位整型数组 | 数组中的数字在该写命令中唯一标识各自写操作。 |
会话命令
以下命令可用于列出、管理和终止 MongoDB 集群中的服务器会话:
命令 | 描述 |
---|---|
令指定的服务器会话过期。 | |
终止所有服务器会话。 | |
终止符合指定模式的所有服务器会话。 | |
终止指定服务器会话。 | |
刷新空闲的服务器会话。 | |
启动新的服务器会话。 |
会话和访问控制
如果部署强制执行身份验证/授权,用户必须通过身份验证才能启动会话,而且只有该用户才能使用该会话。
要对 $external
身份验证用户(Kerberos、LDAP 或 x.509 用户)使用客户端会话和因果一致性保证,用户名不能大于 10k 字节。
如果部署不执行身份验证/授权,则创建的会话没有所有者,任何用户可以在任何连接上使用该会话。如果用户对不强制执行身份验证/授权的部署进行身份验证并创建会话,则该用户拥有该会话。不过,任何连接上的任何用户都可以使用该会话。
如果部署在没有停机的情况下转换为身份验证,则无法使用任何没有所有者的会话。