目录
一、常见场景
二、工作原理
2.1 关于oplog
2.2 心跳检测以及故障转移
三、管理
3.1 配置细节
3.2 故障转移与恢复
3.3 部署策略
首页 数据库 mysql教程 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(三

【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(三

Jun 07, 2016 pm 04:06 PM
mongo mongodb windows 平台 搭建 数据

关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客 第一篇: 如何在windows平台搭建Mongo数据库复制集 第二篇: 数据同步和故障自适应测试 在本篇里面,咱们重点总结一下复制集,以及分析一下它的工作原理 一、常见场景 应用程序和数

关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客

第一篇: 如何在windows平台搭建Mongo数据库复制集

第二篇: 数据同步和故障自适应测试

在本篇里面,咱们重点总结一下复制集,以及分析一下它的工作原理

一、常见场景

应用程序和数据库之间的网络连接丢失

计划停机、断电、数据库服务硬盘故障等等

复制可以进行故障转移,复制能让你在副本间均衡读负载,保证复制节点与主节点保持同步

二、工作原理

副本集依赖于两个基础机制:oplog和“心跳”(heartbeat).oplog让数据的复制成为可能,而“心跳”则监控健康情况并出发故障转移;

2.1 关于oplog

oplog是MongoDB复制的关键,oplog是一个固定集合,位于每个复制节点的local数据库中,记录了对数据库的所有变更,每次客户端向主节点写入数据,就会自动向主节点的oplog里添加爱一条记录,其中博客了足够的信息来再现数据。一旦写操作被复制到某个从节点上,从节点的oplog也会保存一条记录。

local数据库里保存了所有的副本集元数据和oplog,因为本身不能被复制;

\

那我们详细在看oplog

\

在此注意,每个从节点都有一份自己的oplog,从节点使用长轮询的方式立即应用来自主节点oplog的新条目。如果丛节点在主节点的oplog中找不到自己要同步的点,那么就永久停止复制。这是会在日志中有如下异常:

replcation data too stale, halting

caught syncException

调整oplog的大小,利用命令db.getReplicationInfo()可以查看分配了多少oplog空间,同时利用如下命令可以改变默认oplog大小

mongod.exe --replSet myapp --oplogSize 1024 
登录后复制

2.2 心跳检测以及故障转移

副本集的心跳检测有助于选举和故障转移。默认情况下,每个副本集成员每隔2s ping一次其他成员。这样一来系统就可以弄清自己的健康状况了。运行rs.status()也可以看到健康状态。

注意:在三个节点中,如果两个从节点都被杀掉了,在主节点的log会多如下一句话:

replSet can't see a majority of the set,

replSet Secondary

意思是没有多数节点,主节点就把自己降级为从节点;

三、管理

由于副本集存在许多潜在的复杂配置项,接下来我们详细介绍这些复杂配置项目;

3.1 配置细节

可以用rs.initiate()和rs.add()方法初始化副本集合。利用config.members.push({})增加节点;
\

其他的一些方法: \

3.2 故障转移与恢复

恢复是在故障后讲副本集还原到原始状态的过程。有两大类故障需要处理。第一类就是包含所有的无损故障,直接重启服务就好。第二种是明确故障,主要是数据文件损坏等等,非正常关闭mongodb服务,如果不更改主机名称和端口号则重新执行数据文件夹,启动后数据后同步过来。如果修改属性,则要用rs.reconfig();

3.3 部署策略

副本集最多包含12个节点,提供自动故障转移的最小副本集合配置就是先前例子中。包含两个副本和一个仲裁节点。在生产环境中,仲裁机节点可以运行在应用服务器上,而副本则运行在自己的机器上。对于多数环境而言,这样配置经济又高校

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

mongodb索引怎么排序 mongodb索引怎么排序 Apr 12, 2025 am 08:45 AM

排序索引是 MongoDB 索引的一种,允许按特定字段对集合中的文档排序。创建排序索引可以快速排序查询结果,无需额外的排序操作。优势包括快速排序、覆盖查询和按需排序。语法为 db.collection.createIndex({ field: <sort order> }),其中 <sort order> 为 1(升序)或 -1(降序)。还可以创建对多个字段进行排序的多字段排序索引。

mongodb命令怎么设置 mongodb命令怎么设置 Apr 12, 2025 am 09:24 AM

要设置MongoDB数据库,可以使用命令行(use和db.createCollection())或mongo Shell(mongo、use和db.createCollection())。其他设置选项包括查看数据库(show dbs)、查看集合(show collections)、删除数据库(db.dropDatabase())、删除集合(db.<collection_name>.drop())、插入文档(db.<collecti

mongodb没有事务怎么办 mongodb没有事务怎么办 Apr 12, 2025 am 08:57 AM

MongoDB缺乏事务机制,导致其无法保证数据库操作的原子性、一致性、隔离性和持久性。替代解决方案包括验证和锁定机制、分布式事务协调器以及事务引擎。选择替代解决方案时,应考虑其复杂性、性能和数据一致性要求。

MongoDB性能优化策略,提升数据读写速度 MongoDB性能优化策略,提升数据读写速度 Apr 12, 2025 am 06:42 AM

MongoDB性能优化可以通过以下几个方面实现:1.创建合适的索引,避免全表扫描,根据查询模式选择索引类型,定期分析查询日志;2.编写高效的查询语句,避免使用$where操作符,合理运用查询操作符,进行分页查询;3.合理设计数据模型,避免过大的文档,保持文档结构简洁一致,使用合适的字段类型,考虑数据分片;4.使用连接池复用数据库连接,减少连接开销;5.持续监控性能指标,例如查询时间和连接数,并根据监控数据不断调整优化策略,最终实现MongoDB的飞速读写。

mongodb命令行连接 mongodb命令行连接方法 mongodb命令行连接 mongodb命令行连接方法 Apr 12, 2025 am 07:00 AM

本文介绍了MongoDB命令行连接方法。1. 使用mongo命令连接本地实例;2. 使用--host和--port参数连接指定地址和端口的实例;3. 使用-u和-p参数进行用户名密码认证;4. 使用连接字符串mongodb://<username>:<password>@<hostname>:<port>/<database> 简化连接,但需注意密码安全。

mongodb怎么连接navicat mongodb怎么连接navicat Apr 12, 2025 am 09:09 AM

使用 Navicat 连接 MongoDB 的步骤:安装 Navicat 并创建 MongoDB 连接;在主机中输入服务器地址,端口中输入端口号,用户名和密码中输入 MongoDB 认证信息;测试连接并保存;Navicat 将连接到 MongoDB 服务器。

mongodb怎么设置用户 mongodb怎么设置用户 Apr 12, 2025 am 08:51 AM

要设置 MongoDB 用户,请按照以下步骤操作:1. 连接到服务器并创建管理员用户。2. 创建要授予用户访问权限的数据库。3. 使用 createUser 命令创建用户并指定其角色和数据库访问权限。4. 使用 getUsers 命令检查创建的用户。5. 可选地设置其他权限或授予用户对特定集合的权限。

mongodb怎么批量删除 mongodb怎么批量删除 Apr 12, 2025 am 09:27 AM

MongoDB 中批量删除文档可以使用以下方法:1. $in 操作符指定要删除的文档列表;2. 正则表达式匹配符合条件的文档;3. $exists 操作符删除具有指定字段的文档;4. find() 和 remove() 方法先获取再删除文档。请注意,这些操作无法使用事务,并可能删除所有匹配的文档,因此使用时需谨慎。

See all articles