标签: mongodb-replica-set

如何在Ubuntu 14.04.4上通过配置文件启动带有copyingSet的mongoDB

嗨,我已经为MongoDB配置了copySet。如果我运行命令:

sudo mongod --replSet "rs0" 
Run Code Online (Sandbox Code Playgroud)

一切正常,三个副本正常工作,但是如果我运行命令:

sudo mongod --config /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)

它不起作用,外壳不显示任何内容,并且如果我检查运行mongod的进程未与副本集一起运行。

这是我的mongod.conf:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
 dbPath: /var/lib/mongodb
 journal:
  enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
 systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
 port: 27017
 #  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

replication:
    replSetName: "res0"

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:
Run Code Online (Sandbox Code Playgroud)

这是日志文件:

2016-04-28T15:34:30.079+0000 I CONTROL …
Run Code Online (Sandbox Code Playgroud)

ubuntu replication mongodb mongodb-replica-set

5
推荐指数
0
解决办法
4870
查看次数

停止在mongo上设置副本,主要进入恢复状态

当我停止副本集的节点并再次启动它们时,主节点进入"恢复"状态.

我创建了一个副本集,未经授权运行.为了使用授权,我添加了用户"db.createUser(...)",并在配置文件中启用了授权:

security:
   authorization: "enabled"
Run Code Online (Sandbox Code Playgroud)

在停止副本集(甚至重新启动集群而不添加安全性参数)之前,rs.status()显示:

