Mongodb
Mongo shell 3.2 在 sh.isBalancerRunning() 上的結果與 mongo shell 3.4 不同
我有一個 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 “報告”始終保持平衡的原因!