一、什么是复制集
复制集是由一组拥有相同数据集的mongod实例做组成的集群。 复制集是一个集群,它是2台及2台以上的服务器组成,以及复制集成员包括Primary主节点,secondary从 节点和投票节点。
复制集提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,保证数据的安全性。
二、复制集结构
三、复制conf文件
四、配置conf文件
依次复制conf文件,额外添加replSet=lagouCluster的配置
主节点配置 mongo_37017.conf
# 主节点配置
dbpath=/data/mongo/data/server1
bind_ip=0.0.0.0
port=37017
fork=true
logpath=/data/mongo/logs/server1.log
replSet=lagouCluster
从节点1配置 mongo_37018.conf
dbpath=/data/mongo/data/server2
bind_ip=0.0.0.0
port=37018
fork=true
logpath=/data/mongo/logs/server2.log
replSet=lagouCluster
从节点2配置 mongo_37019.conf
dbpath=/data/mongo/data/server3
bind_ip=0.0.0.0
port=37019
fork=true
logpath=/data/mongo/logs/server3.log
replSet=lagouCluster
…仲裁节点同上,不复制了
五、启动节点
初始化节点配置
启动四个节点 然后进入任意一个节点 运行如下命令:
var cfg ={"_id":"lagouCluster1",
"protocolVersion" : 1,
"members":[
{"_id":1,"host":"192.168.192.130:37011","priority":10},
{"_id":2,"host":"192.168.192.130:37013"},
{"_id":3,"host":"192.168.192.130:37015"},
{"_id":4,"host":"192.168.192.130:37017","arbiterOnly":true}
]
}
rs.initiate(cfg)
rs.status()
注意:仲裁节点"arbiterOnly":true
rs.status()查看集群状态
节点说明:
PRIMARY 节点: 可以查询和新增数据
SECONDARY 节点:只能查询 不能新增 基于priority 权重可以被选为主节点
ARBITER 节点: 不能查询数据 和新增数据 ,不能变成主节点
节点的动态增删
增加节点
rs.add("192.168.211.133:37019")
删除slave 节点
rs.remove("192.168.211.133:37019")