MongoDB更改流副本集限制

Dan*_*l F 9 mongodb replicaset changestream

仅在副本集上提供更改流的原因是什么?

kev*_*adi 17

更改流实现基于oplog,该oplog仅在副本集上可用.另一个原因是副本集包含独立节点功能的超集,并且是生产应用程序的推荐MongoDB部署.因此,基于推荐的生产部署拓扑实现更改流功能是有意义的.

另一个主要原因是更改流将输出不会在副本集设置中回滚的文档(请参阅副本集故障转移期间的回滚),因此需要使用多数读取关注.

请注意,更改流也可用于分片群集,也可用于单节点副本集(即只有一个成员的副本集,但通常不建议使用此设置).

" 更改流"页面中提供了更改流的高级描述

SERVER-13932概述了变更流的设计.

  • 只需评论一下:当我建立一个没有复制的20 MB小型数据库时,要保存一些有关天气传感器等的最新数据,我需要创建一个副本集,该副本集基本上迫使我创建不必要的1GB oplog,以便能够订阅变更流:( (2认同)

Rom*_*man 8

我的环境是 Windows,以下步骤对我有帮助:

  1. "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg"
  2. 将以下代码添加到mongod.cfg您需要的和选项中。更多信息:Mongo 复制选项

    replication:
     replSetName: "rs0"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重启MongoDB进程:

    Windows->Task Manager->Services->MongoDB [run restart]
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在控制台中运行 mongo 127.0.0.1:27017

  5. 然后运行 rs.initiate()

因此,您很幸运拥有以下内容:

> rs.initiate()                                                                               

        "info2" : "no configuration specified. Using a default configuration for the set",    
        "me" : "127.0.0.1:27017",                                                             
        "ok" : 1,                                                                             
        "$clusterTime" : {                                                                    
                "clusterTime" : Timestamp(1584218777, 1),                                     
                "signature" : {                                                               
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),                   
                        "keyId" : NumberLong(0)                                               
                }                                                                             
        },                                                                                    
        "operationTime" : Timestamp(1584218777, 1)                                            
}                                                                                             
rs0:SECONDARY>                                                                                
Run Code Online (Sandbox Code Playgroud)

  • macOS 版本:配置文件位于:`/usr/local/etc/mongod.conf` 重新启动 MongoDB:`brew services restart mongodb-community` (2认同)