问题是,即使我只针对连接字符串中副本集的一个节点,mongo-go-driver也总是希望发现并连接其他节点。基本上说我应该connect在连接字符串中添加选项。mongodb://host:27017/authDb?connect=direct我的问题是:这个做法有多好或多坏?为什么 mongo 没有记录,这个选项还有其他可用的值吗?
2 回答
Helenr
TA贡献1780条经验 获得超3个赞
这个做法有多好或多坏?为什么 mongo 没有记录,这个选项还有其他可用的值吗?
正如已接受的答案中所指出的,这记录在驱动程序文档中。现在讨论问题的另一部分。
一般来说,在副本集上下文中,您可能希望连接到拓扑,而不是直接连接到特定的副本集成员,但出于管理目的除外。复制旨在提供冗余,并且在发生故障转移时不建议直接连接到一个成员(即主成员)。
直接连接:客户端必须能够连接到任何类型的单个服务器。这包括查询隐藏的副本集成员,以及连接到未初始化的成员(请参阅 RSGhost)以运行“replSetInitiate”。连接到辅助设备不一定需要设置读取首选项。当然,辅助设备将拒绝使用 PRIMARY 读取首选项完成的所有操作,因为未设置 SlaveOk 位,但初始连接本身会成功。驱动程序可以允许直接连接到仲裁器(例如,运行管理命令)。
它只指定它必须能够这样做,但没有指定如何这样做。MongoDB Go驱动程序并不是目前唯一支持direct
选项方法的驱动程序,还有.NET/C#和Ruby。
目前有一个开放的 PR规范来统一行为。未来,所有驾驶员都将采用相同的方式建立直接连接。
- 2 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消