标签: mongodb-replica-set

从mongo副本集中的特定节点读取数据

我有一个由三个成员组成的副本集。我是否可能只想从两个辅助节点之一读取数据?我使用以下代码,其中 ip 是辅助节点之一,但我仍然看到流量被部署到其他节点。

Mongo mongo = new MongoClient("171.21.43.34");
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-replica-set

3
推荐指数
1
解决办法
1444
查看次数

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

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

{
    "ok" : 0,
    "errmsg" : "This node was not started with the replSet option",
    "code" : 76,
    "codeName" : "NoReplicationEnabled"
}
Run Code Online (Sandbox Code Playgroud)

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

mongodb mongodb-replica-set

3
推荐指数
2
解决办法
7823
查看次数

需要对给定 mongoDB 副本集中仲裁者的角色进行简单解释

我偶然发现 MongoDB 官方网站解释了如何设置奇数成员副本。我还从同一站点听说了Arbiter一词,根据我的理解,它不会被选为主要节点,但它确实参与选举(来自https://docs.mongodb.com/manual/core/replica-set ) -仲裁者/)。

在《为什么我们在 MongoDB 复制中需要“仲裁器”?》中还有一篇与仲裁器相关的帖子。这就涉及到 CAP 定理,这使得事情变得更加复杂。

首先,为什么我们需要使成员数量为奇数?另外,有人可以用简单的外行英语向我解释一下这个仲裁者是什么以及它在给定副本集中的作用是什么?

提前致谢。

database-design mongodb database-replication cap-theorem mongodb-replica-set

3
推荐指数
1
解决办法
1852
查看次数

使用Java(Windows)连接到在Docker内部运行的MongoDB副本集

我想用docker设置一个MongoDB副本集。设置似乎很好,但是我无法使用Java应用程序连接到集群。我正在Windows 10上使用VirtualBox作为驱动程序运行Docker版本17.06.0-ce。

我按照本教程中的说明进行操作:http : //www.sohamkamani.com/blog/2016/06/30/docker-mongo-replica-set/

因此,我首先在docker中创建了my-mongo-cluster网络,并使用以下命令运行3个容器:

$ docker run --name mongo1 -d --net mongo-cluster -p 9042:27017 mongo:3.6.0 mongod --replSet my-mongo-set
$ docker run --name mongo2 -d --net mongo-cluster -p 9142:27017 mongo:3.6.0 mongod --replSet my-mongo-set
$ docker run --name mongo3 -d --net mongo-cluster -p 9242:27017 mongo:3.6.0 mongod --replSet my-mongo-set
Run Code Online (Sandbox Code Playgroud)

然后,我连接到mongo1容器,并使用以下配置设置副本集:

config = {"_id" : "my-mongo-set", "members" : [{"_id" : 0,"host" : "mongo1:27017"},{"_id" : 1,"host" : "mongo2:27017"},{"_id" : 2,"host" : "mongo3:27017"}]}
rs.initiate(config)
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常。从mongo1容器的日志中可以看出,所有容器都是相互连接的。

现在,我正在尝试从Java应用程序连接到副本集。我正在使用3.6.0版的mongodb驱动程序。这是我用来连接到在docker中运行的副本集的代码:

List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>();
serverAddresses.add(new ServerAddress(InetAddress.getByName("192.168.99.100"), …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java docker mongodb-replica-set

3
推荐指数
2
解决办法
2441
查看次数

通过javascript从mongodb中设置的辅助副本中读取

我有2个mongo实例在2个不同的服务器(一个主服务器和另一个辅助服务器)中运行;我可以使用以下连接代码从主服务器检索文档:

var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin');
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从辅助服务器检索文档时,出现以下错误:

{[MongoError:不是master和slaveOk = false]
名称:“ MongoError”,
消息:“ not master and slaveOk = false”,
确定:0,
errmsg:“ not master and slaveOk = false”,
代码:13435}

我也尝试使用代码:

var db = mongojs('user:pswd@localhost:27017/mydb?authSource=admin&slaveOk=true');
Run Code Online (Sandbox Code Playgroud)

我想念什么?

mongodb node.js mongojs mongodb-replica-set

2
推荐指数
1
解决办法
3296
查看次数

尝试降级mongodb副本集时出错

设置:
1个主要,3个辅助和1个仲裁(全部5个正在运行.)

当我在primary中执行stepDown()时,在shell中获得以下错误 -

m101:PRIMARY> rs.stepDown() 
2017-06-07T15:01:21.357 E QUERY    [thread1] Error: error doing query: failed: network error while attempting to run command 'replSetStepDown' on host '127.0.0.1:27018'  :  
DB.prototype.runCommand@src/mongo/shell/db.js:132:1 
DB.prototype.adminCommand@src/mongo/shell/db.js:150:16  
rs.stepDown@src/mongo/shell/utils.js:1261:12
@(shell):1:1 
2017-06-07T15:01:21.360 I NETWORK  [thread1] trying reconnect to 127.0.0.1:27018 (127.0.0.1) failed
2017-06-07T15:01:21.361 I NETWORK  [thread1] reconnect 127.0.0.1:27018 (127.0.0.1) ok
m101:SECONDARY>
Run Code Online (Sandbox Code Playgroud)

请注意,主要最终更改为辅助.但为什么我收到这个错误,"失败:网络错误"在这里?

以下是降级的主要日志文件中的部分 -

2017-06-07T15:01:22.170 I REPL     [replication-5] Restarting oplog query due to error: InterruptedDueToReplStateChange: operation was interrupted. Last fetched optime (with hash): { ts: Timestamp 1496827872000|1, t: 2 }[-3490433912114125886]. Restarts …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-replica-set

2
推荐指数
1
解决办法
1109
查看次数

mongo 复制设置存储在哪里?

mongo 完全重装后,还记得之前的副本集配置;它把这个存储在哪里?

我使用我们项目的用户帐户在 linux 服务器上安装了 mongo 到该用户拥有的目录中。我设置了复制并让它工作正常。然后,为了测试一些更精细的安装点,我删除了整个 mongo 目录并重新安装。进入mongo,发现replication已经和之前一样设置好了;所以看起来 mongo 将信息存储在某个地方。

我检查了几个可能持有副本集配置的区域:

  1. 首先,在 mongo 目录中,但已删除。
  2. 在一些传统的 linux 结构中可能由 root 拥有,但项目用户没有 root 访问权限和 mongo,由相同的运行,也不应该。
  3. 项目用户的主目录。现在这确实有一个包含命令行历史的 .dbshel​​l 文件,但仅此而已。我没有看到任何其他相关的文件。
  4. mongo 配置中指定的某个位置。但是我在那里只提到了两个路径,一个用于系统日志 ( systemLog.path),另一个用于存储 ( storage.dbPath),并且都指向已删除的 mongo 目录。

有谁知道 mongo 在哪里存储此配置信息?

replication mongodb mongodb-replica-set

1
推荐指数
1
解决办法
3106
查看次数

如何连接到MongoDB分片群集

我在aws上设置了一个看起来像这样的集群

- mycluster
--- shard0
----- node0 : P
----- node1 : S
----- node2 : S
--- shard1
----- node0: P
----- node1: S
----- node2: S
--- shard2
----- node0: P
----- node1: S
----- node2: S
Run Code Online (Sandbox Code Playgroud)

我想通过连接字符串URI连接到它.

我的连接字符串目前看起来像这样:

mongodb://host0:portX,...,host9:portZ/test-database?replicaSet=mycluster
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,当我尝试连接它时,我得到错误无法访问.

但是,我可以很好地连接到单个分片.

mongodb://host0:portX,...,host3:portZ/test-database?replicaSet=shard0
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么阻止我连接到整个群集?

mongodb parse-platform parse-server mongodb-replica-set

0
推荐指数
1
解决办法
2177
查看次数

使用删除的成员形成一个新的副本集

如何配置已删除的副本集成员以形成新的副本集?

我有一个包含 4 个 mongod 实例的副本集

rs.config() 的输出

{
    "_id" : "rs0",
    "members" : [
        {
            "_id" : 0,
            "host" : "localhost:27031"
        },
        {
            "_id" : 1,
            "host" : "localhost:27032"
        },
        {
            "_id" : 2,
            "host" : "localhost:27033"
        },
        {
            "_id" : 3,
            "host" : "localhost:27034"
        }
    ],
    "settings" : {
       "replicaSetId" : ObjectId("5cf22332f5b9d21b01b9b6b2") 
    }
}
Run Code Online (Sandbox Code Playgroud)

我从副本集中删除了 2 个实例

rs.remove("localhost:27033")
rs.remove("localhost:27034")
Run Code Online (Sandbox Code Playgroud)

现在我的要求是用这 2 个删除的成员形成一个新的副本集。最好的方法是什么?

我目前的解决方案

连接到已删除的成员

mongo --port 27033
Run Code Online (Sandbox Code Playgroud)

并执行

conf = {
        "_id" : "rs0",
        "members" : [ …
Run Code Online (Sandbox Code Playgroud)

replication data-migration mongodb mongodb-replica-set

0
推荐指数
1
解决办法
3590
查看次数