MongoDB副本集部署(Replica Set)

MongoDB使用手册:https://www.runoob.com/mongodb/mongodb-tutorial.html

MongoDB源码包下载地址:https://www.mongodb.com/try#community

MongoDB官网文档:https://docs.mongodb.com/v4.0/sharding/

 

 


服务规划:


MongoDB副本集部署(Replica Set)

该部署使用的Red Hat 7为例

MongoDB副本集相当于MySQL的主从复制,一主多从,与MySQL不同的是,MongoDB的副本集实例的数量需要有三个,一主一从一仲裁。但是仲裁节点(Arbiter)它其实并不保存数据,并且不能被选举为主节点,但是具有投票权。仲裁节点使用最小的资源,不能将Arbiter部署在同一个数据集节点中。然后主节点负责处理客户端请求。其余的都是从节点,负责复制主节点上的数据

MongoDB副本集的选举机制:参与选举的节点数量必须大于副本集总节点数量的一半,如果已经小于一半了所有节点保持只读状态。所以说,理论上其实副本集中最好是有奇数个成员节点

前提工作

所有设备都要做如下操作。

1.关闭防火墙

    systemctl stop firewalld.service

    systemctl disable firewalld.service

2.关闭SELinux

    setenforce 0                   //临时关闭

    vim /etc/selinux/config   //永久关闭

SELINUX=enforcing改为SELINUX=disabled

3.解压MongoDB包

    注意选择对应的系统版本的MongoDB包,在这里我使用的是Centos7的环境,所以下载的也是rhel70的MongoDB

    tar -zxvf /opt/install/mongodb-linux-x86_64-rhel70-3.4.24.tgz

    mv /opt/install/mongodb-linux-x86_64-rhel70-3.4.24/ /usr/local/mongodb

部署副本集Relica Set

三台设备都要部署,最后部署完成的结果是:192.168.36.137为主(PRIMARY),138为从(SECONDARY),139为仲裁(ARBITER)。

1.创建数据文件和日志文件

    mkdir -p /usr/local/mongodb/data

    mkdir -p /usr/local/mongodb/logs

    mkdir -p /usr/local/mongodb/etc

2.配置MongoDB配置文件

    vi /usr/local/mongodb/etc/mongodb.conf

dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true
pidfilepath=/usr/local/mongodb/mongodb.pid
port=27017                   //端口可以根据节点进行修改,这里我三台设备分别使用的27017、27018、27019端口
fork=true                    //守护进程开启,也就是后台运行
replSet=myrs                 //副本集名称,各节点的副本集名称需要一致

3.启动MongoDB

    cd /usr/local/mongodb/bin/

    ./mongod --config /usr/local/mongodb/etc/mongodb.conf

4.进入MongoDB创建副本集

    #随便使用一台设备,这里我采用的192.168.36.137设备

    ./mongo

> use admin
// priority越大的为主节点,myrs需要是集群的名字
> rs.initiate({
_id:"myrs",
members:[
{_id:0,host:"192.168.36.137:27017","priority":2},         
{_id:1,host:"192.168.36.138:27018","priority":1},
{_id:2,host:"192.168.36.139:27019",arbiterOnly:true}
]
})
myrs:OTHER>
myrs:SECONDARY>

这里稍等一会,退出重进,我们的192.168.36.137就会被选举成主节点了。

5.查看节点配置和状态命令

#查看节点状态(主:PRIMARY  从:SECONDARY  仲裁:ARBITER)
myrs:PRIMARY> rs.status()
#查看节点配置
myrs:PRIMARY> rs.config()

副本集验证

    #首先进入主节点建一个数据,当前也就是192.168.36.137

    cd /usr/local/mongodb/bin/

    ./mongo

myrs:PRIMARY> use test1
myrs:PRIMARY> db.c1.insert({uname:"webopenfather",age:18})
myrs:PRIMARY> show dbs
admin   0.000GB
local   0.000GB
test1   0.000GB

    #然后进入从节点查看,当前也就是192.168.36.137,这里因为我们改了端口,所以从节点这里进入MongoDB需要指定端口

    ./mongo --port 27018

myrs:SECONDARY> rs.slaveOk()        //启动从节点的读功能,默认是关闭的,仲裁也是如此,只是仲裁不会同步主节点数据
myrs:SECONDARY> show dbs            //可以看到,我们数据已经同步过来了
admin   0.000GB
local   0.000GB
test1   0.000GB

 这时候,当PRIMARY节点挂掉时,SECONDARY节点就会变为PRIMARY,至此,我们的MongoDB副本集就搭建完成了!

 若要做密码验证,请参考MongoDB设置密码验证

 

posted @ 2022-02-23 17:21  RFAA  阅读(531)  评论(0编辑  收藏  举报