询问MongoDB是否是一个bashscript中的Master

and*_*dre 11 bash ubuntu mongodb

我的mongodb应该每天运行备份.它与一个主设备和两个从设备一起运行.

我需要备份其中一个(因为它们只是复制品)

最简单的方法是仅在一个实例上运行备份脚本.但如果这个实例失败怎么办?所以我认为在主服务器上运行备份文件会很好,因为总有一个主服务器,即使其中一个服务器已关闭.

所以我需要在cron.daily中调整我的备份文件,询问mongodb是否是当前的主人.

我怎么做?

Der*_*ick 19

您可以使用该--eval选项mongo来执行此操作:

MASTER=`mongo --quiet --eval "d=db.isMaster(); print( d['ismaster'] );"`
Run Code Online (Sandbox Code Playgroud)

然后测试是否MASTER == "true"在你的shell脚本中.

  • +1我用过`mongo --quiet --eval'db.isMaster().ismaster' (5认同)