从命令行中绕过mongo shell将节点添加到rep集

时间:2012-11-08 03:51:51

标签: python mongodb

我自动化了一个节点添加到mongo复制集。

$ mongo IP.Of.Server.One
> rs.initiate();
> rs.add("IP.Of.Server.Two");
> rs.add("IP.Of.Server.Three");
> rs.status();

我有一个python脚本,当一个新节点启动时,我会通过使用paramiko将ssh添加到现有节点中,将该ip地址添加到集合中已存在的节点。

如何从命令行自动化而不必进入mongo shell。我可以使用pexpect,但更喜欢使用低音和贝壳使用的单线。

由于

1 个答案:

答案 0 :(得分:2)

您可以使用--eval命令行选项将rs.add() JavaScript命令传递到副本集上的主要命令。如果你将rs.add()调用包装在printjson()中,你也会得到一个结果回显给你的Python脚本可以解析的stdout。

因此假设主要为node1.replset,您可以添加新节点node4.replset

mongo --eval "printjson(rs.add('node4.replset:27017'))" node1.replset:27017