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页面进行)
7.加入从节点和仲裁节点(在连接的是主节点的shell页面进行)
端口号为27019的为从节点
27020为仲裁节点(在连接的是主节点的shell页面进行)
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
查看集合:
建立完成
11.故障检测
当主节点正常运行时,向副本节点插入数据:
Ok为0,不可写入数据
当主节点断开连接后,副本节点自动变为主节点。
再次写入数据
写入成功。
再次连接原来的主节点,原来的主节点变成了副本节点,在该节点查看刚刚写入的数据:
写入成功。