当前位置: 首页 > 知识库问答 >
问题:

如何防止MongoDB副本集查询主副本?

潘雅珺
2023-03-14

只读操作:

有没有办法有一个MongoDB副本集,但要使连接到的框上的MongoDB实例成为被查询的MongoDB?

我在AWS负载平衡器后面有三个EC2实例。

在每个EC2实例上运行MongoDB,它是副本集的一部分。

我在nodeJS上有expressendpoint,我连接到副本集,如下所示

 mongodb.MongoClient.connect('mongodb://1.1.1.1,2.2.2.2,3.3.3.3.',
    function (err, db)
    {
        if (err)
        {
            complete('{}');
        }
        else
        {

我希望在MongoDB副本集的所有三个实例上均匀分布查询负载,而不是默认情况下将所有查询路由到定义了主MongoDB的EC2实例,因为这会破坏负载平衡器的工作点(即在所有三个实例上均匀平衡查询负载)。

我的理解是,当连接到MongoDB副本集时,除非主实例关闭,否则总是选择主实例,因此每个辅助实例的目的只是作为备份。

在我的例子中,有些人会称之为热、冷、冷。因为有两个实例从未被使用过。

我希望查询负载均匀分布的原因是,我的设置可以是温暖的、温暖的、温暖的。

将来当用户数量增加时,为了保持查询性能最佳,我可以在负载平衡器后面添加更多EC2实例,以提高查询性能。

当数据增长时,单个实例的速度太慢,无法按时返回数据,也就是说,我会将每个实例分成其他EC2实例。

注意:我希望每个EC2实例的源代码都相同。我使用的是git,我希望能够轻松地将源代码推送到副本集中的每个实例。

共有1个答案

丌官寒
2023-03-14

您希望使用ReadPreference,这将允许您将读取请求定向到辅助设备。MongoDB节点的示例代码。js驱动程序可以在这里看到。

mongodb.MongoClient.connect('mongodb://1.1.1.1,2.2.2.2,3.3.3.3./?readPreference=secondary', ...
 类似资料:
  • 如何获取从驱动程序发送到的确切查询(出于调试目的)。 在mysql中,通过将添加到DataSource来实现。 我正在编写一个聚合查询,在开始日期和结束日期之间有一个匹配的管道。日期是以普通java日期类的形式给出的。 而且它似乎没有根据日期过滤结果。它把一切都还给我。

  • 问题内容: 在我以前的Meteor应用程序中,使用browserify和React,所有功能都可以使用,直到我切换到meteor webpack为止 。 我在Meteor应用程序中使用react-select,效果很好,但是使用browserify可以防止加载多个react副本,从而避免出现此错误: 我的package.json看起来像这样: Webpack中是否有配置,我可以使用外部调用?尚不完

  • 熊猫的常见操作是 但是,如何在SQL中执行此操作?是否有标准的功能或方法来执行

  • 我在MongoDB中有一个动态键值对象。 任何帮助都会有帮助。 谢了。

  • 下面是我的调试代码:

  • 本文向大家介绍CentOS 6.4创建Mongodb副本集,包括了CentOS 6.4创建Mongodb副本集的使用技巧和注意事项,需要的朋友参考一下 MongoDB是一个开源的non-SQL数据库引擎。 MongoDB是可扩展的,是标准关系数据库管理系统(RDBMS)的替代品。 副本集可以使在节点发生故障时还能提供对您的数据的访问。 安装MongoDB 1.确保在副本集的每个成员设置好hostn