• LbbNiu
    2019-11-21
    后续还有复制集集群的调优讲解吗

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

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

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

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

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

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

    第一个问题:关于复制集这块的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一样的记录用来匹配同步点。

     1
     1
  • Oracleblog
    2019-11-21
    老师你好,请问下配置复制集的时候用IP+端口的方式可以吗?

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

    
     1
  • Casper
    2019-12-28
    老师您好,我在搭建集群的过程中遇到一个问题。 如果我集群中的所有节点都设置了密码,在使用rs.add("host:port")时会报没有权限。此时我该如何解决呢?

    作者回复: 可能的问题:
    1. 没有为各个节点配置KeyFile,或者
    2. 启用认证之后没有创建管理员账户。rs.add()需要权限才能执行。

    
    
  • dream
    2019-12-22
    老师,请问一下,我按照你的操作是没有问题的。但是在复制集搭建成功后做如下操作,从节点却获取不到数据时怎么回事呀?

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

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

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

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

    
    
  • cliff
    2019-12-13
    老板能不能加一节课说mongo s的配置

    作者回复: 先记录下来了,谢谢反馈

    
    
  • Ink Leaf
    2019-12-13
    老师,
    "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-06
    老师有讲解在window下如何搭建吗,如果有密码验证该如何做

    作者回复: Windows下搭建的命令在材料里面都已经给出。

    密码验证已经在第三章安全加固那一节里讲述。

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

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

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

     1
    
  • LbbNiu
    2019-11-29
    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"
        }]
    })

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

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

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

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

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

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

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

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

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

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

    
    
  • 一根想薅羊毛的韭菜
    2019-11-21
    老师的授课风格单刀直入,没有丝毫拖泥带水,操作部分经常需要反复观看,质量很高
    
    
  • 乘坐Tornado的线程魔...
    2019-11-20
    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
    展开
    
    
我们在线,来聊聊吧