MongoDB 高手课
唐建法(TJ)
Tapdata CTO、MongoDB 中文社区主席、前 MongoDB 大中华区首席架构师
19351 人已学习
新⼈⾸单¥59
课程目录
已完结/共 53 讲
MongoDB 高手课
登录|注册
留言
34
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 11 | 实验:搭建MongoDB复制集
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 认识文档数据库MongoDB
04 | MongoDB特色及优势
05 | 实验:安装MongoDB
06 | MongoDB基本操作
07 | 实验:Hello World程序开发
08 | 聚合查询
09 | 实验:聚合查询
10 | 复制集机制及原理
11 | 实验:搭建MongoDB复制集
12 | MongoDB全家桶
13 | 模型设计基础
14 | JSON文档模型设计特点
15 | 文档模型设计之一:基础设计
16 | 文档模型设计之二:工况细化
17 | 文档模型设计之三:模式套用
18 | 设计模式集锦
19 | 事务开发:写操作事务
20 | 事务开发:读操作事务之一
21 | 事务开发:读操作事务之二
22 | 事务开发:多文档事务
23 | Change Stream
24 | MongoDB开发最佳实践
25 | 分片集群机制及原理
26 | 分片集群设计
27 | 实验:分片集群搭建及扩容
28 | MongoDB监控最佳实践
29 | MongoDB备份与恢复
30 | 备份与恢复操作
31 | MongoDB安全架构
32 | MongoDB安全加固实践
33 | MongoDB索引机制(一)
34 | MongoDB索引机制(二)
35 | MongoDB读写性能机制
36 | 性能诊断工具
37 | 高级集群设计:两地三中心
38 | 实验:搭建两地三中心集群
39 | 高级集群设计:全球多写
40 | MongoDB上线及升级
41 | MongoDB应用场景及选型
42 | MongoDB典型案例(一)
43 | MongoDB典型案例(二)
44 | 关系型数据库迁移
45 | 数据库迁移方式及工具
46 | Oracle迁移实战
47 | MongoDB + Spark实时大数据
48 | MongoDB + Spark连接实战
49 | MongoDB SQL套接件
50 | MongoDB与微服务
51 | MongoDB与数据中台
52 | MongoDB数据中台案例
53 | 结果测试&结束语
登录 后留言

全部留言(34)

  • 最新
  • 精选
cording
老师,请教一下采用多副本集后,主节点写,其他复制集读,但有时候主会切换成其他副节点,导致访问mongodb的端口变化,调用程序无法连接上之前主节点进行写入操作,前端调用程序该如何处理?

作者回复: “但有时候主会切换成其他副节点” 你是在同一台服务器上起了几个不同端口的实例?这样的复制集/副本集是没有意义的。 这种场景是常见的,在mongo世界里。你的连接串要同时包含3个节点的IP:PORT,这样在切主的时候mongo的驱动会自动连到下一个主节点,你的应用程序无需处理。

2020-06-18
2
5
公众号:程序员大兵
后续还有复制集集群的调优讲解吗

作者回复: 后续的事务性方面还会涉及到复制集。已定目录更新完后也会考虑根据用户的反馈追加一些内容。

2019-11-21
3
Lee
oplog 类似mysql row格式log mongo rs.printSlaveReplicationInfo()总能监控到几秒的延时, 读写分离的架构对于mongo如何使用呢

作者回复: 那个命令可能不是太合适,用来做精确判断。考虑用个脚本,来做比较准确的判断会好一点,基于change stream或者oplog。

