mongodb 没有在副本集中使用本地数据库
mongodb not using local database in replica set
我有 4 台服务器,每台服务器托管一个网站和一个 mongo 副本集。
- MongoDB版本:v3.4.13
- Driver: PHP
服务器 1 是主服务器。
- 位于西海岸
服务器 2 是次要服务器,标签为:{ location: 'east' }
位于东海岸
我正在使用连接字符串连接到数据库:mongodb://localhost:27017/?replicaSet=rs&readPreference=nearest&readPreferenceTags=location:east
服务器 3 和 4 是没有标签的次要服务器。
我希望服务器 2 从它的本地数据库读取,但它是从主数据库(或另一个辅助数据库,我不知道,但它绝对不是从它的本地数据库读取)读取的)
- 我怀疑它没有从它自己的 SECONDARY 数据库中读取,因为我 运行.
的任何查询都有大约 3 秒的延迟
如何让服务器 2 从它自己的本地 SECONDARY 数据库读取数据?
在您的连接字符串中包含 readPreferenceTags
。参考online doc.
顺便说一下,副本集中的节点数量不应为偶数,除非其中一个节点没有投票权。
解决方案:集群中的所有服务器都需要能够连接到集群中的所有其他服务器。
事实证明,由于我的 iptables 中设置了一些规则,我的一些辅助设备无法连接到另一个辅助设备。
一旦集群中的所有服务器都能够相互连接,速度就会显着提高。
我有 4 台服务器,每台服务器托管一个网站和一个 mongo 副本集。
- MongoDB版本:v3.4.13
- Driver: PHP
服务器 1 是主服务器。
- 位于西海岸
服务器 2 是次要服务器,标签为:{ location: 'east' }
位于东海岸
我正在使用连接字符串连接到数据库:mongodb://localhost:27017/?replicaSet=rs&readPreference=nearest&readPreferenceTags=location:east
服务器 3 和 4 是没有标签的次要服务器。
我希望服务器 2 从它的本地数据库读取,但它是从主数据库(或另一个辅助数据库,我不知道,但它绝对不是从它的本地数据库读取)读取的)
- 我怀疑它没有从它自己的 SECONDARY 数据库中读取,因为我 运行. 的任何查询都有大约 3 秒的延迟
如何让服务器 2 从它自己的本地 SECONDARY 数据库读取数据?
在您的连接字符串中包含 readPreferenceTags
。参考online doc.
顺便说一下,副本集中的节点数量不应为偶数,除非其中一个节点没有投票权。
解决方案:集群中的所有服务器都需要能够连接到集群中的所有其他服务器。
事实证明,由于我的 iptables 中设置了一些规则,我的一些辅助设备无法连接到另一个辅助设备。
一旦集群中的所有服务器都能够相互连接,速度就会显着提高。