Mongodb

使用 JS 根據主機名更新 mongo 的優先級

  • July 17, 2021

有沒有辦法根據主機名而不是順序來調整節點的優先級。

使用序列 -

cfg=rs.conf()
cfg.members[0].priority=100 
cfg.members[1].priority=10
cfg.members[2].priority=10
cfg.members[3].priority=0
cfg.members[4].priority=0
rs.reconfig(cfg)

我需要的是類似的東西,

cfg=rs.conf()
cfg.members[where name like 'abc'].priority=100 
cfg.members[where name like 'pqr'].priority=10
cfg.members[where name like 'xyz'].priority=10
cfg.members[where name like '10.12.13.14'].priority=0
cfg.members[where name like '10.12.13.14'].priority=0
rs.reconfig(cfg)

使用序列更新大量不同集群的副本集將是困難的。

主機名的順序不是按順序排列的。因此,如果我需要在維護期間更新具有最高優先級的特定主機,我不能依賴順序。可能使用java腳本很容易。

是的,您可以使用這樣的 Javascript:

cfg = rs.conf()
cfg.members.forEach(function(member) {
  if (member.host.includes("abc"))
     member.priority = 100
  else if (/xyz/.test(member.host))
     member.priority = 10
  else if (member.host == '10.12.13.14')
     member.priority = 0;
})
rs.reconfig(cfg)

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