2019-12-26
2
公众号:程序员大兵
macos 下 rs.initiate() 执行报错,是不是macos下必须传默认配置 { "operationTime" : Timestamp(0, 0), "ok" : 0, "errmsg" : "No host described in new configuration 1 for replica set lbbniu maps to this node", "code" : 93, "codeName" : "InvalidReplicaSetConfig", "$clusterTime" : { "clusterTime" : Timestamp(0, 0), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }

作者回复: 这个通常和你的hostname是否可以被解析相关。 试试下面这个: rs.initiate({ _id: "rs0", members: [{ _id: 0, host: "localhost:28017" }] })

2019-11-29
4
2
齐宝金
老师您好: 第一个问题:关于复制集这块的secondary是怎么从主库来来取oplog的,实现的细节是什么?想了解这块的出发点就是作为dba的话,会经常遇到一些生产问题,需要从原理上解决问题? 第二个问题:在local下,有几个关于副本集的集合,这几个集合是干什么用的,排查问题的时候,这几个表有什么作用? 第三个问题: 我有一个副本集,现在对一个secondary进行了物理的热备,之后,想把这个节点加入现有集群,是只需要配置参数文件,add加入副本集就可以吗?如果可以加入副本集的话,他是通过哪个集合来判断从哪个时间点开始来取oplog的?

作者回复: 第一个问题你可以先看下这篇博客: https://www.cnblogs.com/Joans/p/7723554.html 如果进一步了解的话,源码也可以尝试阅读下 第二个问题也在上面的文章里有提及 第三个问题:可以的,但是要通过对local库下面的一些表做个手脚。如果你用MongoDB的Ops Manager的话,它就提供这种方法来快速恢复一个从节点。 https://docs.opsmanager.mongodb.com/v1.4/tutorial/use-restore-to-seed-secondary/ 其中关键的集合是system.replset 以及oplog.rs。 system.replset必须包含对应的配置(和其他节点一致)和时间戳。oplog.rs必须包含至少一条和主节点oplog一样的记录用来匹配同步点。

2019-11-21
2
2
cording
老师,我们的生产环境只有一台服务器,但有2个硬盘。做一主一从副本集,有意义吗?

作者回复: 意义不是很大,你crash了一个进程,另一个进程也是没法正常服务(需要3个节点才可以有HA)。硬盘的容错直接用RAID就可以。

2020-08-14
1
竹真
老师,您好,我有两个问题。1从节点是主动监听主节点的op log并拉取吗? mongo 选举的时候,怎么知道集群中一共有多少节点?还有就是自己是和大多数节点互通的?

作者回复: 1: 是的。 2: 配置。开始搭建集群时候就要配置一下(或者通过add方法增加节点)

2020-04-10
1
Liam
老师你好,复制集和分片机制有什么区别?我们可以对数据分片到不同机器上的同时保留复制集吗?部署配置方式有区别吗

作者回复: 复制集提供高可用,分片集在此基础上横向扩充,增加系统对数据量/并发量的支持。分片集由2个或多个复制集组成。

2020-02-13
1
满怀
老师 我之前按照您的方法搭建了复制集 但是过了一星期后 期间没有启动复制集 发现主复制集从28017变成了28018,并且原先三个复制集中数据都是同步端 现在只有主复制集28018中含有数据 调用rs.statu()依然能看到另外两个复制集 但是另外两个中的数据消失了 这是怎么回事呢 我后来通过rs.remove方法删除掉了那两个空复制集 然后又rs.add将其加上 复制集中又有数据了

作者回复: 你要把具体操作的步骤和输出贴出来,我才能诊断。听上去比较奇怪,切主节点正常的,但是数据应该在的

2019-12-25
1
qbit
如果要在 10 亿数据中查找摘要包含 MongoDB 的记录,{summary:/MongoDB/},要求 1000 毫秒内返回结果,应该怎么玩?一定要单机配置很好的集群吗?单机配置一般,个数可以无限增加可以玩吗?分片是为了解决这类问题吗?

作者回复: 这里面最关键的是内存大小。 考虑为summary建一个covered index,然后保证你的索引能够装在内存里 (所有索引大小加起来要小于物理内存的一半那样)。 如果你用分片的话,比如说4个分片,那每个分片只需要处理2.5亿(在2.5亿里寻找,4个分片同时进行),理论上肯定更快了。但是最终还是要看你总的内存的数量。

2019-11-29
2
1
收起评论