MongoDB 平衡器

MongoDB 平衡器

所以我有 2 个分片集群,每个集群有 3 台服务器。我的 mongos 正在运行,我的配置服务器正在运行,我还向 2 个分片集群中的 1 个添加了测试数据。我无法将这些数据迁移到另一个集群...查看日志时,我看到 [Balancer] 没有可用的分片来获取块.... 和..... 分布式锁定“balancer/Replica4/27017:已解锁..... 两个集群上的 maxSize 均为 125,不确定我还应该查看什么来解决问题.. 有什么建议吗???

另外,在检查集合时,我注意到它创建了数据库,但所有数据库都被标记​​为(空)...在分片 2 上,所有数据都存在##分片 2 是加载数据的节点。

答案1

这里的基本答案是:不要使用maxSize由于值如此之低,因此它不是一个精确的设置。它依赖于mem.mapped值来确定大小,该值就是所有已发生的数据文件的大小mmap()调用它们。事实上,除非你对映射尺寸有了更好的了解,否则我建议将其完全关闭。

解释一下:数据库的数据文件大小从 64MB 开始,然后此后每次分配均翻倍默认情况下最大为 2GB。再加上 MongoDB 会在您将单个数据插入 64MB 数据文件后分配一个 128MB 文件(总共 192MB)(默认情况下,MongoDB 会预先分配一个空数据文件,以避免写入繁重的工作负载导致延迟)。然后,您很可能拥有多个数据库(例如本地数据库中的 oplog),并且您基本上已经确保在 125MB 限制下,您的所有分片几乎立即被视为“已满”。

删除 maxSize 选项,确定您的实际数据使用情况,然后添加一个合理的缓冲区(至少是一个空数据文件的大小)(如果您想在将来使用它),但请注意,如果您使用的空间比预期的多,您最终可能会回到相同的情况。

相关内容