问题标签 [mongodb-replica-set]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1527 浏览

mongodb - MongoDB 副本集的非投票成员可以成为主要成员吗?

我正在尝试通过连接到主节点的 mongo shell 将副本集成员的投票数设置为 0,但是当我调用时出现错误:

我要做的是:

其中conf.members[0]SECONDARY的文档 conf

在这个链接MongoDB 的文档说:

...

该序列根据 rs.conf() 输出中成员数组的顺序,对集合的第四、第五和第六个成员给予 0 票。此设置允许集合将这些成员选举为主要成员,但不允许他们在选举中投票。

...

但是返回的错误消息说我必须为non-voting设置 priority=0 ,但这意味着该成员不能是主要成员。

我不明白什么或我做错了什么?

非常感谢

0 投票
2 回答
918 浏览

java - 来自 JAVA 的 Mongo Replicaset 配置

是否可以从 JAVA 应用程序配置 Mongo 副本集?

是否有用于 rs.initiate()、rs.add() 等的 JAVA API?

我希望从应用程序配置 mongo 副本集,而无需手动登录 mongo 控制台。

有没有办法做到这一点?

提前致谢。

0 投票
1 回答
6047 浏览

mongodb - 大型数据库上的 MongoDB 初始同步

我们正在使用具有三个节点的 MongoDB 副本集。该数据库相当大,有 2+ 亿条记录,在磁盘上占用 700GB(WiredTiger MongoDB 引擎)。主要在文档上执行插入(每天数百万),然后读取和更新。

更换辅助成员上的磁盘后,数据文件夹为空并开始初始同步。通过查看日志,复制记录大约需要 7 个小时,然后构建索引需要 30 个小时,但这对于 oplog 包含同时插入/更新的所有记录来说太过分了:

首先我们重新启动了这个成员并开始了重新同步:

通过查看数据文件夹,所有文件都被删除并开始增长。但大约 8 小时后,它几乎没有重新同步 5% 的数据库。

如此大的同步使用什么方法?

我们想增加 oplog 的大小,但这需要整个副本集的停机时间。我们可以使用哪些方法而无需停机?

0 投票
2 回答
681 浏览

mongodb - 三节点副本集中的远程节点不可访问

我有两台 IP 地址为 10.1.1.52 和 10.1.1.11 的 PC。我想配置 mongo 复制(不分片),一个主节点和一个辅助节点在 10.1.1.52 上运行,一个辅助节点在 10.1.1.11 上运行。

我已按照以下步骤操作:

使用以下命令在 10.1.1.11 PC 上运行三个配置服务器:

之后,我创建了一个副本集 ('a') 并使用以下命令向其中添加了三个节点(第一个在 10.1.1.11 上,另外两个在 10.1.1.52 上):

我使用以下命令在 10.1.1.11 上设置查询路由器:

之后,我输入以下命令从 mongos 连接并启动副本集:

面临的问题是添加节点后:

在远程 PC 上运行的节点(即 10.1.1.52)不可访问且不健康。但是,在我的 PC 上运行的节点(即 10.1.1.11)会自动声明为 SECONDARY。

0 投票
1 回答
90 浏览

ruby-on-rails - MS Azure 上的 Bitnami Mongodb ReplicaSet 设置问题 - 辅助节点延迟响应

我在 Azure 上创建了带有副本集的 Mongodb。我有 Rails 应用程序在公共 IP 上命中副本集。我的副本集有 1 个主节点和 2 个辅助节点。我正面临来自辅助节点的响应极度滞后,但主节点对 isMaster 请求的响应非常快。

查询需要很长时间的辅助节点

命令数据库=管理员命令={:ismaster=>1}

Mongoid 4.0.1 导轨 4.2.5

为什么mongodb调用辅助节点?如果它正在调用我很好,但是为什么它需要这么多时间来保持我的应用程序请求大约 12 秒(每个辅助节点 6 秒)。

我提前感谢您的帮助。

共享应用程序日志如下

