前言
本节课来讲mongodb的高级部分知识 集群搭建 其实mongodb中的集群搭建方式有三种
第一种是 master - slave 的模式 但是不支持容灾功能 仅仅是数据同步 也就是主从模式 主挂了 从无法顶替
第二种就是我们今天来说的replicaset集群 他支持选举主节点 并实现了高可用 以及数据的同步 在该模式中有三种角色 primary 主 secondary 从 arbiter 仲裁者
主负责创建查询数据 保存数据
从可以查询数据分担压力 也存储数据 选举
仲裁者 选举 不存储数据
当我们的主节点挂了之后还是需要仲裁节点来选举的所以也是需要有的 同时也是一个mongo服务器
第三种就是 sharding 分片 了 这种模式适用于超大量数据下 才能显示出它的威力 能够将压力分摊到每一个mongo服务器 但是在平常的话 应该性能是不如第二种的
所以我们今天主要来说第二种 也是官方推荐的一种方式
架构图 A 就是仲裁节点
开始
我们演示在windows中搭建集群 在linux中是一样的 只不过没有了界面 我们是一台windows所以是伪集群 实际就是换一下IP
第一步
将mongod.exe文件拷贝出来到电脑的某一个位置 新建文件夹 27001 新建db文件夹
拷贝如下配置文件 新建1.config 并粘贴进去
port=27001
dbpath=./db
bind_ip=127.0.0.1
replSet=ctrip
- port 是端口
- dbpath 是数据存储路径
- bind_ip 绑定的IP
- replSet 集群名称
之后拷贝 27001 文件夹三份 依此修改名字为 27002 27003 27004
我们让27004 作为仲裁节点
并分别进入文件夹内修改端口
依次启动 27001 27002 27003 27004
四台全部启动
通过客户端工具 进行链接 27001 随便那一台都行
初始化集群
rs.initiate()
查看配置
rs.conf()
可以看到有几个节点
添加成员节点
rs.add("127.0.0.1:27002");
rs.add("127.0.0.1:27003");
添加仲裁节点
rs.addArb("127.0.0.1:27004")
查看状态
rs.status()
可以看到主从
查看数据库 默认没有数据库
show databases;
使用数据库 会自动创建
use cluster;
在主节点中插入一条数据 查看状态 stateStr 为 PRIMARY 的就是主节点
db.test.insert({name:"lee123"});
切换到其他链接 查看数据是否同步 同时其他数据库中也创建了 cluster 数据库 test 集合 数据也有了
接下里验证高可用
我们给主节点 停掉 直接关闭CMD或者ctrl+c都行
然后我们会看到一直在重连 主节点
然后我们切换到其他链接中
查看状态
27001 已经不可用
可以看到其中某一台已成为主节点
这就是实现了高可用
但是记住集群数量不能小于两台哦
结语
这节就讲到这里~ 下一节来说一下 Nodejs中如何操作mongodb