问题标签 [replicaset]

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 投票
2 回答
2359 浏览

mongodb - 只有 2 个节点的 ReplicaSet

我有两个服务器,每个服务器都有一个 mongo 实例。

在第一台服务器上,我将 mongo 实例设置为主要服务器,而在第二台服务器上,我将 mongo 实例设置为次要服务器。

我没有机会让另一台服务器成为仲裁者。

我怎样才能在只有两个服务器的情况下使用 mongodb?

如果主要失败,次要自动成为主要?

谢谢!

0 投票
0 回答
757 浏览

node.js - mongodb副本集配置版本错误

我在亚马逊云上运行了三台机器。我将第一个主集设置如下

}

然后第二台机器将自动同步配置。但是,第三台机器不会同步配置。所有都变成了[次要]。当我设置第三台机器 rs conf 时使用re.reconfig(conf, {force: true}). 它不会设置和抛出错误,比如有

配置版本 >= 到新的 cfg 版本;无法更改配置

0 投票
1 回答
280 浏览

python - pymongo:如果监控线程死了怎么办?

由于某种原因,ReplicaSet 的监视器在计划刷新时出现死机。

我在对 find_one() 的调用中跟踪了 Traceback:

我研究了一下代码,发现 Monitor.monitor() 包含:

这意味着无论发生了什么坏事,我永远不会知道是什么。

那么,如果我发现 InvalidOperation("Monitor thread is dead: 也许在 fork 之前开始?"),我该怎么办?

有什么好方法可以重启 Monitor 实例吗?

(我在 pymongo.version 2.6.2 中使用 flask-pymongo)

0 投票
2 回答
34057 浏览

mongodb - MongoDB 连接字符串到副本集

我正在查看http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html并且当您滚动到“默认情况下不使用确认的副本集连接和次要的 readPreference”部分时

它声明了一个到副本集的连接字符串,如下所示:

我不明白为什么我们需要指定2 hosts. 我认为 MongoDB 文档已经说明副本集对客户端是透明的。这意味着,客户端只需要连接到主副本集,MongoDB 就会完成这项工作。因此,连接应该只包含 1 个主机。MongoDB doc 声明必须至少3 hosts在一个副本集中并且仅指定此连接字符串2 hosts

另外,为什么连接字符串没有说​​明“replicaSet”?

0 投票
1 回答
4402 浏览

mongodb - 使用 mgo 连接到副本集

我正在使用在端口 27017、27018 和 27019 上mtools启动具有 3 个节点 ( ) 的副本集。mlaunch --replicaset

但是,我实际上很难使用Dialmgo 包连接到副本集。下面的代码片段会出现以下消息no reachable servers

究竟如何使用 mgo 包连接到副本集?

0 投票
0 回答
1412 浏览

mongodb - service mongod start fail with replica set

I'm starting my mongod with the following command:

It works fine and I can configure the replica set. When I try to to launch mongod with service mongod start command it fails with the following error:

Starting database mongod [fail]

I have no error in var/log/mongodb/mongodb.log, /var/log/syslog or /var/log/syslog.1.

I found this work-around solution to run as mongod as a service:

mongod --port 27017 --dbpath /var/lib/mongodb/ --replSet rs0 --fork --logpath /var/log/mongodb/mongodb.log or mongod --config /etc/mongod.conf

I'm running on mongodb 2.6. rs.initiate() worked fine.

I added fork = true and replSet = rs0 in my /etc/mongod.conf.

How can I start MongoDB by using service mongod start?

0 投票
4 回答
28693 浏览

node.js - Mongoose 连接到副本集

我试图通过猫鼬连接到 MongoDB 副本集。我使用了这个链接
配置json:

猫鼬连接:

启动应用程序后,我遇到了异常:

Db:聊天,主服务器:localhost:27022。