I, [2016-11-30T11:27:05.351584 #11924] INFO -- : 2016-11-30 11:27:05 +0000 开始 GET "/" for 175.100.138.183 I, [2016-11-30T11: 27:05.352680 #11924] INFO -- : WelcomeController#index 作为 HTML I 处理,[2016-11-30T11:27:05.352786 #11924] INFO -- : 参数:{"request_client"=>"production_abc_io", "client_database "=>"本地主机"}

// 这个对主节点的调用返回快速响应 D, [2016-11-30T11:27:05.356846 #11924] DEBUG -- : MOPED: 10.0.0.4:27017 COMMAND database=admin command={:ismaster=>1} runtime : 0.6903ms

//对辅助节点的调用大约需要 6 秒 D, [2016-11-30T11:27:11.356397 #11924] DEBUG -- : MOPED: 10.0.0.5:27017 COMMAND database=admin command={:ismaster=>1}运行时间:5999.3523ms

//调用另一个辅助节点大约需要 6 秒 D, [2016-11-30T11:27:17.356509 #11924] DEBUG -- : MOPED: 10.0.0.6:27017 COMMAND database=admin command={:ismaster=>1运行时间:5999.8489ms

D,[2016-11-30T11:27:17.357908 #11924] DEBUG -- : MOPED: replica_set_public_ip:27017 QUERY database=localhost collection=clients selector={"_id"=>BSON::ObjectId('55e9a684747265a004000000')} 标志=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil 运行时间:1.1453ms

D,[2016-11-30T11:27:17.360061 #11924] DEBUG -- : MOPED: replica_set_public_ip:27017 QUERY database=localhost collection=base_users selector={"$query"=>{"client_

0 投票
5 回答
16805 浏览

mongodb - 在 mongo 中使用 rs.initiate() 时出错

我想在 monga 中打开复制。因此,当我尝试使用 rs.initiate 时,我得到以下 errorrs.initiate()

我是新手,所以我不知道如何纠正它。我遵循这些准则 https://blog.jixee.me/how-to-use-mongo-connector-with-elasticsearch/

0 投票
1 回答
394 浏览

mongodb - 本地服务器和公共服务器之间的 mongo 副本集

这是我的情况:

我有一个公共服务器,允许用户从互联网访问,但数据存储在本地计算机中。这台计算机通常也可以连接到互联网,但是当本地系统的互联网连接断开时,我想确保我可以正常运行本地系统。所以我想在公共服务器和本地服务器之间配置一个副本集;但本地服务器没有固定的互联网 IP 地址。

这是我的问题:

如何实现我的目标,在本地服务器和公共服务器上设置 MongoDB,并在这些服务器之间同步数据。

0 投票
1 回答
834 浏览

mongodb - 重新启动后,PRIMARY 正在过渡到 RECOVERING

我在三个不同的 Amazon 服务器实例上有一个三节点副本集(1 个主节点、1 个辅助节点、1 个仲裁器)。托管它们的服务器需要内存升级,因此我还需要关闭 MongoDB 实例。

我按以下顺序关闭了 MongoDB 实例:

  1. 中学
  2. 仲裁者
  3. 基本的

我使用下面的过程来关闭每台服务器

所有 MongoDB 实例都正确关闭,没有任何问题。到目前为止一切都很好。

亚马逊服务器升级后,我按以下顺序启动 MongoDB 实例:

  1. 仲裁者
  2. 中学
  3. 基本的

仲裁器处于仲裁器模式,辅助处于辅助模式,但令我惊讶的是,主机进入了“恢复”模式。

我不知道原因,为什么主机去“RECOVERING”。

我检查了日志。它显示没有要同步的成员...类似的东西

我的基本疑问是“PRIMARY 必须在 PRIMARY 中,直到副本集中发生重新配置”。

在服务器关闭期间我错过了一个步骤吗?或者我在重新启动服务器期间错过了一个步骤?

请对此有所了解,以便我如何克服这个问题。我需要经常关闭 MongoDB 服务器,因为亚马逊服务器正在进行大量升级。

0 投票
1 回答
79 浏览

c++ - DLL 类中的 C++ 旧版驱动程序 mongoDB Replicaset

我已经构建了一个 dll,其中包括一个实现 mongoDB 副本集操作的类。这是该课程的摘要。

上面的代码正在工作。但这是我的问题:

1)通过上述设置,我可以使用 dll 进行正常的 mongoDB 操作,但由于我的应用程序需要不断更新 mongoDB 数据(接近实时,每秒高达数百),我收到错误(没有有效的副本集实例服务器发现)更新数据时。

2)只有服务器需要与 mongoDB 数据库对话。所以基本上我只需要一个到数据库的连接。所以我想将 mongo::DBClientReplicaSet con 声明为静态全局变量,并在类构造函数中连接到它。但似乎我做不到。我的应用程序根本无法运行。有了这个,我不断收到以下错误。

断言失败:px != 0,文件 C:\Boost\include\boost-1_62\boost/smart_ptr/scoped_ptr.hpp,第 105 行

有谁知道如何解决这个问题?

下面是我试过的代码:

3) 最后一个问题,我注意到副本集有 mongo/client/dbclient_rs.h" 文件。但似乎我无法使用它。这样,我得到了 initialize() 和 auto_ptr 游标的错误。我该如何使用该文件并充分利用副本集功能?如果我可以使用“dbclient_rs.h”,我该如何初始化副本集?在这种情况下,我该如何查询和获取数据?

提前非常感谢!

0 投票
0 回答
80 浏览

c++ - 是否可以将 mongo::DBClientReplicaSet 定义为类中的全局变量?

我正在使用 c++ 旧版驱动程序,我在不同的函数中构建了一个包含许多 mongoDB 操作的类。

我不想mongo::DBClientReplicaSet在每个函数中定义,但如果我在全局级别定义它,我遇到了另一个问题,因为我需要mongo::client::initialize在构造任何驱动程序对象或 BSON 之前调用。这意味着如果我调用mongo::client::initialize类构造函数,我不能mongo::DBClientReplicaSet在此之前定义。所以它不能在全局级别声明。我尝试了“ extern mongo::DBClientReplicaSet xxxx”,然后在类构造函数中定义了它,但得到了链接错误:

错误 LNK2001:无法解析的外部符号“class mongo::DBClientReplicaSet xxxx”

因为我们不能在mongo::DBClientReplicaSet没有参数的情况下使用。

有人知道解决方案吗?