1、Mongodb复制集简介mongodb
复制集(Replica Sets)是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增长了数据可用性,经过复制集能够对硬件故障和中断的服务进行恢复。数据库
mongodb的复制集至少须要两个节点。其中一个是主节点,负责处理客户端请求,其他的都是从节点,负责复制主节点上的数据。
vim
mongodb各个节点常见的搭配方式为:一主一从、一主多从。安全
主节点记录在其上的全部操做oplog,从节点按期轮询主节点获取这些操做,而后对本身的数据副本执行这些操做,从而保证从节点的数据与主节点一致。服务器
MongoDB复制结构图以下所示:ide
以上结构图中,客户端从主节点读取数据,在客户端写入数据到主节点时, 主节点与从节点进行数据交互保障数据的一致性。spa
复制集的优点:3d
让数据更安全
搞数据可用性
灾难恢复
无停机维护(如备份,重建索引,故障转移)
读缩放(额外的副本读取)
副本集对应用程序是透明的日志
复制集的特色:orm
N个几点的群集
任何节点可做为主节点
全部写入操做都在主节点上
自动故障转移
自动恢复
主从切换:
1.手动切换:主动放弃primary,其他从服务器会选举出主服务器
2.自动切换:关闭MongoDB服务,其他从服务器会选举出主服务器
2、实验环境:
1.安装MongoDB连接:Centos 7 超简单yum源安装MongoDB
2.由于是实验,因此在一台Centos 7虚拟机的MongoDB服务器进行配置复制集,IP:192.168.233.6
3.添加配置开启4个实例,端口号分别为:
1)27017
2)27018
3)27019
4)27020
4.实验操做:4个实例 开启三个 1主2个从 额外添加复制集追加实例27020 节点 撤销实例27020节点
3、操做步骤
1.安装MongoDB完成后,默认端口号是27017
额外添加3个实例
首先须要建立三个数据存储目录,三个日志文件
mkdir -p /data/mongodb/mongodb{2,3,4} #建立3个数据文件目录
mkdir -p /data/mongodb/logs #建立日志文件目录
touch /data/mongodb/logs/mongodb{2,3,4}.log #建立3个日志文件
chmod 777 /data/mongodb/logs/*.log #修改日志文件的权限,能写能读,最大权限
2.修改 27017端口默认MongoDB的配置文件,开启复制集
vim /etc/mongod.conf
3.由于修改过配置文件因此须要关闭并从新开启MongoDB
mongod -f /etc/mongod.conf --shutdown #关闭MongoDB
mongod -f /etc/mongod.conf #开启MongoDB
4.复制并生成3个节点配置文件,进行修改
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod2.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod3.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod4.conf
5.须要修改每个节点的配置文件
[root@localhost logs]# vim /etc/mongod2.conf
# vim /etc/mongod2.conf
.......
path: /data/mongodb/logs/mongodb2.log //每一个实例指定本身日志目录
.......
dbPath: /data/mongodb/mongodb2 //每一个实例指定本身的数据目录
port: 27018 //指定端口分别为2701八、 27019 、 27020
.......
replication: //开启全部实例的复制参数:定义一个 replSetName: yang
replSetName: yang
[root@localhost logs]# vim /etc/mongod3.conf
# vim /etc/mongod3.conf
.......
path: /data/mongodb/logs/mongodb3.log //每一个实例指定本身日志目录
.......
dbPath: /data/mongodb/mongodb3 //每一个实例指定本身的数据目录
port: 27019 //指定端口分别为2701八、 27019 、 27020
.......
replication: //开启全部实例的复制参数:定义一个 replSetName: yang
replSetName: yang
[root@localhost logs]# vim /etc/mongod4.conf
# vim /etc/mongod4.conf
.......
path: /data/mongodb/logs/mongodb4.log //每一个实例指定本身日志目录
.......
dbPath: /data/mongodb/mongodb4 //每一个实例指定本身的数据目录
port: 27020 //指定端口分别为2701八、 27019 、 27020
.......
replication: //开启全部实例的复制参数:定义一个 replSetName: yang
replSetName: yang
6.设置配置以上步骤修改完成mongo2 mongo3 mongo4后,开启服务
[root@localhost logs]# mongod -f /etc/mongod2.conf
[root@localhost logs]# mongod -f /etc/mongod3.conf
[root@localhost logs]# mongod -f /etc/mongod4.conf
#查看下四个端口的MongoDB开启
[root@localhost logs]# netstat -natp | grep mongo
7.配置三个节点的复制集
#首先进入默认MongoDB数据库中
mongo
#建立三个节点复制集
cfg={"_id":"yang","members":[{"_id":0,"host":"192.168.233.6:27017"},{"_id":1,"host":"192.168.233.6:27018"},{"_id":2,"host":"192.168.233.6:27019"}]}
#初始化配置时保证从节点没有数据
rs.initiate(cfg)
rs.status() #查看复制集的状态
主节点:27017端口
从节点:27018端口
从节点:27019端口
#由于以前只是建立了三个节点的复制集,如今演示添加27020端口的节点
#首先须要进入主节点PRIMARY 27017
#添加节点 ,在主节点上才能进行操做 primary
rs.add("192.168.233.6:27020")
rs.status() #查看复制集的状态
#既然能添加节点,就能删除节点:
#删除节点 ,在主节点上才能进行操做 primary
rs.remove("192.168.233.6:27020")