MongoDB作为windows服务并设置replicaSet

时间:2013-07-01 20:58:20

标签: mongodb replication

我安装了MongoDB并将其设置为windows服务。当我尝试设置replicaSet时,我收到错误“通常只允许使用每个套接字地址(协议/网络地址/端口)。对于socket:0.0.0.0:27017”。

所以,我已经停止了windows服务并设置了replicaSet。 replicaSet现在正常工作。但是,我没有看到Windows服务正常运行。这是否意味着我无法同时设置replicaSet和MongoDB服务?

2 个答案:

答案 0 :(得分:19)

您可以在Windows上同时设置副本集和MongoDB服务。由于您已经设置了副本集,因此您需要知道每个副本集成员都需要一个数据目录和一个日志文件。如果在一台计算机上运行所有副本集成员,则必须为每个副本集成员分配不同的端口号。提供的样本仅用于开发或功能测试。在单个计算机上设置所有副本集成员将构成单点故障,此外还会导致总体性能下降。

为每个副本集成员创建配置文件,包括数据目录,日志文件,端口号和副本集名称。例如,我有一个3个成员的副本集,一个主端口Mongodb在端口27017上运行,两个辅助端口Mongodb1在端口37017上,Mongodb2在端口47017上。副本集名称是rs1。

以下是Mongodb的配置文件。

# mongod.conf

# data directory
dbpath=C:\data\db

# log file
logpath=C:\mongodb-win32-i386-2.4.4\log\mongo.log

logappend=true

#port number 
port=27017

#replica set name
replSet=rs1

以下是其中一个辅助设备的配置文件。

# mongo.conf

# data directory
dbpath=C:\data\db2

# log file
logpath=C:\mongodb-win32-i386-2.4.4\log2\mongo.log

logappend=true

# port number
port=47017

# replica set name
replSet=rs1

以下链接提供了配置文件选项的完整列表: http://docs.mongodb.org/manual/reference/configuration-options/

将所有三个MongoDB实例添加为Windows服务。由于我没有指定服务和服务显示名称,因此MongoDB服务将使用默认服务/服务显示名称MongoDB

C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod.cfg --install

使用服务名称和服务显示名称安装其他两个MongoDB实例。

C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod1.cfg --serviceName MongoDB1 --serviceDisplayName MongoDB1 --install
C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod2.cfg --serviceName MongoDB2 --serviceDisplayName MongoDB2 --install

启动MongDB的所有三个实例

C:\mongodb-2.4.4\bin>net start mongodb
The Mongo DB service is starting.
The Mongo DB service was started successfully.

C:\mongodb-2.4.4\bin>net start mongodb1
The MongoDB1 service is starting.
The MongoDB1 service was started successfully.

C:\mongodb-2.4.4\bin>net start mongodb2
The MongoDB2 service is starting.
The MongoDB2 service was started successfully.

使用带有query选项的sc命令验证所有三种Windows服务的状态。

C:\mongodb-2.4.4\bin>sc query mongodb
C:\mongodb-2.4.4\bin>sc query mongodb1
C:\mongodb-2.4.4\bin>sc query mongodb2

从MongoDB shell配置副本集。在以下示例中,端口27017上的MongoDB实例将是主副本集成员。

C:\mongodb-2.4.4\bin>mongo --port 27017

从MongoDB shell设置副本集配置。

> config = { _id: "rs1", members:[
... { _id : 0, host : "localhost:27017"},
... { _id : 1, host : "localhost:37017"},
... { _id : 2, host : "localhost:47017"}
... ] }

在MongoDB shell中,初始化副本集并验证其状态。

> rs.initiate(config)
{
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}
> rs.status()
{
        "set" : "rs1",
        "date" : ISODate("2013-07-02T18:40:27Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "localhost:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 651,
                        "optime" : {
                                "t" : 1372790393,
                                "i" : 1
                        },
                        "optimeDate" : ISODate("2013-07-02T18:39:53Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "localhost:37017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 31,
                        "optime" : {
                                "t" : 1372790393,
                                "i" : 1
                        },
                        "optimeDate" : ISODate("2013-07-02T18:39:53Z"),
                        "lastHeartbeat" : ISODate("2013-07-02T18:40:26Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : 0,
                        "syncingTo" : "localhost:27017"
                },
                {
                        "_id" : 2,
                        "name" : "localhost:47017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 31,
                        "optime" : {
                                "t" : 1372790393,
                                "i" : 1
                        },
                        "optimeDate" : ISODate("2013-07-02T18:39:53Z"),
                        "lastHeartbeat" : ISODate("2013-07-02T18:40:26Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : 0,
                        "syncingTo" : "localhost:27017"
                }
        ],
        "ok" : 1
}
rs1:PRIMARY>

您还可以检查辅助设备的状态。在这里,我将连接到37017端口的其中一个辅助设备。

C:\mongodb-2.4.4\bin>mongo --port 37017

MongoDB shell中将显示以下提示,显示次要状态。

rs1:SECONDARY>

可以在此处找到有关部署副本集的教程: https://docs.mongodb.com/manual/tutorial/deploy-replica-set/

答案 1 :(得分:0)

未涵盖服务部分。

但是设置分片副本集。 尝试通过此博客在本地设置mongodb集群,它具有使用Windows脚本创建所需文件夹结构的所有配置文件。

https://medium.com/@arun2pratap/set-up-mongodb-sharded-cluster-for-windows-with-just-a-double-click-6eedbb7b79e