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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 Tair(兼容Redis),内存型 2GB
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
目录
相关文章
|
3月前
|
存储 缓存 NoSQL
MongoDB内部的存储原理
这篇文章详细介绍了MongoDB的内部存储原理,包括存储引擎WiredTiger的架构、btree与b+tree的比较、cache机制、page结构、写操作流程、checkpoint和WAL日志,以及分布式存储的架构。
125 1
MongoDB内部的存储原理
|
8天前
|
NoSQL 关系型数据库 Shell
Mongodb支持事务吗?
MongoDB 是一个非关系型数据库,最初不支持事务。4.0版本引入了多文档事务支持,确保跨多个文档的操作要么全部成功,要么全部失败回滚,保持数据一致性。从4.2版本起,分布式事务和多文档事务成为同义词,支持分片集群和副本集上的多文档操作。配置事务需开启副本集,并通过会话管理事务的提交与回滚。示例展示了如何在MongoDB Shell中使用事务进行多文档操作。
36 11
|
6月前
|
存储 监控 NoSQL
MongoDB索引解析:工作原理、类型选择及优化策略
MongoDB索引解析:工作原理、类型选择及优化策略
|
7月前
|
Oracle NoSQL 关系型数据库
实时计算 Flink版产品使用合集之MongoDB CDC connector的全量快照功能可以并发读取吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
130 2
|
5月前
|
存储 NoSQL MongoDB
MongoDB 索引原理与索引优化
MongoDB 索引原理与索引优化
123 1
|
4月前
|
存储 NoSQL 数据管理
揭秘MongoDB时间序列集合:这个超级功能将如何彻底改变你的数据管理?
【8月更文挑战第8天】时间序列数据记录随时间变化的信息,在数据库管理中至关重要。MongoDB自4.0版起引入时间序列集合,专为这类数据优化存储与查询。通过问答形式介绍其特点:自动数据过期、高效存储机制及快速查询操作。创建时需指定时间字段及可选元数据字段。支持设置数据过期时间,采用粗粒度索引减少I/O操作。查询时可通过时间范围筛选数据,并利用聚合框架进行数据分析。随着实时分析需求的增长,时间序列集合的应用将更加广泛。
199 0
|
6月前
|
存储 JSON NoSQL
深入解析MongoDB的存储原理
深入解析MongoDB的存储原理
深入解析MongoDB的存储原理
|
6月前
|
存储 负载均衡 NoSQL
MongoDB的分片功能
【6月更文挑战第6天】MongoDB的分片功能
77 1
|
8天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
39 15
|
16天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板

相关产品

  • 云数据库 MongoDB 版