我正在编写脚本来为python中的mongo设置替换。 脚本的第一部分启动进程,第二部分应配置replicaset。
从命令行我通常做:
config={_id:"aaa",members:[{_id:0,host:"localhost:27017"},{_id:1,host:"localhost:27018"},{_id:2,host:"localhost:27019",arbiterOnly:true}]}
rs.initiate(config)
rs.status();
然后我从rs.status()看起来所有成员都已初始化 我想在python脚本中做同样的事情。
一般来说,我正在寻找mongodb(也是分片)的设置脚本的一个很好的参考。我在他们的站点中看到了python脚本,这是一个很好的起点(但它只适用于replSet中的单个机器和sinle节点)。我需要在不同的机器上安装所有设备。
由于
答案 0 :(得分:3)
如果你运行rs.initiate
(没有(config)
),shell会告诉你它将运行哪个命令。在这种情况下,它将是:
function (c) {
return db._adminCommand({replSetInitiate:c});
}
在python中,这应该是这样的:
>>> from pymongo import Connection
>>> c = Connection("morton.local:27017", slave_okay=True)
>>> d.command( "replSetInitiate", c );
c
是您的replicaset配置。 http://api.mongodb.org/python/current/api/pymongo/database.html#pymongo.database.Database.command提供了有关调用命令的更多信息。
答案 1 :(得分:1)
谢谢Derick。以下是您的回答。 'replSetInitiate'是DBA命令。再次运行'admin'数据库。在这里:
conn = Connection("localhost:27017", slave_okay=True)
conn.admin.command( "replSetInitiate" );
答案 2 :(得分:0)
要在pymongo中获取rs.status的输出,我们可以像这样使用
def __init__(self):
'''Constructor'''
self.mdb=ReplicaSetConnection('localhost:27017',replicaSet='rs0')
def statusofcluster(self):
'''Check the status of Cluster and gives the output as true'''
print "We are Inside Status of Cluster"
output=self.mdb.admin.command('replSetGetStatus')