node.js - Windows 上的 MongoDB 副本集面临一些基本问题

标签 node.js mongodb mongodb-replica-set

我使用的是 Windows 10 环境。我想在 MongoDB 上实现副本集。我面临一些问题..

为此,我涵盖了几乎许多在 Windows 计算机上实现这些内容的教程。

我想创建一个由主 Node 和另一个 Node 组成的副本集,该 Node 将复制数据。

我的结构是这样的:

  • 安装文件夹:C:/Programs Files\MongoDb\Server\3.4\bin\
  • 数据库文件夹:C:/data/db
  • 日志文件夹:C:/data/log
  • 配置:C:/data/mongod.cfg

我已经使用此命令定义了服务:

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\data\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

我已使用以下命令启动服务:

net start mongodb

运行成功。

但是,现在我遇到了复制问题。我设置副本集的方法是:

  1. 使用命令mkdir\data\rs1\data\rs1\data\rs2在数据文件夹下创建三个名为rs1、rs2、rs3的子文件夹
  2. 实现 Replset 以复制三台服务器。

我的三个启动命令是: 1.启动mongod --replSet udd --logpath\data\rs1\1.log --dbpath\data\rs1 --port 27017 --smallfiles --oplogSize 64 2.启动mongod --replSet udd --logpath\data\rs1\2.log --dbpath\data\rs2 --port 27018 --smallfiles --oplogSize 64 3.启动mongod --replSet udd --logpath\data\rs1\3.log --dbpath\data\rs3 --port 27019 --smallfiles --oplogSize 64

运行这些程序后,我可以输入 mongo --port 27017;这可以正确连接到 127.0.0.1:27017/

现在我的问题是,早些时候 mongo shell 提示符为 udd:PRIMARY>;但现在改为:udd:OTHER>

请指导我如何继续进行复制;非常感谢任何帮助。

我的 rs.reconfig(config,{"force":true}) 将是

    udd:OTHER> config =  {_id: "udd", members: [
... {_id: 0, host: "127.0.0.1:27017"},
... {_id: 1, host: "127.0.0.1:27018"},
... {_id: 2, host: "127.0.0.1:27019"}
... ]}
{
        "_id" : "udd",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "127.0.0.1:27017"
                },
                {
                        "_id" : 1,
                        "host" : "127.0.0.1:27018"
                },
                {
                        "_id" : 2,
                        "host" : "127.0.0.1:27019"
                }
        ]
}
udd:OTHER> rs.reconfig(config,{"force":true})
{ "ok" : 1 }
udd:OTHER> rs.status()
{
        "set" : "udd",
        "date" : ISODate("2018-01-31T11:58:15.717Z"),
        "myState" : 2,
        "term" : NumberLong(1),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1517381781, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1517381781, 1),
                        "t" : NumberLong(1)
                }
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "127.0.0.1:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 1506,
                        "optime" : {
                                "ts" : Timestamp(1517381781, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2018-01-31T06:56:21Z"),
                        "configVersion" : 37530,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "127.0.0.1:27018",
                        "health" : 0,
                        "state" : 8,
                        "stateStr" : "(not reachable/healthy)",
                        "uptime" : 0,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2018-01-31T11:58:15.677Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "No connection could be made because the target machine actively refused it.",
                        "configVersion" : -1
                },
                {
                        "_id" : 2,
                        "name" : "127.0.0.1:27019",
                        "health" : 0,
                        "state" : 8,
                        "stateStr" : "(not reachable/healthy)",
                        "uptime" : 0,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2018-01-31T11:58:15.670Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "No connection could be made because the target machine actively refused it.",
                        "configVersion" : -1
                }
        ],
        "ok" : 1
}
udd:SECONDARY>

现在 rs.conf() 将是

udd:SECONDARY> rs.conf()
{
        "_id" : "udd",
        "version" : 37530,
        "protocolVersion" : NumberLong(1),
        "members" : [
                {
                        "_id" : 0,
                        "host" : "127.0.0.1:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "127.0.0.1:27018",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 2,
                        "host" : "127.0.0.1:27019",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatIntervalMillis" : 2000,
                "heartbeatTimeoutSecs" : 10,
                "electionTimeoutMillis" : 10000,
                "catchUpTimeoutMillis" : 60000,
                "getLastErrorModes" : {

                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                },
                "replicaSetId" : ObjectId("5a715e56bff9fd66ea55b862")
        }
}
udd:SECONDARY>

最佳答案

清除错误消息:InvalidReplicaSetConfig

所有 3 个代表 mongod 都已启动,然后尝试:

rs.reconfig({force:true})

db.isMaster()

关于node.js - Windows 上的 MongoDB 副本集面临一些基本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48538346/

相关文章:

node.js - MongoDB-mongoose 不响应 REST API

mongodb - 如何关闭mongodb中的副本集?

angularjs - Node HTTP-Server 工作不正常?

javascript - 如何对需要其他模块的 Node.js 模块进行单元测试以及如何模拟全局 require 函数?

Javascript 新对象字段未保存

mongodb - 与删除的成员形成一个新的副本集

mongodb - 我应该为 mongodb 连接字符串使用主机名还是 IP 地址

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

javascript - "Not a constructor",但类型检查出来

javascript - fs.readFileSync() 不是函数