Mongodb

Mongo shell 3.2 在 sh.isBalancerRunning() 上的結果與 mongo shell 3.4 不同

  • October 6, 2017

我有一個 mongo 分片集群和一個 mongos 實例。這些伺服器在 MongoDB 3.4.0 上執行。當我使用 mongo shell 3.4.0 連接到 mongos 時,我得到以下輸出sh.isBalancerRunning()

mongos> sh.isBalancerRunning()
false

但是當我使用 mongo shell 3.2.13 時,我得到了不同的結果:

mongos> sh.isBalancerRunning()
true

這是mongo版本之間不兼容的東西嗎?如果是,為什麼其他命令可以正常工作,而這個命令不能?

不同之處在於 3.4 平衡工作由 config server primary 完成,而在 3.2 它由 mongos 服務之一完成。

為了防止“較舊的”(<3.4)mongos 服務開始平衡工作,配置伺服器(>=3.4)使“鎖定”文件到本地集合,“聲明”其中一個 mongos 服務設置了“平衡鎖”。

該文件不會阻止 (>=3.4) 配置伺服器進行平衡。這就是為什麼較老的 mongos “報告”始終保持平衡的原因!

引用自:https://dba.stackexchange.com/questions/187811