更改将新节点添加到MongoDB副本集时的流反应

问题描述 投票:0回答:1

我正在使用MongoDB 4.0作为3个节点副本集。 2个数据节点和1个仲裁器。我的应用程序(ASP.NET Core 2.2)使用更改流。考虑这种情况,我的主节点出现故障,我的辅助节点成为主要节点,我在副本集中用新节点替换了发生故障的节点,并开始进行同步。在这种情况下,我的变更流程会怎样?

[我的第二个问题是,在我的应用程序中,readPreferencesecondary,当我的辅助节点出现故障时,我希望MongoDB自动从primary中读取,但是没有发生,并且我的应用程序存在读取问题。正常吗?

mongodb mongodb-.net-driver replicaset changestream
1个回答
0
投票

变更流可以抵抗副本集选举,并且将继续进行,好像什么也没有发生。从changestream manual

更改流游标保持打开状态,直到发生以下情况之一:

  • 游标已明确关闭。
  • 发生无效事件;例如,收藏集放置或重命名。
  • 与MongoDB部署的连接已关闭。
  • 如果部署是分片群集,则分片删除可能会导致打开的更改流游标关闭,并且关闭的更改流游标可能无法完全恢复。

[所有其他事件,例如副本集选举将不会影响变更流。

对于您的第二个问题,这是可以预期的,因为您的读取首选项明确为secondary。要从初级读取,如果次级不可用,则要使用secondaryPreferred设置。

© www.soinside.com 2019 - 2024. All rights reserved.