MongoDB 更改流副本集限制
MongoDB change stream replica-set limitation
仅使更改流在副本集上可用背后的原因是什么?
Change streams 实现基于 oplog,它仅在副本集上可用。另一个原因是副本集包含独立节点功能的超集,并且是生产应用程序的推荐 MongoDB 部署。因此,基于推荐的生产部署拓扑实现变更流功能是有意义的。
另一个主要原因是更改流将输出不会在副本集设置中回滚的文档(请参阅Rollbacks During Replica Set Failover), so the use of majority read concern 是一项要求。
请注意,更改流在分片集群和单节点副本集(即只有一个成员的副本集,尽管通常不推荐这种设置)中也可用。
更改流的高级描述在 Change Streams page
中可用
SERVER-13932 中概述了更改流的设计。
我的环境是 Windows,以下步骤对我有帮助:
- 查找
"C:\Program Files\MongoDB\Server.2\bin\mongod.cfg"
将以下代码添加到您需要的 mongod.cfg
和选项中。更多信息:Mongo replication Options
replication:
replSetName: "rs0"
重启MongoDB进程:
Windows->Task Manager->Services->MongoDB [run restart]
运行 在控制台中 mongo 127.0.0.1:27017
- 然后运行
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>
仅使更改流在副本集上可用背后的原因是什么?
Change streams 实现基于 oplog,它仅在副本集上可用。另一个原因是副本集包含独立节点功能的超集,并且是生产应用程序的推荐 MongoDB 部署。因此,基于推荐的生产部署拓扑实现变更流功能是有意义的。
另一个主要原因是更改流将输出不会在副本集设置中回滚的文档(请参阅Rollbacks During Replica Set Failover), so the use of majority read concern 是一项要求。
请注意,更改流在分片集群和单节点副本集(即只有一个成员的副本集,尽管通常不推荐这种设置)中也可用。
更改流的高级描述在 Change Streams page
中可用SERVER-13932 中概述了更改流的设计。
我的环境是 Windows,以下步骤对我有帮助:
- 查找
"C:\Program Files\MongoDB\Server.2\bin\mongod.cfg"
将以下代码添加到您需要的
mongod.cfg
和选项中。更多信息:Mongo replication Optionsreplication: replSetName: "rs0"
重启MongoDB进程:
Windows->Task Manager->Services->MongoDB [run restart]
运行 在控制台中
mongo 127.0.0.1:27017
- 然后运行
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>