我还尝试删除其他两台服务器(仅在配置 json 中保留主要服务器),我看到它知道辅助服务器(我使用了日志)。我认为这是关于 mongodb 元数据的。但是当我关闭主设备时,它完成了它的工作(难怪),我需要它,以便它可以使用辅助设备。
有任何想法吗?

0 投票
1 回答
467 浏览

java - 连接到副本集时偶尔出现 MongoTimeoutException

com.mongodb.MongoTimeoutException连接到副本集时,我在 AWS 上偶尔遇到错误。rs.status()例如,我正在使用从 输出的域名进行连接mongo1.productionmongo2.production但我仍然遇到超时。

我的代码如下所示:

0 投票
0 回答
726 浏览

mongodb - 尝试创建复制的分片集群时连接 mongos 时出错

我正在尝试在 mongodb 中创建一个复制的分片集群。最初我创建了两个分片,每个分片中有一个包含三个成员的副本集。所有的分片和副本集都在一台机器上运行。我跟着

部署这种结构并且效果很好。

但是当我在 AWS 实例中为业务应用程序运行我的 mongodb 并将我的 node.js 服务器与数据库连接时,我想在多个 aws 实例中对数据库进行负载平衡,以便数据库即使在巨大的情况下也能正常工作流量负载,即使一个实例变得不健康或不可用,我也可以从其他实例中运行的副本集访问数据库。

根据我上一个问题中不同用户的建议

我正在尝试将数据库划分为分片,每个分片将有一个具有 3 个或更多成员的副本集,这些成员在单独的 aws 实例中运行。为了创建这个结构,我首先尝试在本地部署它。

我有两个副本集 firstset 和 secondset

第一组有三个成员 192.168.1.10:27018(Primary), 192.168.1.11.27018(Secondary) & 192.168.1.9:27018(arbiter)

第二组有三个成员 192.168.1.6:27019(Primary), 192.168.1.9:27019(Secondary) & 192.169.1.11:27019(arbiter)

创建我写的第一个副本

在 192.168.1.10、192.168.1.11 和 192.168.1.9

然后启动我写的副本集

在 192.168.1.10 然后,

我以类似的方式创建了 secondset 副本并且它有效。

然后我尝试在三台单独的机器上创建三个 configsvrs,这样即使一台机器关闭,其他 configsvrs 也会运行。configsv 将在 192.168.1.10:27020、192.168.1.11:27020 和 192.168.1.6:27020 中运行

所以我写了

在 192.168.1.10、192.168.1.11 和 192.168.1.6 中。

然后我尝试在 27017 端口的 192.168.1.10 中运行 mongos,三个运行的 configdb。所以,我写了

然后因为我必须在 mongos 中添加分片,并且 mongos 在 27017 端口中运行,所以我写了:-

但它显示

但以前当我在一台机器上测试它时它工作得很好。

请帮助我为什么会收到此错误以及如何解决它。

我还有另一个困惑。我在 192.168.1.10 中运行 mongos,然后将我的 node.js 服务器与该 mongos 连接,但如果该机器关闭,我就会遇到问题。那么我是否还需要在其他机器上运行 mongos,以便随时运行至少一个 mongos 来路由与数据库的连接?如果我必须创建多个同时运行不同机器的 mongos,那么我将如何从 node.js 服务器连接任何一个 mongos 以访问数据库?

0 投票
1 回答
2450 浏览

mongodb - 仲裁者不接受连接

(MongoDB 版本 2.6.3)

我有一个副本集:2 个节点 + 仲裁器。副本集没有问题,但我无法连接到仲裁器:

Courios 是我可以将节点添加和删除到我的副本集中。连接到辅助或主,我可以看到仲裁器:

如果我跟踪 mongod.log(在仲裁器上)我可以看到

使用我的其他副本集,我始终可以毫无问题地连接到仲裁器。知道发生了什么吗?

编辑:如果我删除副本信息并删除身份验证,我可以毫无问题地连接到该节点。没有防火墙问题:)