MongoDB副本集配置(windows)
MongoDB副本集
MongoDB副本集(Replica Set)其实就是具有自动故障恢复功能的主从集群,和主从复制最大的区别就是在副本集中没有固定的“主节点;整个副本集会选出一个节点作为“主节点”,当其挂掉后,再在剩下的从节点中选举一个节点成为新的“主节点”,在副本集中总有一个主节点(primary)和一个或多个备份节点(secondary)。
除了primary和secondary之外,副本集中的节点还可以是以下角色:
官方推荐的副本集最小配置需要有三个节点:一个主节点接收和处理所有的写操作,两个备份节点通过复制主节点的操作来对主节点的数据进行同步备份。
配置副本集
环境准备:
节点总数量:4
主节点:1
副节点:2
仲裁节点:1
192.168.16.59:27017
192.168.16.59:27018
192.168.16.59:27019
192.168.16.59:27020
文件目录:
mongod.conf
#mongod.conf #配置与存储有关的信息 storage: dbPath: D:\software\MongoDB\data3\db journal: enabled: true #指定与日志有关的信息 systemLog: destination: file quiet: true logAppend: false path: D:\software\MongoDB\log3\mongod.log #配置与网络有关的信息 net: port: 27020 bindIp: 0.0.0.0 #副本集模式 replication: replSetName: rs #副本集名称
mongod1.conf
#mongod.conf #配置与存储有关的信息 storage: dbPath: D:\software\MongoDB\data1\db journal: enabled: true #指定与日志有关的信息 systemLog: destination: file quiet: true logAppend: false path: D:\software\MongoDB\log1\mongod.log #配置与网络有关的信息 net: port: 27018 bindIp: 0.0.0.0 #副本集模式 replication: replSetName: rs #副本集名称
mongod2.conf
#mongod.conf #配置与存储有关的信息 storage: dbPath: D:\software\MongoDB\data2\db journal: enabled: true #指定与日志有关的信息 systemLog: destination: file quiet: true logAppend: false path: D:\software\MongoDB\log2\mongod.log #配置与网络有关的信息 net: port: 27019 bindIp: 0.0.0.0 #副本集模式 replication: replSetName: rs #副本集名称
mongod3.conf
#mongod.conf #配置与存储有关的信息 storage: dbPath: D:\software\MongoDB\data3\db journal: enabled: true #指定与日志有关的信息 systemLog: destination: file quiet: true logAppend: false path: D:\software\MongoDB\log3\mongod.log #配置与网络有关的信息 net: port: 27020 bindIp: 0.0.0.0 #副本集模式 replication: replSetName: rs #副本集名称
注册服务:
启动服务:
定义副本集配置
初始化副本集
查看副本集状态:
切换副本集:
切换到主节点
mongodb配置完复制集文件进行初始化时报错:
"ok" : 0,
"errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: 172.24.240.103:28001 failed with No route to host, 172.24.240.104:28001 failed with No route to host, 172.24.240.105:28001 failed with No route to host",
"code" : 74,
"codeName" : "NodeNotFound"
解决方案:
由于mongodb分布式复制集初始化时需要各个节点之间的通话,所以需要将各个节点上的防火墙进行关闭。