Windows 系统 MongoDB副本集的建立

(由于设备限制,选择在一台widonws系统下的一台电脑中建立集群)

1.主节点的创建

文件名:myrs_27018

内含文件:conf——存储该节点配置文件(建立文本文件,然后改后缀名)

                  log——存储日志和pid文件(日志文件记录已经进行的操作,方便查错)

                      data——存储数据

配置文件:

systemLog:

 destination: file

 path: D:/App/MongoDB/Server/4.4/myrs_27018/log/mongod.log//创建的日志文件位置

 logAppend: true

storage:

 dbPath: "D:\\App\\MongoDB\\Server\\4.4\\myrs_27018\\data"//创建的存储数据的文件的位置

 journal:

  enabled: true

processManagement:

 pidFilePath: "D:\\App\\MongoDB\\Server\\4.4\\myrs_27018\\log\\mongod.pid"

net:

 bindIp: localhost//绑定的ip地址

 port: 27018//绑定的接口

replication:

 replSetName: myrs//绑定的为当前主机的27018端口,副本集名称为myrs

 2.副本从节点的创建

文件名:myrs_27019

内含文件:conf——存储该节点配置文件

                  log——存储日志和pid文件(日志文件记录已经进行的操作,方便查错)

                      data——存储数据

配置文件:

systemLog:

 destination: file

 path: D:/App/MongoDB/Server/4.4/myrs_27019/log/mongod.log

 logAppend: true

storage:

 dbPath: "D:\\App\\MongoDB\\Server\\4.4\\myrs_27019\\data"

 journal:

  enabled: true

processManagement:

 pidFilePath: "D:\\App\\MongoDB\\Server\\4.4\\myrs_27019\\log\\mongod.pid"

net:

 bindIp: localhost

 port: 27019

replication:

 replSetName: myrs//绑定的为当前主机的27019端口,副本集名称为myrs

3.仲裁节点的创建

文件名:myrs_27020

内含文件:conf——存储该节点配置文件

                        log——存储日志和pid文件(日志文件记录已经进行的操作,方便查错)

                     data——存储数据

配置文件:

systemLog:

 destination: file

 path: D:/App/MongoDB/Server/4.4/myrs_27020/log/mongod.log

 logAppend: true

storage:

 dbPath: "D:\\App\\MongoDB\\Server\\4.4\\myrs_27020\\data"

 journal:

  enabled: true

processManagement:

 pidFilePath: "D:\\App\\MongoDB\\Server\\4.4\\myrs_27020\\log\\mongod.pid"

net:

 bindIp:  localhost

 port: 27020

replication:

 replSetName: myrs//绑定的为当前主机的27019端口,副本集名称为myrs

4. 通过配置文件方式启动各mongodb服务

 mongod -f 配置文件位置

5.shell连接

mongo --host=主机ip  --port=接口

6.初始化主节点(在连接的是主节点的shell页面进行)

deployment副本创建不了 创建文件的副本_mongodb

7.加入从节点和仲裁节点(在连接的是主节点的shell页面进行)

端口号为27019的为从节点

deployment副本创建不了 创建文件的副本_App_02

27020为仲裁节点(在连接的是主节点的shell页面进行)

deployment副本创建不了 创建文件的副本_数据库_03

8.查看副本集状态:

rs.status()

可得:

 "members" : [

                {

                        "_id" : 0,

                        "name" : "localhost:27018",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 1206,

                        "optime" : {

                                "ts" : Timestamp(1616908414, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDate" : ISODate("2021-03-28T05:13:34Z"),

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "electionTime" : Timestamp(1616907304, 2),

                        "electionDate" : ISODate("2021-03-28T04:55:04Z"),

                        "configVersion" : 3,

                        "configTerm" : 1,

                        "self" : true,

                        "lastHeartbeatMessage" : ""

                },

                {

                        "_id" : 1,

                        "name" : "localhost:27019",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 1078,

                        "optime" : {

                                "ts" : Timestamp(1616908414, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDurable" : {

                                "ts" : Timestamp(1616908414, 1),

                                "t" : NumberLong(1)

                        },

                        "optimeDate" : ISODate("2021-03-28T05:13:34Z"),

                        "optimeDurableDate" : ISODate("2021-03-28T05:13:34Z"),

                        "lastHeartbeat" : ISODate("2021-03-28T05:13:42.680Z"),

                        "lastHeartbeatRecv" : ISODate("2021-03-28T05:13:42.818Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "localhost:27018",

                        "syncSourceId" : 0,

                        "infoMessage" : "",

                        "configVersion" : 3,

                        "configTerm" : 1

                },

                {

                        "_id" : 2,

                        "name" : "localhost:27020",

                        "health" : 1,

                        "state" : 7,

                        "stateStr" : "ARBITER",

                        "uptime" : 1017,

                        "lastHeartbeat" : ISODate("2021-03-28T05:13:42.679Z"),

                        "lastHeartbeatRecv" : ISODate("2021-03-28T05:13:42.783Z"),

                        "pingMs" : NumberLong(0),

                        "lastHeartbeatMessage" : "",

                        "syncSourceHost" : "",

                        "syncSourceId" : -1,

                        "infoMessage" : "",

                        "configVersion" : 3,

                        "configTerm" : 1

                }

建立完成。

9.使从节点承认自己为从节点(在连接的是副本从节点的shell页面进行)

rs.secondaryOk()

如果该代码无法执行,就换成rs.slaveOk()

10.建立存储集合(在主节点中建立)

建立数据库名称为:weibo

在该数据库下建立:搜索结果集合:result,用户信息集合:information,微博评论集合:comment,微博转发信息集合:transmint,URL队列库:URL

deployment副本创建不了 创建文件的副本_数据库_04

deployment副本创建不了 创建文件的副本_deployment副本创建不了_05

       查看集合:

deployment副本创建不了 创建文件的副本_Server_06

建立完成

11.故障检测

当主节点正常运行时,向副本节点插入数据:

deployment副本创建不了 创建文件的副本_数据库_07

Ok为0,不可写入数据

当主节点断开连接后,副本节点自动变为主节点。

deployment副本创建不了 创建文件的副本_App_08

再次写入数据

deployment副本创建不了 创建文件的副本_App_09

写入成功。

再次连接原来的主节点,原来的主节点变成了副本节点,在该节点查看刚刚写入的数据:

deployment副本创建不了 创建文件的副本_数据库_10

写入成功。