针对MongoDB中的副本集运行脚本

Jan*_*yka 12 mongodb

我有3个节点的副本集,我想每天结束时对它运行一个清理脚本.如果只有一个节点,我会做的是一个简单的bash脚本:

~/mongo/bin/mongo host:port cleanupScript.js
Run Code Online (Sandbox Code Playgroud)

但是因为我想对副本集运行相同的脚本,所以我不能使用这种方法.我需要以某种方式找到哪个节点是主节点并针对该节点运行脚本.

所以问题是:有没有办法如何针对整个副本集运行脚本,让mongo流程选择主节点并在其上执行?

谢谢!

Asy*_*sky 14

mongo shell可以直接连接到副本集 - 这适用于2.4(当前),2.2(前一个)和2.0(之前的版本).

假设您有一个被调用的副本集,myrs而您的主机是,host1:27017host2:27017使用以下语法:

mongo --host myrs/host1:27017,host2:27017

shell会找出其余部分,包括连接到主要部分,如果主要步骤向下或离开,它将在选择后重新连接到新的主要部分.