我有3个服务器,A,B和C。
A是主要的。
我想在生产中进行现场扩展。我发出以下消息:
mongo A
rs.stepDown()
然后我去做
rs.status()
并且看到B现在处于PRIMARY状态,这是否意味着对A的所有未同步写入现在都已经传递给B,并且A可以关闭并按比例放大吗?
如果不是这样,那又是什么?是否有任何100%的决定因素可以安全地关闭以前的PRIMARY?]
谢谢,凯文
在副本集中,A,B和C应该相同且可以互换。
因此,如果您退出主要数据库,而另一个已接任主要数据库,则该集合作为一个整体应该是一致的,并且可以接受写入(with警告)>。
话虽这么说,推荐的垂直缩放方法是首先对所有次级进行缩放,最后对所有次级执行缩放。
Caveat
:如果选择了新的PRIMARY,则所有三个节点应包含相同的数据如果所有对集合的写入都使用多数写入问题。如果写入被主数据库确认,则很有可能会回退已确认的写入,并且您可以在写入尚未传播到任何辅助数据库的一小段时间中将其降级。有关详细说明,请参见Rollbacks During Replica Set Failover。主要对象是任何客户端通信(在这种情况下为写操作)的第一联系点。要考虑的一个因素是写关注点