生产环境中我们不可能只有一台MongoDB服务器,我们需要一个集群来支持应用程序的请求.这里我们通过使用副本集来实现.创建副本集,会有一个主服务器,它主要用于处理应用程序的请求,多个备份服务器,从主服务器备份数据副本, 当主服务崩溃的时候,备份服务器通过选举,满足“大多数”的条件,一台备份服务器可以成为主服务.
创建副本集
mongod --dbpath="副本集路径" --port 端口号 --replSet 副本集名称 --oplogSize=5(定义日志大小,新建需要开启不需要)
目前我创建的例子:
第一个成员
mongod --dbpath="C:\data\db\node1" --port 1111 --replSet replicationTest --oplogSize=5
第二个成员
mongod --dbpath="C:\data\db\node2" --port 2222 --replSet replicationTest --oplogSize=5
第三个成员
mongod --dbpath="C:\data\db\node3" --port 3333 --replSet replicationTest --oplogSize=5
目前我在不同服务器上面创建了3个不同的mongod实例(我是本机操作的,现实中在不同服务器上面创建), 但是他们彼此不清楚对方的存在,
通过创建配置文件让他们彼此联系在一起.
如果某个副本集成员关闭了,通过命令开启:例 : mongod --dbpath="C:\data\db\node1" --port 1111 --replSet replicationTest
我的副本集名称这里是:replicationTest,下面的host对应的是副本集的成员
config={
"id":"replicationTest",
"members":[
{"_id":0,"host":"127.0.0.1:1111"},
{"_id":1,"host":"127.0.0.1:2222"},
{"_id":1,"host":"127.0.0.1:2222"}
]
}
然后执行初始化
--config是副本集的配置信息
db= (new Mongo("127.0.0.1:1111")).getDB("test")
//初始化副本集
rs.initiate(config)
此时配置结束,这个副本集会自动选出一个主节点,登录到其中一个副本,如下图
stateStrL"Primary" 表示主节点,也可以通过rs.isMaster() 命令查看
此时整个副本集配置结束