当前播放: 11 | 实验:搭建MongoDB复制集
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:MongoDB再入门 (12讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 认识文档数据库MongoDB
免费
04 | MongoDB特色及优势
免费
05 | 实验:安装MongoDB
免费
06 | MongoDB基本操作
07 | 实验:Hello World程序开发
08 | 聚合查询
09 | 实验:聚合查询
10 | 复制集机制及原理
11 | 实验:搭建MongoDB复制集
12 | MongoDB全家桶
第二章:从熟练到精通的开发之路 (12讲)
13 | 模型设计基础
14 | JSON文档模型设计特点
15 | 文档模型设计之一:基础设计
16 | 文档模型设计之二:工况细化
17 | 文档模型设计之三:模式套用
18 | 设计模式集锦
19 | 事务开发:写操作事务
20 | 事务开发:读操作事务之一
21 | 事务开发:读操作事务之二
22 | 事务开发:多文档事务
23 | Change Stream
24 | MongoDB开发最佳实践
11 | 实验:搭建MongoDB复制集

11 | 实验:搭建MongoDB复制集

唐建法(TJ)
Tapdata CTO、MongoDB中文社区主席、前MongoDB大中华区首席架构师
47讲 约500分钟3517
单独订阅¥129
2人成团¥99
1
本节摘要

下次更新时间为:12 月 4 日
课件和 Demo 地址
https://github.com/geektime-geekbang/geektime-mongodb-course

展开
登录 后留言

精选留言(18)

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

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

    2019-11-21
    1
  • 齐宝金
    老师您好:

    第一个问题:关于复制集这块的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
    1
    1
  • Oracleblog
    老师你好,请问下配置复制集的时候用IP+端口的方式可以吗?

    作者回复: 可以的 - 如果能用hostname最好

    2019-11-21
    1
  • Casper
    老师您好,我在搭建集群的过程中遇到一个问题。 如果我集群中的所有节点都设置了密码,在使用rs.add("host:port")时会报没有权限。此时我该如何解决呢?
    2019-12-28
  • Lee
    oplog 类似mysql row格式log mongo rs.printSlaveReplicationInfo()总能监控到几秒的延时, 读写分离的架构对于mongo如何使用呢
    2019-12-26
  • dream
    老师,请问一下,我按照你的操作是没有问题的。但是在复制集搭建成功后做如下操作,从节点却获取不到数据时怎么回事呀?

    主节点:
    mongo --port 28017
    use local
    db.test.insert({ a:1 })

    从节点:
    mongo --port 28018
    rs.slaveOk()
    use local

    此时在从节点使用 db.test.find() 却获取不到数据是怎么回事呢?复制集的状态是没有问题的。

    作者回复: 不能用local 库。那个是系统保留的。用任意其他库都可以。如 use test

    2019-12-22
  • cliff
    老板能不能加一节课说mongo s的配置
    2019-12-13
  • Ink Leaf
    老师,
    "Our set name did not match that of localhost

    "Our set name did not match that of ecs-s6-xlarge-2-linux-20191111183245:27019

    搭建时出现这种问题改怎样解决
    2019-12-13
  • 罗罗
    老师有讲解在window下如何搭建吗,如果有密码验证该如何做
    2019-12-06
  • stringbo
    老师您好:
          问题1:目前有个5节点的副本集,其中有一个主节点服务器假死,能PING通,除PING能通外任何命令都执行不了,因为能PING通,所以其他从节点认为主节点还存活,不能进行选举,但此时服务已经不可用了。想问下,通过什么方式可以强制触发选举?(注:在不能重启服务器的情况下)
         问题2:如果在从节点强制执行副本集reconfig,force:true,会引发副本集的全量同步吗?

    作者回复: 1: 这个是你假设的问题还是真实的问题? 节点之间用的是一个heartbeat,主节点如果还能响应heartbeat说明可能没有假死。触发选举的话可以考虑直接关掉主节点。

    2) reconfig 原则上不会触发全量同步,除非是加入新的节点

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

    作者回复: 这里面最关键的是内存大小。

    考虑为summary建一个covered index,然后保证你的索引能够装在内存里 (所有索引大小加起来要小于物理内存的一半那样)。

    如果你用分片的话,比如说4个分片,那每个分片只需要处理2.5亿(在2.5亿里寻找,4个分片同时进行),理论上肯定更快了。但是最终还是要看你总的内存的数量。

    2019-11-29
    1
  • cheriston
    老师,mongodb 有没有海量数据的备份脚本,求思路

    作者回复: 抱歉这个问题不清楚不知道如何回答。

    2019-11-25
  • 朱仁欢
    我发现linux下配置文件中复制集的名字要这么写:replSet=rs0. 不能写成:replSetName=rs0. 否则就报错:unrecognized option 'replSetName'

    作者回复: 可以提供下完整的配置文件吗

    2019-11-22
  • нáпの゛
    老师你好,
    之前试过用mysql 做读写分离,开了binlog做主从同步。遇到一种情况,主库写太频繁(load file操作,没有事务),从库同步延迟越来越大。
    oplog的原理是否也是记录成文件之后传输到从节点,由专门线程回放?
    mongodb是否也会出现这种问题?

    作者回复: oplog 和 binlog类似。并且在压力超大的时候,也有可能在从节点造成一些延迟。当然mongodb可以用多线程同时来会放

    2019-11-21
  • 一根想薅羊毛的韭菜
    老师的授课风格单刀直入,没有丝毫拖泥带水,操作部分经常需要反复观看,质量很高
    2019-11-21
  • 乘坐Tornado的线程魔法师
    github中md文(课件)件中的代码示例与视频中讲解的目录略微有出入:
    path那一行与dbPath那一行的路径需要修改成下方这样

    systemLog:
      destination: file
      path: /data/db1/mongod.log # 日志文件路径
      logAppend: true
    storage:
      dbPath: /data/db1 # 数据目录
    net:
      bindIp: 0.0.0.0
      port: 28019 # 端口
    replication:
      replSetName: rs0
    processManagement:
      fork: true
    2019-11-20
收起评论
看过的人还看
MySQL实战45讲

林晓斌  网名丁奇,前阿里资深技术专家

48讲 | 44098 人已学习

拼团 ¥79 原价 ¥99
Elasticsearch核心技术与实战

阮一鸣  eBay Pronto平台技术负责人

100讲 | 16921 人已学习

拼团 ¥99 原价 ¥129
设计模式之美

王争  前Google工程师,《数据结构与算法之美》专栏作者

100讲 | 18398 人已学习

拼团 ¥149 原价 ¥199
后端技术面试38讲

李智慧  同程艺龙交通首席架构师,前Intel&阿里架构师,《大型网站技术架构》作者

38讲 | 3776 人已学习

拼团 ¥79 原价 ¥99