通过从另一个'STARTUP2'成员那里获取部分数据来加快MongoDB的初始复制速度

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

我有一个由3个成员组成的MongoDB副本集:

  • member#1-缓慢的独立实例已转换为副本。状态:主要
  • member#2-新的超快速副本成员。状态:STARTUP2
  • member#3-新的快速副本成员。状态:STARTUP2

我在成员#1上启用复制并添加了成员​​#2和#3来配置数据后,开始缓慢地迁移(受成员#1的性能限制),然后迁移到新成员。

问题:看起来这两个新成员都仅从成员#1采购数据,而不是在寻找最佳的可用来源。是否可以将它们配置为在它们都仍处于“ STARTUP2”状态时查看每次可用的部分数据?

例如,成员2已经处理了30%的数据,而成员3可以将其用作部分来源(稍后再验证),而不是仅从成员1进行慢速采购。

谢谢

mongodb replication database-replication
1个回答
0
投票

我想我已经找到了解决方法:db.adminCommand( { replSetSyncFrom: "host:port" })

这将暂时覆盖当前mongod的默认同步目标。对于状态为[[STARTUP2的源,显然可以正常工作。

参考:https://docs.mongodb.com/manual/reference/command/replSetSyncFrom/

并且稍后它将自动恢复为默认行为:

mongod将在以下情况下恢复为默认的同步行为情况:

    mongod实例重新启动。
  • mongod与同步目标之间的连接关闭。
  • 如果同步目标下降超过30秒在副本集的另一个成员之后。
  • 尽管不知道为什么这不是默认行为(即使它只有部分数据,也要寻找最佳的可用源)。
  • © www.soinside.com 2019 - 2024. All rights reserved.