- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有 2 个节点(节点 0、节点 1)的 mongodb 复制集,有一天其中一个节点(节点 1)崩溃。
考虑到删除node1的所有数据再重启需要很长时间,我关闭node0,rsync数据到node1
之后,我启动 node0 和 node1。两个 replSet 都停留在 STARTUP2,下面是一些日志:
Sat Feb 8 13:14:22.031 [rsMgr] replSet I don't see a primary and I can't elect myself
Sat Feb 8 13:14:24.888 [rsStart] replSet initial sync pending
Sat Feb 8 13:14:24.889 [rsStart] replSet initial sync need a member to be primary or secondary to do our initial sync
如何解决这个问题?
最佳答案
编辑 2015 年 10 月 29 日: 我发现实际上有一种更简单的方法可以通过使用 rs.reconfig
和选项 {force: true 来找回你的主要}
。您可以找到详细文档here .请谨慎使用,但如文档中所述,它可能会导致回滚。
你永远不应该构建一个 2 成员的副本集,因为一旦其中一个出现故障,另一个就不知道是因为另一个出现故障,还是因为它自己已经与网络断开。作为解决方案,添加一个用于投票的仲裁节点。
所以你的问题是,当你重启 node0 时,虽然 node1 已经死了,但没有其他节点投票给它。它不知道是否适合再运行一个主节点。因此它会退回到次级,这就是你看到消息的原因
Sat Feb 8 13:14:24.889 [rsStart] replSet initial sync need a member to be primary or secondary to do our initial sync
据我所知,除了重建副本集之外,没有其他官方方法可以解决此问题(但您稍后可以找到一些技巧)。请按照以下步骤操作:
然后关注mongodb manual重新创建副本集
恐怕您将不得不花很长时间等待同步完成。然后就可以开始了。
我强烈建议添加一个仲裁器以避免再次出现这种情况。
所以,以上是解决您的问题的官方方法,这就是我使用 MongoDB 2.4.8 的方法。我没有找到任何文件来证明这一点,所以绝对没有保证。你自己承担风险。无论如何,如果它不适合你,就退回到官方方式。值得一试;)
转到本地数据库,并从 db.system.replset 中删除 node1。例如在我的机器中最初是这样的:
{ "_id": "rs0", “版本”:5, “成员”:[{ “_id”:0, “主机”:“节点0” }, { “_id”:1, “主机”:“节点1” }]
你应该把它改成
{
"_id": "rs0",
"version": 5,
"members": [{
"_id": 0,
"host": "node0"
}]
}
就是这样。如果您有任何问题,请告诉我。
关于Mongodb,所有 replSet 卡在 Startup2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642396/
我尝试在 Ubuntu 14.04 x64 上设置副本集。我在尝试时遇到的第一个错误 $ sudo mongod --port 27017 --replSet rs0: replSet can't g
我正在使用MongoDB worker role project在 Azure 上使用 MongoDB。我有两个独立的云服务,其中一个一切正常,但在另一个中,MongoDB 辅助角色陷入 Busy (
我想试试 mongodb 副本集。我按照《MongoDB:权威指南》的步骤。 $ mongo --nodb 然后在 mongo shell 中: replicaSet = new ReplicaSet
我正在我的本地主机上设置一个副本集,只是为了练习使用必要的命令。我在家里和工作中都这样做。在家里,rs.initiate() 命令运行大约需要三秒钟,而 rs.status() 又需要大约两三分钟才能
首先我知道this与我的标题相同,但就我而言,它不是错误的端口。 我想在我的本地机器上设置分片,我从以下命令开始: mongod --shardsvr --replSet rs1 --port 270
我正在尝试使用以下docker-compose文件创建在本地运行的Mongo ReplicaSet: version: '2.0' services: db01: image: mongo
我做了一个 MongoDB 作业并按照步骤操作,但我遇到了问题“服务器未使用 replset 运行” 我做的步骤是: `"start mongod --replSet m101 --logpath 1
我正在研究 MongoDBUniversity的M101P:面向开发人员的 MongoDB 类(class)。 我在 MongoDB 3.2 上使用 WiredTiger。 我目前的主题是副本集。 类
我有 2 个节点(节点 0、节点 1)的 mongodb 复制集,有一天其中一个节点(节点 1)崩溃。 考虑到删除node1的所有数据再重启需要很长时间,我关闭node0,rsync数据到node1
我正在 Windows 环境中的本地系统上创建副本集按照以下步骤 mkdir -p \srv\mongodb\rs0-0 \srv\mongodb\rs0-1 \srv\mongodb\rs0-2 m
我有一个三节点的 MongoDB 副本集。 如果我通过命令行写入主节点,它会很快完成( 45 秒)! 我在日志中没有看到任何异常——只是成功的连接。 数据最终显示出来,但每个节点的连接都阻塞了。 示例
Node 、 Mongoose 我尝试连接到 mongolab。 mongoose.main_conn = mongoose.createConnection(uriUtil.forma
当我们进行大量并行连接时,我们遇到了 mongodb 套接字关闭的问题。 这是一个测试脚本: var mongodb = require("mongodb"); var async = require
我正在尝试这个: mongod --replSet mySet --dbpath /data/r1 --port 27017 --oplogSize 700 mongod --replSet mySe
我对 mongodb Replset 集有疑问。 主服务器日志消息: 2014-08-14T13:59:45.450+0800 [conn261130] end connection 192.168.
我正在尝试使用此文档在我的 macbook pro 上部署开发/测试复制集。 http://docs.mongodb.org/manual/tutorial/deploy-replica-set/ 我
如何在使用带有选项 server.ssl 的 mongoose 5.2.17 连接到 mongo 后删除此警告。 the server/replset/mongos/db options are de
我的 AWS EC2 实例中有一个独立的 MongoDB 实例。我打算将其转移到 Mongo Atlas。前提是将MongoDB实例转换为副本集。 以下是我的 mongo.conf 的代码文件: #
我想知道如何更改我的 java 代码以支持使用 spring-data 和 MongoDB 的 replset。 我有 3 个 MongoDB 服务器在运行.. 示例: ./mongod --dbpa
我正在 linux 上配置一个 3 节点的 mongodb 副本集。我正在使用以下配置 fork = true bind_ip = 127.0.0.1 port = 27017 verbose = t
我是一名优秀的程序员,十分优秀!