一、概述

(1)MongoDB复制是将数据同步在多个服务器的过程。

(2)复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

(3)复制还允许您从硬件故障和服务中断中恢复数据。

注意:MongoDB Atlas上托管的所有数据库都配置为副本集。Atlas可以轻松添加和删除首选云提供商的任何区域中的副本集成员;副本集提供冗余和高可用性,是所有生产部署的基础。

1、冗余和数据可用性

复制提供冗余并提高数据可用性。通过在不同数据库服务器上提供多个数据副本,复制可提供一定程度的容错能力,以防止丢失单个数据库服务器。

在某些情况下,复制可以提供增加的读取容量,因为客户端可以将读取操作发送到不同的服 在不同数据中心维护数据副本可以增加分布式应用程序的数据位置和可用性。您还可以为专用目的维护其他副本,例如灾难恢复,报告或备份。

2、MongoDB复制原理

(1)mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

(2)mongodb各个节点常见的搭配方式为:一主一从、一主多从。

(3)主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

MongoDB复制结构图如下所示:

以上结构图中,客户端从主节点读取数据,在客户端写入数据到主节点时, 主节点与从节点进行数据交互保障数据的一致性。

副本集特征:

(1)N 个节点的集群

(2)任何节点可作为主节点

(3)所有写入操作都在主节点上

(4)自动故障转移

(5)自动恢复

3、副本集成员

(1)primary:主服务器是副本集中唯一接收写入操作的成员。MongoDB在主服务器上应用写操作,然后在主服务器的oplog上记录操作。辅助成员复制此日志并将操作应用于其数据集。

(2)secondary:辅助节点从主节点复制操作以维护相同的数据集。辅助节点可能具有特殊使用配置文件的其他配置。例如:辅助可以是非投票或 优先级0。

1)优先级0副本集成员

不能成为主要的和不能触发 选举。除此之外,具有 正常辅助功能的辅助设备:它们维护数据集的副本,接受读取操作,并在选举中投票。

2)隐藏副本集成员

隐藏成员维护主 数据集的副本,但对客户端应用程序不可见。隐藏成员适用于具有与副本集中其他成员不同的使用模式的工作负载。隐藏成员必须始终 优先为0成员,因此不能成为主要成员。该db.isMaster()方法不显示隐藏的成员。然而,隐藏的成员可能会在 选举中投票。

备注:在分片群集中,mongos不要与隐藏成员交互。

3)延迟副本集成员

延迟成员包含副本集数据集的副本。但是,延迟成员的数据集反映了该集合的早期或延迟状态。

注意事项:

要求:

必须是 优先级为0的 成员。将优先级设置为0以防止延迟成员成为主要成员。

应该是 隐藏的 成员。始终阻止应用程序查看和查询延迟的成员。

做到在投票选举为primary,若members[n].votes设置为1。

行为:

延迟成员在延迟时从源oplog复制和应用操作。在选择延迟量时,请考虑延迟量:

必须等于或大于预期的维护窗口持续时间。

必须小于 oplog的容量。

(3)arbiter:仲裁器不具有数据集的副本,并不能成为主要的。副本集可能有仲裁者在主要选举中添加投票 。仲裁者 总是拥有恰当的1选举投票,因此允许副本集具有不均匀的投票成员数,而不会产生复制数据的额外成员的开销。

补充:

副本集的最小建议配置是三个成员副本集,其中包含三个数据承载成员:一个主成员和两个辅助成员。您也可以部署具有两个数据承载成员的三成员副本集:主要成员,辅助成员 和仲裁者,但具有至少三个数据承载成员的副本集提供更好的冗余。

副本集最多可包含50个成员,但只有7个投票成员。

二、mongodb集群(副本集模式)

1、数据库环境

主机名

数据库IP地址

数据库版本

端口

用途

系统

SQL_jiangjj

192.168.56.147

mongodb4.0.3

27017

primary(主)

cenots7.4

node01

192.168.56.242

mongodb4.0.3

27017

secondary(备)

centos7.4

node01

192.168.56.245

mongodb4.0.3

27017

arbiter(仲裁)

centos7.5

2、暂时关闭防火墙和seliunx,测试完毕再开启安全规则

3、下载mongdb包

官方地址:https://www.mongodb.com/download-center/v2/community

4、上传包解压并创建目录

(1)解压

# tar -zxvf mongodb-linux-x86_64-rhel70-4.0.3.tgz

