一、MangoDb的副本集:操作、主要概念、故障转移、选举规则
一、副本集合
副本集就是维护一组相同的数据库,类似于mysql的主从机制,但是mysql的主从是固定的,但是mangodb的副本集是通过投票机制选举出主节点,所以副本集中总有一个主节点和多个备份节点。
节点类型:主节点(读写)、备份节点(读)
三种角色:主要成员(主节点)、副本成员(备份节点)、仲裁者(不保留数据,投票选举作用)
二、副本集的创建
1、创建主节点、备份节点、仲裁节点
- 创建2个文件夹:日志、数据
文章图片
- 创建配置文件,注意副本集名称,replication:replSetName:xxx
- 启动各个节点
- 连接主机节点:bin/mango --host=120.0.0.1 --port=21017
- 执行命令:rs.initiate(),
文章图片
- 查看配置:rs.conf(),只有一个主节点,也可用status查看节点运行状态
文章图片
- 添加备份节点和仲裁节点:rs.add("IP:PORT") - 添加备份节点,rs.addArb("IP:PORT") - 添加仲裁节点
- 登录备份节点,输入命令:rs.slaveOk(),让备份节点承认角色,这个时候备份节点就可以进行读操作了,取消操作是rs.slaveOk(false)
3、主节点的选举原则
在mangodb中,会自动选举主节点:
- 主节点故障或网络不可达(默认心跳信息为10秒)
- 人工干预(rs.stepDown(600))
注意选择规则中存在一个 大多数成员支持,例如一主、一从、一仲裁,当主和仲裁都宕机,从也不会切换到主,因为没有得到大多数成员支持。
文章图片
二、MongoDb的分片集群:概念、有点、操作、分片策略、故障转移 一、分片集群
将数据拆分,这样在不同机器存放不同的数据块。可以使用使用多台廉价的服务器存放海量数据。
分片组件:
- 分片(存储):数据的存储
- mongs(路由):控制数据访问
- config servers(调度配置):配置路由的相关配置
文章图片
其实常用的解决方法,是分片+集群的方式进行部署:
二、分片集群的搭建
注意搭建的时候,一定要先搭建副本集和配置,最后搭建路由。
- 搭建2个副本集(跟之前一样),注意副本集的分片角色
文章图片
- 配置节点副本集,在配置信息中需要注意副本集的名称和分片的角色
文章图片
- 初始化三个集群副本集的主节点、副本节点、仲裁节点(配置副本集没有,也可以有)
- 路由节点的创建,使用mongs服务
- 创建日志目录
- 创建配置文件,需要制定配置节点的副本集
文章图片
- 增加分片节点:sh.addShard("名称/IP:PORT,IP:PORT")
- 开启分片功能:sh.enableSharding("库名"),sh.shardCollection("库名.集合名",{"key":1})
文章图片
- hash策略:sh.shardCollection("库名.集合", {列名:"hashed"}),根据某个字段进行hash分片
- 范围策略:sh.shardCollection("库名.集合", {列名:1}),根据某个字段范围进行分片,当数据块(chunk,默认的大小64M)没有填满的时候,不会分片
连接语法:
文章图片
三、MangoDb的安全认证 一、用户和角色简介
通其它中间件一样,也是通过角色和权限进行配置,一个角色可以包含多个权限,权限包括对资源的CRUD。
内置角色,其中readWrite比较常用:
文章图片
各种环境之间的安全认证:
- 单实例环境:直接给用户赋角色即可,创建语法如下。需要在mongodb开启认证,启动的时候增加参数 --auth,可以在配置文件中增加配置
文章图片
- 副本集环境:应用和单机都是相同的,都需要用户名和密码,主要不同的是各个节点之间安全通信处理方式除了创建用户之外还需要生成key文件
- 增加用户并赋角色
- 生成一个key文件,使用openssl即可
文章图片
- 将key文件复制到各个节点中
- 在配置文件中,制定key文件的目录
文章图片
- 集群分片环境:跟副本集环境完全相同的
uri:mongodb:用户名:密码@IP:PORT/库
【mongodb|MongoDB集群和安全】
推荐阅读
- 大数据|零零信安(0.zone攻击面查询和收敛平台——攻防演练神器)
- 学习|【控制工程】自动控制原理和系统建模
- 笔记|【控制工程】之稳定性分析
- 大数据|【毕业设计】基于HMM隐马尔科夫的股票预测 - 机器学习 股票预测 python
- 毕业设计|【毕业设计】信用卡欺诈检测系统 - python 大数据
- 毕业设计|【毕业设计】Spark海量新闻文本聚类(文本分类)
- 毕业设计|【毕业设计】opencv+python+深度学习 实现公式识别
- 毕业设计|【毕业设计】Python B站数据分析 用户情感分析 - 大数据项目
- 数据库|mybatis