将MongoDB非主要成员添加到成员本身的现有副本集

时间:2016-08-26 18:25:58

标签: mongodb amazon-web-services amazon-ec2 autoscaling

我们正在尝试设置一个与AWS EC2 Autoscaling组合的MongoDB副本集,这样当一台服务器关闭时,副本集可以在没有人为干扰的情况下自我修复。

每个实例都要通过引导脚本来完成。

以下是我们计划如何做到这一点: 1第一个实例启动副本集并将其自身设置为主副本 2每次将新实例添加到自动扩展组时,新实例将连接到现有副本集的一个成员,询问谁是主要实例 3新实例与primary建立连接,通过主

将自身添加到副本集

我的问题是,是否通过与主要可执行文件的连接向副本集添加新成员?

在当前的mongodb javascript脚本中,我可以通过以下方式建立与主要的连接: conn = new Mongo();

然后有rs.add()添加成员。

如何通过Mongo()连接调用rs.add()以在新成员本身上添加新成员?我仔细阅读了文档,找不到从Mongo()连接中检索rs对象的方法。

由于

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作。

确定哪个是主要的。

PRIMARY = /usr/bin/mongo ${IP}:27017 --eval "printjson(rs.isMaster())" | grep "primary" | cut -d"\"" -f4

连接到主节点以添加新节点。

R = /usr/bin/mongo ${PRIMARY}/admin --eval "printjson(rs.add('${NEW_NODE_IP}:27017'))"

注意:NEW_NODE_IP是新添加的EC2的IP。