0

我正在自动将节点添加到 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,但更喜欢使用贝斯和贝壳的单衬里。

谢谢

4

1 回答 1

2

您可以使用--eval命令行选项将rs.add()JavaScript 命令传递给副本集上的主节点。如果您将rs.add()调用包装在其中,printjson()您还将得到一个结果回显到您的 Python 脚本可以解析的标准输出。

因此,假设您的主要成员node1.replset可以添加一个新节点node4.replset

mongo --eval "printjson(rs.add('node4.replset:27017'))" node1.replset:27017
于 2012-11-08T05:25:40.747 回答