mongodb主从复制_动力节点Java学院整理

发布时间 - 2026-01-11 02:56:39    点击率:

从这一篇开始我们主要讨论mongodb的部署技术。

我们知道sql server能够做到读写分离,双机热备份和集群部署,当然mongodb也能做到,实际应用中我们不希望数据库采用单点部署,如果碰到数据库宕机或者被毁灭性破坏那是多么的糟糕。

一:主从复制

1: 首先看看模型图

2: 从上面的图形中我们可以分析出这种架构有如下的好处:

<1> 数据备份。

<2> 数据恢复。

<3> 读写分离。

3:下面我们就一一实践

实际应用中我们肯定是多服务器部署,限于自己懒的装虚拟机,就在一台机器上实践了。

第一步:我们把mongodb文件夹放在D盘和E盘,模拟放在多服务器上。

第二步:启动D盘上的mongodb,把该数据库指定为主数据库,其实命令很简单:>mongodb --dbpath='XXX' --master,

端口还是默认的27017.

第三步:同样的方式启动E盘上的mongodb,指定该数据库为从属数据库,命令也很简单,当然我们要换一个端口,比如:8888。

source 表示主数据库的地址。

>mongod --dbpath=xxxx --port=8888 --slave --source=127.0.0.1:27017

第四步:从图中的红色区域我们发现了一条:“applied 1 operations"这样的语句,并且发生的时间相隔10s,也就说明从属数据库每10s

就向主数据库同步数据,同步依据也就是寻找主数据库的”OpLog“日志,可以在图中红色区域内发现”sync_pullOpLog“字样。

接下来我们要做的就是测试,惊讶的发现数据已经同步更新,爽啊。

4:如果我还想增加一台从属数据库,但是我不想在启动时就指定,而是后期指定,那么mongodb可否做的到呢?答案肯定是可以的。

我们的主或者从属数据库中都有一个叫做local的集合,主要是用于存放内部复制信息。

好,那么我们就试一下,我在F盘再拷贝一份mongodb的运行程序,cmd窗口好多啊,大家不要搞乱了。

看上面的log,提示没有主数据库,没关系,某一天我们良心发现,给他后期补贴一下,哈哈,再开一个cmd窗口,语句也就是

在sources中add一个host地址,最后发现数据也同步到127.0.0.1:5555这台从属数据库中....

5: 读写分离

这种手段在大一点的架构中都有实现,在mongodb中其实很简单,在默认的情况下,从属数据库不支持数据的读取,但是没关系,

在驱动中给我们提供了一个叫做“slaveOkay"来让我们可以显示的读取从属数据库来减轻主数据库的性能压力,这里就不演示了。

二:副本集

这个也是很牛X的主从集群,不过跟上面的集群还是有两点区别的。

<1>: 该集群没有特定的主数据库。

<2>: 如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能,很牛X的啊。

好,我们现在就来试一下,首先把所有的cmd窗口关掉重新来,清掉db下的所有文件。

第一步: 既然我们要建立集群,就得取个集群名字,这里就取我们的公司名shopex, --replSet表示让服务器知道shopex下还有其他数据库,

这里就把D盘里面的mongodb程序打开,端口为2222。指定端口为3333是shopex集群下的另一个数据库服务器。

第二步: 既然上面说3333是另一个数据库服务器,不要急,现在就来开,这里把E盘的mongodb程序打开。

第三步: ok,看看上面的日志红色区域,似乎我们还没有做完,是的,log信息告诉我们要初始化一下“副本集“,既然日志这么说,那我也就

这么做,随便连接一下哪个服务器都行,不过一定要进入admin集合。

第四步: 开启成功后,我们要看看谁才能成为主数据库服务器,可以看到端口为2222的已经成为主数据库服务器。

第五步:我们知道sql server里面有一个叫做仲裁服务器,那么mongodb中也是有的,跟sql server一样,仲裁只参与投票选举,这里我们

把F盘的mongodb作为仲裁服务器,然后指定shopex集群中的任一个服务器端口,这里就指定2222。

然后我们在admin集合中使用rs.addArb()追加即可。

追加好了之后,我们使用rs.status()来查看下集群中的服务器状态,图中我们可以清楚的看到谁是主,还是从,还是仲裁。

不是说该集群有自动故障恢复吗?那么我们就可以来试一下,在2222端口的cmd服务器按Ctrl+C来KO掉该服务器,立马我们发现

在3333端口的从属服务器即可顶上,最后大家也可以再次使用rs.status()来看下集群中服务器的状态。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# mongodb  # 主从复制  # MongoDB的主从复制及副本集的replSet配置教程  # MongoDB在不同主机间复制数据库和集合的教程  # MongoDB的Master-Slave主从模式配置及主从复制要点解析  # MongoDB入门教程之主从复制配置详解  # MongoDB 主从复制实例讲解  # 详解mongoDB主从复制搭建详细过程  # MongoDB复制集原理详解  # Mongodb 副本集搭建问题总结及解决办法  # Mongodb副本集和分片示例详解  # MongoDB副本集丢失数据的测试实例教程  # MongoDB 复制(副本集)学习笔记  # 都有  # 图中  # 放在  # 也就  # 一台  # 我们可以  # 就来  # 双机  # 单点  # 第二步  # 数据库中  # 群中  # 第三步  # 实际应用  # 后期  # 第四步  # 一个叫做  # 没关系  # 这一  # 就会 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  微信小程序 require机制详解及实例代码  JavaScript如何实现路由_前端路由原理是什么  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何在建站之星网店版论坛获取技术支持?  如何用AWS免费套餐快速搭建高效网站?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  EditPlus中的正则表达式 实战(1)  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  利用python获取某年中每个月的第一天和最后一天  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  如何在香港服务器上快速搭建免备案网站?  高性价比服务器租赁——企业级配置与24小时运维服务  Laravel如何使用模型观察者?(Observer代码示例)  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  php485函数参数是什么意思_php485各参数详细说明【介绍】  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  大学网站设计制作软件有哪些,如何将网站制作成自己app?  历史网站制作软件,华为如何找回被删除的网站?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  浅谈javascript alert和confirm的美化  Windows Hello人脸识别突然无法使用  中国移动官方网站首页入口 中国移动官网网页登录  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何快速打造个性化非模板自助建站?  在Oracle关闭情况下如何修改spfile的参数  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  手机网站制作与建设方案,手机网站如何建设?  如何在IIS中新建站点并解决端口绑定冲突?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  python中快速进行多个字符替换的方法小结  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  智能起名网站制作软件有哪些,制作logo的软件?  如何快速搭建自助建站会员专属系统?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted