我自动化了一个节点添加到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,但更喜欢使用低音和贝壳使用的单线。
由于
答案 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