【MongoDB训练营】第六课:事务功能使用及原理介绍 答疑汇总

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【MongoDB训练营】第六课:事务功能使用及原理介绍 答疑汇总

1,复制集默认的事务是那种啊?之前主从arber的架构,从节点挂了后,有7-8小时都没有恢复,发现主节点也写不下去,停库也停不了,只能kill。这种情况应该怎么办
A:事务参数不填的话,readConcern默认是local,writeConcer默认是1,这样并不是保持acid的snapshot隔离,可以认为大致满足read recommited且不满足持久化,也就是说事务写的数据在ha切换后,会出现丢失
又问 “但是kill之后,再次起库的时候用了10个小时,发现之前的很多oplog 都没落盘,要回滚,这个是什么原因啊”
A;可能你的写是majority的写,因为arbiter不包含数据,所以写不进去。不建议使用arbiter,建议1个primary+ 2个secondary的架构,这样主库挂了,仍有2个节点有数据。
再问 ”但是kill之后,再次起库的时候用了10个小时,发现之前的很多oplog 都没落盘,要回滚,这个是什么原因啊“
A:majority的写,必须写到2个节点后,才能完成,所以数据都没写成功
最后 ”好的,生产还是有不少主从arbiter的架构,担心这个问题再次出现,应该怎么调整majority的写“
A:一定要用主从arbiter的架构的话,那你的写最好用w:1,也就异步同步数据,主库奔溃的话,刚写的数据可能会丢一点

2,MongoDB副本集模式下,如果复制其中一个 节点的DB目录文件到其他新的3台机器上,是否可以独立使用这3台新机器组建一个副本集,而且不需要这3台机器间再去同步数据呢,因为他们本来的数据都是一样的?
前面的时候问过这个问题,老师说的是把新搭建的节点加入原来的集群里面,我是不能加入原来的集群里,只能用拷贝的这个DB目录新建一个副本集,是否可以?
A: 可以的,要以单节点的方式启动新机器上的数据,然后重新初始化为一个新副本集,配置文件里的一些ip port目录等配置参数要同步改一下
又问:这样的话,新副本集里面的新增加的节点岂不是要从这个单节点上同步数据吗,如果数据量有几百G,不是要很久吗?
A:新副本集的第一个阶段初始化好后,你再拷贝这个新节点的数据到其它2个机器上,再组件副本集,
第一个阶段 = 第一个节点, 新副本集的第一个阶段初始化好后,你再拷贝这个新节点的数据到其它2个机器上,再组件副本集
再问:用从原来的老副本集里拷贝的DB目录数据文件去启动节点不行,是吗?为什么呢?
A:应该也可以,你三个节点都以standby启动,然后再组建副本集

3,老师,我现在如果扩容一个数据节点就是 4个节点副本集运行,过几天变更的时候再踢掉投票节点,4个节点运行会不会有问题啊
A: 4个节点不会有问题的,就是高可用的效果跟3个节点一样
又问:4个节点选举不会出现问题吧,一般不是奇数个节点吗
A: 不会有问题,偶数节点相当于一个节点的数据浪费了,所以一般是奇数节点

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2月前
|
存储 缓存 NoSQL
MongoDB内部的存储原理
这篇文章详细介绍了MongoDB的内部存储原理,包括存储引擎WiredTiger的架构、btree与b+tree的比较、cache机制、page结构、写操作流程、checkpoint和WAL日志,以及分布式存储的架构。
67 1
MongoDB内部的存储原理
|
5月前
|
存储 监控 NoSQL
MongoDB索引解析:工作原理、类型选择及优化策略
MongoDB索引解析:工作原理、类型选择及优化策略
|
6月前
|
Oracle NoSQL 关系型数据库
实时计算 Flink版产品使用合集之MongoDB CDC connector的全量快照功能可以并发读取吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
118 2
|
4月前
|
存储 NoSQL MongoDB
MongoDB 索引原理与索引优化
MongoDB 索引原理与索引优化
99 1
|
3月前
|
存储 NoSQL 数据管理
揭秘MongoDB时间序列集合:这个超级功能将如何彻底改变你的数据管理?
【8月更文挑战第8天】时间序列数据记录随时间变化的信息,在数据库管理中至关重要。MongoDB自4.0版起引入时间序列集合,专为这类数据优化存储与查询。通过问答形式介绍其特点:自动数据过期、高效存储机制及快速查询操作。创建时需指定时间字段及可选元数据字段。支持设置数据过期时间,采用粗粒度索引减少I/O操作。查询时可通过时间范围筛选数据,并利用聚合框架进行数据分析。随着实时分析需求的增长,时间序列集合的应用将更加广泛。
161 0
|
5月前
|
存储 JSON NoSQL
深入解析MongoDB的存储原理
深入解析MongoDB的存储原理
深入解析MongoDB的存储原理
|
5月前
|
存储 负载均衡 NoSQL
MongoDB的分片功能
【6月更文挑战第6天】MongoDB的分片功能
67 1
|
6月前
|
存储 NoSQL 关系型数据库
【MongoDB 专栏】MongoDB 的 ACID 事务支持
【5月更文挑战第11天】MongoDB,作为流行的非关系型数据库,逐步强化ACID事务支持,确保数据操作可靠性。事务包括原子性、一致性、隔离性和持久性四个特性。MongoDB通过多文档事务和锁机制实现ACID,适用于复杂操作、分布式协调和高一致性业务。然而,使用时注意性能影响、事务范围、错误处理及版本兼容性。随着技术进步,MongoDB将持续优化事务处理,应对更多复杂业务场景,为数据库领域带来创新与机遇。理解并恰当运用事务特性对构建高效应用至关重要。
122 0
【MongoDB 专栏】MongoDB 的 ACID 事务支持
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
19天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。

相关产品

  • 云数据库 MongoDB 版