# mv mongodb-linux-x86_64-rhel70-4.0.3 mongodb

同样的,在node01和node02上也解压并改名(略)

(2)创建目录

[root@SQL_jiangjj ~]# mkdir -p /home/mongodb/primary

[root@SQL_jiangjj ~]# mkdir -p /etc/mongodb/

[root@node01 ~]# mkdir -p /home/mongodb/secondary/

[root@node01 ~]# mkdir -p /etc/mongodb/

[root@node02 ~]# mkdir -p /home/mongodb/arbiter/

[root@node02 ~]# mkdir -p /etc/mongodb/

5、新建配置文件

参数详细说明:https://my.oschina.net/pwd/blog/399374

(1)主配置文件

# vim /etc/mongodb/primary.conf

#PRIMARY.CONF

dbpath=/home/mongodb/primary

logpath=/home/mongodb/primary.log

pidfilepath=/home/mongodb/primary.pid

#keyFile=/home/mongodb/mongodb.key  //节点间用户验证文件,内容必须一致,权限600,仅副本集模式有效

directoryperdb=true   //数据库是否分目录存放

logappend=true        //日志追加方式存放

replSet=google        //Replica set的名字

bind_ip=192.168.56.147

port=27017

#auth=true

oplogSize=100    //设置oplog的大小,单位MB

fork=true            //启动到后台,守护进程方式启动

noprealloc=true

#maxConns=4000

(2)备节点

[root@node01 ~]# cat /etc/mongodb/secondary.conf

(3)仲裁节点

6、启动服务

# ./mongodb/bin/mongod -f /etc/mongodb/primary.conf

[root@node01 ~]# ./mongodb/bin/mongod -f /etc/mongodb/secondary.conf

[root@node02 ~]# ./mongodb/bin/mongod -f /etc/mongodb/arbiter.conf

7、将节点配置组成集群

在任意节点启动配置,这里使用SQL_jiangjj节点

登录数据库

[root@SQL_jiangjj ~]# ./mongodb/bin/mongo 192.168.56.147:27017

> use admin

> cfg={ _id:"google",members:[{_id:0,host:'192.168.56.147:27017',priority:2},{_id:1,host:'192.168.56.242:27017',priority:1},{_id:2,host:'192.168.56.245:27017',arbiterOnly:true}] };

#配置生效命令

> rs.initiate(cfg)

说明:

(1)cfg名字可选,只要跟mongodb参数不冲突,_id为Replica Set名字,members里面的优先级priority值高的为主节点;

(2)对于仲裁点一定要加上arbiterOnly:true,否则主备模式不生效。

# 查看是否生效:> rs.status()

下面会显示字样:"ok" : 1

8、测试

(1)新建库

> use jiangjj

(2)插入文档

> db.jiangjj.insert({"name":"jiangjj"},{"titile":"标题行"},{"content":"副本集测试"})

查看两个节点数据

备注:重启系统后服务不会自启,如需请自行配置开启自启即可

三、副本集用户验证设置

1、创建验证秘钥文件

keyFile文件的作用: 集群之间的安全认证,增加安全认证机制KeyFile(开启keyfile认证就默认开启了auth认证了,为了保证后面可以登录,我已创建了用户)

#  touch .keyFile

#  chmod 600 .keyFile

# openssl rand -base64 102 > .keyFile

102:是文件大小

注意:创建keyFile前,需要先停掉副本集中所有主从节点的mongod服务,然后再创建,否则有可能出现服务启动不了的情况。

2、在主副本上添加两个用户

user01:PRIMARY> use admin

user01:PRIMARY> use jiangjj

3、更新所有节点配置文件

keyFile=/home/data/.keyFile

auth=true

4、启动副本集,测试

登录验证

root用户

查看数据

验证jiangjj用户

权限配置详细请参考官方文档

转载于:https://blog.51cto.com/13941177/2300885