{
        "set" : "REPLICASET",
        "date" : ISODate("2016-09-08T09:57:50.335Z"),
        "myState" : 1,
        "term" : NumberLong(7),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "192.168.1.167:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 301,
                        "optime" : {
                                "ts" : Timestamp(1473328390, 2),
                                "t" : NumberLong(7)
                        },
                        "optimeDate" : ISODate("2016-09-08T09:53:10Z"),
                        "electionTime" : Timestamp(1473328390, 1),
                        "electionDate" : ISODate("2016-09-08T09:53:10Z"),
                        "configVersion" : 1,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "192.168.1.168:27017",
                        "health" …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-replica-set

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

Meteor 1.4.1.1上副本集的正确MONGO_URL设置是什么

今天早上,我将我更新的Meteor项目部署到Heroku上.

我正在升级1.1.0.31.4.1.1.

使用Meteor Buildpack Horse一切安装正确,但应用程序错误输出错误;

MongoError:种子列表不包含mongos代理,replicaset连接需要在URI或options对象中提供参数replicaSet,mongodb:// server:port/db?replicaSet = name

MONGO_URLmongodb://u:p@url1:port,url2:port/db改成了;

mongodb://u:p@url1:port,url2:port/db?replicaSet=set-name

如果我使用replicaSet参数出错,我会收到此错误;

MongoError:在replicaset中找不到主要内容

这似乎是明智的,因为replicaset不存在,但是当我把正确的值放入时,我再次得到原始错误,说种子列表不包含代理.

我的副本集名称中有一个破折号,我不知道这是否相关.

我试过的

我尝试使用在Mongo客户端中抛出此错误的URL,它允许我连接到实例,所以我知道所有细节都是正确的.

我也试过转义replicaSet,所以?replicaSet=set\-name这给了我MongoError: no primary found in replicaset错误.

我和MongoDB提供商签了一张门票,但我怀疑这是Meteor/me的问题!

heroku mongodb meteor mongodb-replica-set

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

副本集的MongoDB负载均衡器

在MongoDB的副本集群集中,当我的主要忙于提供另一个请求时,如何确保为用户提供快速响应?

我是否需要使用负载均衡器,或者mongodb本身将查询路由到可用的辅助节点?

谢谢

mongodb mongodb-query mongodb-replica-set

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

MongoDB主降压不成功

设置:具有 5 个节点的副本集,版本 3.4.5。

尝试使用 rs.stepDown(60, 30) 切换 PRIMARY 但始终出现错误:

rs0:PRIMARY> rs.stepDown(60, 30)
{
    "ok" : 0,
    "errmsg" : "No electable secondaries caught up as of 2017-07-11T00:21:11.205+0000. Please use {force: true} to force node to step down.",
    "code" : 50,
    "codeName" : "ExceededTimeLimit"
}
Run Code Online (Sandbox Code Playgroud)

但是,在并行终端中运行的 rs.printSlaveReplicationInfo() 确认所有副本均已完全赶上:

rs0:PRIMARY> rs.printSlaveReplicationInfo()
source: X.X.X.X:27017
    syncedTo: Tue Jul 11 2017 00:21:11 GMT+0000 (UTC)
    0 secs (0 hrs) behind the primary
source: X.X.X.X:27017
    syncedTo: Tue Jul 11 2017 00:21:11 GMT+0000 (UTC)
    0 secs (0 hrs) …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-replica-set

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

mongodb客户端库无法连接到副本集

使用最新的客户端库(pymongo 3.4、mongodb (nodejs) 2.2.27),我在通过复制连接到我的 mongodb 服务器时遇到问题。复制集配置包含服务器的内部 ip 或主机名。我收到以下错误:

pymongo.errors.ServerSelectionTimeoutError: mongodbdriver20151129-arbiter-1:27017: [Errno 8] nodename nor servname provided, or not known,mongodbdriver20151129-instance-1:27017: [Errno 8] nodename nor servname provided, or not known,mongodbdriver20151129-instance-2:27017: [Errno 8] nodename nor servname provided, or not known
Run Code Online (Sandbox Code Playgroud)

或者

pymongo.errors.ServerSelectionTimeoutError: 10.0.0.5:27017: timed out,10.0.0.6:27017: timed out,10.0.0.4:27017: timed out
Run Code Online (Sandbox Code Playgroud)

我目前正在通过更改副本集配置来解决这个问题,以包含服务器的外部 ip,但我想这会减慢服务器间的通信速度。如何使用原始 rsconf 从外部位置连接到我的服务器?

[更新] 注意:我正在尝试连接到服务器的外部 IP,并且在使用 pymongo 2.8 或 mongodb (js) 2.1.4 时效果很好

[更新] 关注此聊天以获取更多详细信息/示例

mongodb pymongo replicaset mongodb-replica-set

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

如何使 MongoDB `repairDatabase` 和 `compact` 命令与副本集一起使用?停机时间没问题

我们需要释放一些 MongoDB 空间,并且我们确定了可以从集合中安全删除的超过 100Gb 的文档。

因此,我们将它们从具有以下设置的测试环境中删除:

  • mongodb版本3.0.1
  • 没有分片
  • 1 个节点,无副本
  • 有线虎引擎

完成后,我们发现磁盘上的空间仍然被使用,需要回收。我们找到了这篇文章,它对我们有帮助:运行完两者后

db.runCommand({repairDatabase: 1})
Run Code Online (Sandbox Code Playgroud)

db.runCommand({compact: collection-name })
Run Code Online (Sandbox Code Playgroud)

我们释放了 100Gb 以上。

然后我们继续生产,忘记了设置是不同的,因为我们有 1 个副本节点:

  • mongodb版本3.0.1
  • 没有分片
  • 1 个主节点、1 个副本节点
  • 有线虎引擎

删除文档后,我们运行

db.runCommand({repairDatabase: 1})
Run Code Online (Sandbox Code Playgroud)

并收到OK消息(过了一会儿,10 分钟以上)。我们尝试跑步

db.runCommand({compact: collection-name })
Run Code Online (Sandbox Code Playgroud)

并得到这个错误:

不会在活动副本集主节点上运行紧凑型操作,因为这是一个缓慢的阻塞操作。用力:真实用力

所以我们跑

db.runCommand({compact: collection-name, force: true })
Run Code Online (Sandbox Code Playgroud)

并收到“确定”消息(几乎立即),但空间上的磁盘仍然被使用,它没有被释放。

我们寻找使用副本集运行repairDatabasecompact命令的解决方案,但建议的重点是避免停机,就好像这是唯一的问题一样。但是,我们可以安排停机时间,但我们的问题是命令无法按预期工作,因为空间实际上并未被回收

我们做错了什么?

mongodb wiredtiger mongodb-replica-set

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

MongoError:在副本集中找不到主要

我有 2 个应用程序服务器,它们连接到一个副本集(主要、次要和仲裁者)。

我面临的问题是

 [ 'MongoError: no primary found in replicaset',
  '    at ../server/node_modules/mongodb-core/lib/topologies/replset.js:524:28',
  '    at null.<anonymous> (../server/node_modules/mongodb-core/lib/topologies/replset.js:303:24)',
  '    at g (events.js:260:16)',
  '    at emitOne (events.js:77:13)',
  '    at emit (events.js:169:7)',
  '    at null.<anonymous> (../server/node_modules/mongodb-core/lib/topologies/server.js:326:21)',
  '    at emitOne (events.js:77:13)',
  '    at emit (events.js:169:7)',
  '    at null.<anonymous> (../server/node_modules/mongodb-core/lib/connection/pool.js:270:12)',
  '    at g (events.js:260:16)',
  '    at emitTwo (events.js:87:13)',
  '    at emit (events.js:172:7)',
  '    at Socket.<anonymous> (../server/node_modules/mongodb-core/lib/connection/connection.js:175:49)',
  '    at Socket.g (events.js:260:16)',
  '    at emitOne (events.js:77:13)',
  '    at Socket.emit (events.js:169:7)',
  '    at connectErrorNT (net.js:996:8)',
  '    at …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-replica-set

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

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

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

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

2016-11-16T23:32:03.503+0100 E REPL     [rsBackgroundSync] too stale to catch up -- entering maintenance mode
2016-11-16T23:32:03.503+0100 I REPL     [rsBackgroundSync] our last optime : (term: 46, timestamp: Nov 15 10:03:15:8c)
2016-11-16T23:32:03.503+0100 I REPL     [rsBackgroundSync] oldest available is (term: 46, timestamp: Nov 15 17:37:57:30)
2016-11-16T23:32:03.503+0100 I REPL     [rsBackgroundSync] See http://dochub.mongodb.org/core/resyncingaverystalereplicasetmember
Run Code Online (Sandbox Code Playgroud)

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

2016-11-16T23:47:22.974+0100 I REPL     [rsSync] initial sync pending
2016-11-16T23:47:22.974+0100 I REPL     [ReplicationExecutor] syncing from: x3:27017
2016-11-16T23:47:23.219+0100 I REPL     [rsSync] …
Run Code Online (Sandbox Code Playgroud)

large-data mongodb mongodb-replica-set

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

如果仲裁器宕机了怎么办?

我将设置一个由主节点、从节点和仲裁节点组成的 mongodb 副本集。我想知道如果仲裁节点宕机会发生什么?也许有人有过这样的经历。

mongodb mongodb-replica-set

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