【问题标题】:Does mongodb read from a secondary member of a replica set when using 'movechunk' to balance a shard cluster?使用“movechunk”平衡分片集群时,mongodb 是否从副本集的辅助成员读取?
【发布时间】:2013-09-19 15:16:38
【问题描述】:

使用“movechunk”命令(因此当平衡器运行时),读取和锁定是否发生在副本集的主要或次要成员上?

我们的应用程序当前没有从辅助节点读取,所以如果 shard balancer / movechunk 命令从次要成员读取并仅锁定辅助成员而不影响主要成员的性能会很好。

【问题讨论】:

    标签: mongodb replication sharding migrate chunks


    【解决方案1】:

    分片平衡器必须在迁移期间读取分片的主要成员并对其执行写入操作。这对于跨分片保持一致的数据状态是必要的。但是,迁移期间读写期间发生的锁定与对系统的正常读写期间发生的锁定没有什么不同。因此,这些应该不会对性能产生重大影响。

    如果您确实发现迁移导致性能明显下降,这可能表明您的集群存在其他问题。例如,如果您选择了一个不太理想的分片键,这可能会导致非常频繁的迁移,这会对您的系统造成负担。或者,如果您的系统已经在接近容量的非常重的负载下运行,则迁移可能只会增加足够的额外工作量,从而显着降低性能。

    【讨论】:

    • 这是有道理的。我什至还没有测试分片集群的性能——现在,迁移/平衡被用于将我们巨大/单片的单个 mongo 服务器转移到其他分片上,此时我将耗尽并删除单个 mongo集群中的服务器。正是这种初始平衡需要一段时间,但是该服务器已经承受着很大的压力,所以我想知道将它转换为副本集是否有助于提高性能。其他分片已经是副本集。
    • 您使用的是哪个版本的 MongoDB?您可以尝试降低这种大规模迁移的影响的一件事是,在平衡器可以继续之前,要求与迁移相关的写入传播到新分片上的辅助节点(请参阅_secondaryThrottle)这将减慢迁移速度,减少给你的服务器带来压力。如果您使用的是 MongoDB v. 2.4 或更高版本,则默认启用此选项,因此您可能已经在使用它。
    • 锁其实是不一样的,MongoDB会在两个shard之间使用分布式事务锁来保证chunk迁移的隔离性、一致性和持久性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多