mongodb集群-副本集(CSRS)相关推荐

  1. Mongodb集群 - 副本集内部选举机制

    今天有同事问我,副本集两个节点怎么做高可用,我也很好奇两个节点用副本集的方式怎么做高可用?查了一些资料,发现至少要三个节点才能做,也算是给自己普及理论知识. 选举算法 mongodb副本集的选举机制采 ...

  2. MongoDB集群——副本集

    1. 副本集的结构及原理 副本集包括三种节点:主节点.从节点.仲裁节点. 主节点负责处理客户端请求,读.写数据, 记录在其上所有操作的oplog: 从节点定期轮询主节点获取这些操作,然后对自己的数据副 ...

  3. mongo集群——副本集模式

    文章目录 mongo扩容方案/使用副本集 1.增加harddisk 2.新加一台服务器作为mongodb的从节点,设置主从模式 3.采用mongodb的副本集模式 4.mongo数据的备份与还原 5. ...

  4. MongoDB 分片(sharding)+副本集(replSet)集群搭建

    文章目录 MongoDB安装 Windows平台安装 1.下载 2.安装 3.启动MongoDB服务 4.进入MongoDB后台 Linux平台安装MongoDB 1.下载 2.安装 3.创建数据库目 ...

  5. linux下mongdb绑定ip,Linux下MongoDB安装及副本集配置 | 聂扬帆博客

    最近开始接触了MongoDB的安装配置,易部署.易使用,存储数据非常方便是它的特点. 0x00  副本集原理 MongDB副本集故障转移功能得益于它的选举机制.选举机制采用了Bully算法,可以很方便 ...

  6. mysql mongodb 集群_MongoDB 集群

    MongoDB 集群中包含一个自动分片模块 (mongos). 自动分片可以用于构建一个大规模的可扩展的数据库集群,这个集群可以并入动态增加的机器.自动建立一个水平扩展的数据库集群系统,将数据库分表存 ...

  7. MongoDB 复制(副本集)学习

    MongoDB 复制(副本集)学习 replication set复制集, 复制集,多台服务器维护相同的数据副本,提高服务器的可用性. MongoDB复制是将数据同步在多个服务器的过程. 复制提供了数 ...

  8. ELK 集群 + Redis 集群 + Nginx ,分布式的实时日志(数据)搜集和分析的监控系统搭建,简单上手使用

    简述 ELK实际上是三个工具的集合,ElasticSearch + Logstash + Kibana,这三个工具组合形成了一套实用.易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台. 官 ...

  9. ELK集群+Kafka集群+FileBeat——命运多舛的安装采坑之路

    欢迎大家关注我的公众号,添加我为好友! 开始的时候感觉日志监控是比较NB的技术,感觉很神奇,那么多日志,为什么一下子就能够找到自己想要的?后来初步了解到了ELK(ElasticSearch + Log ...

最新文章

  1. 浏览器tab关闭事件_翻译|揭示现代浏览器原理(2):网页访问 — Chrome官方
  2. Hibernate学习笔记(一)----针对不同的数据库不同的配置
  3. 结构体DIR和dirent
  4. Orace 数据字典表前缀 解释。
  5. Python3+Selenium3自动化测试-(一)
  6. python 代码转程序_精悍的Python代码段-转
  7. springmvc登录拦截器访问报错 SyntaxError: expected expression, got ''
  8. 探秘Spring AOP(上)
  9. 推理 —— 猜帽子颜色
  10. python基础教程是什么-python基础教程都有什么?
  11. 协议森林1——小喇叭开始广播:以太网与WiFi
  12. 计算机的网络测速,网速知识 - 专业网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测 - SpeedTest.cn...
  13. vue中实现window.print()打印功能遇到的几个坑
  14. c++编写乘法口诀表
  15. java 读取zip文件_JAVA实现zip文件内容读取及解压
  16. 首次公开,用了三年的 pandas 速查表
  17. 个人面试问答题知识库(一)百面机器学习篇
  18. FreeBSD常用命令110条
  19. rqt teb参数动态调试工具_teb教程8
  20. 2022中国眼博会,山东眼健康展,视力矫正仪器展,护眼产品展

热门文章

  1. 吃鸡空投掉落射线检测,粒子系统产生红色信号烟
  2. 淘宝店铺装修之一怎样在自定义内容区做个商品图片轮播展示
  3. 倾斜摄影三维模型、激光点云、正射影像、数字高程模型如何实现在线浏览?
  4. IOS不兼容超出部分省略号 且页面显示不起作用 行数限定无作用
  5. 日本单次旅游签 简化材料办理 稳定出签
  6. PS进阶篇——如何PS软件给衣服换个颜色或图案风格(七)
  7. python-格式化写入xml文件
  8. EditPlus格式化xml文档
  9. springMVC配置多数据源
  10. 听不够的三国,淡淡的乡愁