python定义副本集配置

时间:2012-04-23 10:00:17

标签: python mongodb

我正在编写脚本来为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节点)。我需要在不同的机器上安装所有设备。

由于

3 个答案:

答案 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')