审核中~
溜忙之道
首页
溜忙手册
offer之道
项目Git
写文章
登录
·
注册
登录
没有账号,去注册
注册
已有账号,去登录
博客
# mongodb-4.0.4搭建集群
南易_站长
阅读量:16938
关注
# mongodb-4.0.4搭建集群
[](http://creativecommons.org/licenses/by-sa/4.0/)版权声明:本文为博主原创文章,遵循[ CC 4.0 BY-SA ](http://creativecommons.org/licenses/by-sa/4.0/)版权协议,转载请附上原文出处链接和本声明。 本文链接:[https://blog.csdn.net/weixin_42082634/article/details/84973831](https://blog.csdn.net/weixin_42082634/article/details/84973831) mongodb的集群搭建方式主要有三种,主从模式,Replica set模式,sharding模式, 三种模式各有优劣,适用于不同的场合,属Replica set应用最为广泛,主从模式现在用的较少,sharding模式最为完备,但配置维护较为复杂。本文我们来看下Replica Set模式的搭建方法。 Mongodb的Replica Set即副本集方式主要有两个目的,一个是数据冗余做故障恢复使用,当发生硬件故障或者其它原因造成的宕机时,可以使用副本进行恢复。另一个是做读写分离,读的请求分流到副本上,减轻主(Primary)的读压力。 Replica Set是mongod的实例集合,它们有着同样的数据内容。包含三类角色: **(1)主节点(Primary)** 接收所有的写请求,然后把修改同步到所有Secondary。一个Replica Set只能有一个Primary节点,当Primary挂掉后,其他Secondary或者Arbiter节点会重新选举出来一个主节点。默认读请求也是发到Primary节点处理的,需要转发到Secondary需要客户端修改一下连接配置。 **(2)副本节点(Secondary)** 与主节点保持同样的数据集。当主节点挂掉的时候,参与选主。 **(3)仲裁者(Arbiter)** 不保有数据,不参与选主,只进行选主投票。使用Arbiter可以减轻数据存储的硬件需求,Arbiter跑起来几乎没什么大的硬件资源需求,但重要的一点是,在生产环境下它和其他数据节点不要部署在同一台机器上。 注意,一个自动failover的Replica Set节点数必须为奇数,目的是选主投票的时候要有一个大多数才能进行选主决策。 **(4)选主过程** 其中Secondary宕机,不受影响,若Primary宕机,会进行重新选主: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181212145558153.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4MjYzNA==,size_16,color_FFFFFF,t_70) 下边我们来使用Arbiter搭建Replica Set 偶数个数据节点,加一个Arbiter构成的Replica Set方式: ![在这里插入图片描述](https://img-blog.csdnimg.cn/2018121214563026.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4MjYzNA==,size_16,color_FFFFFF,t_70) **集群配置:** | 主机 | 角色 | | --- | --- | | 10.0.86.207 | 主节点 | | 10.0.86.21 | 从节点 | | 10.0.86.193 | 仲裁节点 | **1.下载资源包:** 下载MongoDB资源包 ``` wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz tar -zxvf mongodb-linux-x86_64-4.0.4.tgz ``` **2.配置文件:** 三台MongoDB配置文件都是同样的写法,ip和路径做适当修改即可 ``` vi /usr/local/sdb/mongodb-linux-x86_64-4.0.4/mongodb.conf port=27017 #端口 dbpath= /usr/local/sdb/mongodb-linux-x86_64-4.0.4/db #数据库存文件存放目录 logpath= /usr/local/sdb/mongodb-linux-x86_64-4.0.4/mongodb.log #日志文件存放路径 logappend=true #使用追加的方式写日志 fork=true #不以守护程序的方式启用,即不在后台运行 replSet=sciencedb #Replica Set的名字 集群名称 maxConns=100 #最大同时连接数 noauth=true #不启用验证 journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。 #即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。 storageEngine=wiredTiger #存储引擎有mmapv1、wiretiger、mongorocks bind_ip = 10.0.86.193 #这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB ``` **3.启动MongoDB** 启动三台MongoDB服务 在bin目录下, ``` ./mongod -f /usr/local/sdb/mongodb-linux-x86_64-4.0.4/mongodb.conf ``` **4.在主节点进行配置** 还是在bin目录下依次进行操作, ``` ./mongo 10.0.86.21 use admin cfg={ _id:"sciencedb", members:[ {_id:0,host:'10.0.86.21:27017',priority:2}, {_id:1,host:'10.0.86.207:27017',priority:1}, {_id:2,host:'10.0.86.193:27017',arbiterOnly:true}] }; ``` 备注: cfg名字可选,只要跟mongodb参数不冲突,_id为Replica Set名字,members里面的优先级priority值高的为主节点,对于仲裁点一定要加上arbiterOnly:true,否则主备模式不生效 priority表示优先级别,数值越大,表示是主节点 arbiterOnly:true表示仲裁节点 使集群cfg配置生效rs.initiate(cfg) 查看是否生效rs.status() ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181212152231367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4MjYzNA==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181212152308890.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4MjYzNA==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181212152422973.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4MjYzNA==,size_16,color_FFFFFF,t_70) *接上* ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181212152605107.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjA4MjYzNA==,size_16,color_FFFFFF,t_70) *图片长度限制这里只列出部分说明情况* “stateStr” : “PRIMARY”表示主节点, “stateStr” : “SECONDARY”表示从节点, “stateStr” : “ARBITER”,表示仲裁节点 **添加节点命令:** 添加secondary:rs.add({host: “192.168.255.141:27019”, priority: 1 }) 添加仲裁点:rs.addArb(“192.168.255.142:27019”) 移除节点:rs.remove({host: “192.168.255.141:27019”}) 此时已经完成MongoDB集群的搭建,可以在主节点插入数据查看从节点是否可以把数据同步过去
评论
表情
发送
4
评论