问题标签 [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 投票
0 回答
60 浏览

mongodb - 使用 mongodb mapreduce 时服务器崩溃

我正在使用具有 3 个成员的复制集,这是触发 mapreduce 的代码

然后我的主要死了并重新启动,但投票成为次要,并且仍然有一个集合sns.tmp.mr.account_0而不是log_account. 我对 mongodb 很陌生,我真的很想弄清楚问题出在哪里。

0 投票
2 回答
912 浏览

mongodb - MongoDB 中的 Write Concern 如何在线程级别工作?

正如我所见,我们可以从应用程序中设置写关注点,我想知道 MongoDB 将如何处理这样的场景:

假设我们有两个任务/进程(P1 和 P2)在同一个数据库上运行(数据库有一个由三个节点组成的副本集,1 个主节点和 2 个辅助节点)。P1 在日志级别启用了写入关注。P2 在副本级别启用了写入关注。(二级)。

现在如果 P1 和 P2 都写入数据库会发生什么?

P2会等待P1写入的数据复制到secondary,然后再将其数据写入secondary吗?

或者它是如何处理的?

0 投票
1 回答
343 浏览

mongodb - 在 DC 故障时自动主选的 MongoDb 副本集(2 个 DC)的推荐配置是什么

我需要将 mongo 节点分布在 2 个数据中心上。

我对容错表有点困惑:

成员数 = 4

选举新小学所需的多数 = 3

数字 4 是否意味着我总共需要 5 个投票成员,或者我可以有 3 个投票成员 + 1 个优先级 0 隐藏成员?

例如 :

  • DC1:P,H(优先级=0)
  • DC2 : S, S

如果 DC1 出现故障,DC2 会选择主节点吗?

如果 DC2 关闭,我是否需要将 H 转换为 arbitrer 或者它将保持 Primary?

从本质上讲,如果有人可以为 2 个 DC 提供少量推荐的副本集配置,以确保在 DC 故障时自动进行主选择(以最少的手动操作进行选择),那就太好了。

在此先感谢,卡尼斯卡

0 投票
1 回答
697 浏览

node.js - 无法使用 NodeJS 本机驱动程序连接到 MongoDB 数据库

我有一个 NodeJS 应用程序,我需要在其中连接到 MongoDB 数据库 - 一个是单个服务器设置,第二个来自副本集。我连接到下一个就好了,但是当连接到第二个时 - 我收到以下错误:

我用来连接的代码(在省略用户名和真实网址之后)是:

现在,当我单独尝试时(不是在代码连接到真正的其他数据库之后),我工作得很好......有什么想法吗?

0 投票
1 回答
5985 浏览

c# - 使用 C# 驱动程序的 MongoDB Replicaset 连接字符串

我的 Mongo DB 集具有 3 个副本集。一个主节点和两个辅助节点。

当我的代码使用以下连接字符串运行时,插入记录没有问题

但问题是,因为它在副本集上,所以当主从 27019 变为 27018 或 27017 插入失败时,我的主会不断变化。

所以我尝试将我的连接字符串更改为更真实的副本集连接字符串。

它一直以“没有这样的主机”或“无法连接到成员”而失败,但是在同一行代码中获取集合列表工作(我的意思是读取工作仅写入失败,如插入或保存命令)

我正在使用MongoDB 2.6.4

rs.status()

rs.config()

0 投票
1 回答
1125 浏览

mongodb - 带有仲裁器的 MongoDB 副本集

我正在尝试在 MongoDB 3.0 中配置一个具有两个副本和一个仲裁器的副本集,但它们没有按预期工作。正如您在下图中看到的那样,每个实例都告诉同一副本集的不同状态。

仲裁者 蒙哥0 蒙古1

我使用了以下配置:

仲裁者

  • dbpath=/mongo-元数据
  • logpath=/var/log/mongodb/mongod.log
  • 日志附加=真
  • 端口=27017
  • replSet=rs0
  • 叉=真
  • nojournal=真

蒙哥0

  • dbpath=/mongo-元数据
  • logpath=/var/log/mongodb/mongod.log
  • 日志附加=真
  • 端口=27017
  • replSet=rs0
  • 叉=真

蒙古1

  • dbpath=/mongo-元数据
  • logpath=/var/log/mongodb/mongod.log
  • 日志附加=真
  • 端口=27017
  • replSet=rs0
  • 叉=真

我尝试 ping 每台服务器,并且所有服务器都已连接。另外,我尝试使用密钥文件,但没有任何改变。我做错了什么?

编辑:我已将此帖子迁移到:https ://dba.stackexchange.com/questions/94730/mongodb-replica-set-with-arbiter

0 投票
1 回答
175 浏览

mongodb - 添加 Shard 不会减少 MongoDB 中的辅助磁盘大小

我的公司正在使用 mongoDB 作为数据库。
目前我们正在编写添加分片的脚本,一旦磁盘值增加超过 70%。

它工作正常,并在达到 70% 的阈值后添加一个额外的分片。
问题是当我们添加分片时,旧分片的文件大小并没有像 mongo 文档中提到的那样减小。
所以我们连接到 mongos 并执行 db.repairDatabase,它工作正常并减少了旧分片的文件大小。

我们面临的最大问题是修复数据库命令只收缩主分片的存储,而不是辅助分片。

我们还需要缩小辅助分片以实现自动化。

是否有任何命令可以缩小 mongoDB 辅助节点?
我们不想重新同步它:这是一项太漫长而乏味的工作......

0 投票
3 回答
23116 浏览

mongodb - errmsg" : "新配置 1 中没有描述副本集 rs0 映射到此节点的主机",为什么我收到此消息?

每次我都会收到此消息rs.initiate()

副本集 rs0 的新配置 1 中没有描述的主机映射到此节点

这就是我的/etc/hosts/文件在两个副本集服务器上的外观。

服务器 1 和服务器 2 “主机”文件

127.0.0.1 本地主机
aa.bb.cc.dd DataMongo1
ee.ff.gg.hh DataMongo2

服务器 1-mongod.conf 文件

绑定 IP aa.bb.cc.dd

服务器 2 -mongod.conf 文件

绑定 IP ee.ff.gg.hh

将 server1 主机名更改为 DataMongo1,将 server2 更改为 DataMongo2

$主机名 DataMongo1

两台服务器上的端口 27071 均未注释

副本集配置文件

cfg= {
_id:"rs0",
members:[{_id:0,host:"DataMongo1:27071"},{_id:1,host:"DataMongo2:27071"}]}

请帮我解决这个问题。

0 投票
0 回答
76 浏览

c# - Can we set multiple write concerns for a replica set in MongoDB?

Say, I have set write concern for a replica set with 3 members as w = "majority". If a member of the replica set goes down, would it be possible that the write concern could change for such a scenario?

I read MongoDB: The definitive guide as well as read the MongoDB documentation, but could not find anything. But it seems like something that should be available to implement.

0 投票
1 回答
412 浏览

mongodb - 为什么 Heroku 上列出的我的 MongoDB 数据库 URI 有副本集选项,而 MongoLab 上列出的却没有?

我通过 Heroku 在 MongoLab 上设置了一个 MongoDB 数据库。我选择了免费的单节点沙盒计划,而不是任何副本集集群。

我在 MongoLab 上的数据库页面显示了以下用于连接数据库的 URI:

HerokuMONGOLAB_URI在设置部分的配置变量下列出了相同的内容,但为其附加了一个副本集选项:?replicaSet=rs-ds012345.

我知道如果 mongod 是副本集的成员,则副本集选项指定副本集的名称。

既然我在MongoLab上设置数据库的时候好像没有选择副本集集群方案,那么为什么Heroku的MONGOLAB_URI配置变量似乎表明数据库是副本集的成员呢?

我应该在使用 Node.js 和 Express 构建的应用程序中使用哪个 URI?