0

我正在编写脚本以在 python 中为 mongo 设置 replaset。脚本的第一部分启动进程,第二部分应该配置副本集。

从命令行我通常这样做:

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 中的单机和单节点)。我需要在不同的机器上进行所有设置。

谢谢

4

3 回答 3

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您的副本集配置。http://api.mongodb.org/python/current/api/pymongo/database.html#pymongo.database.Database.command有更多关于调用命令的信息。

于 2012-04-23T12:24:00.957 回答
2

谢谢德里克。以下是对您的回答的一些评论。'replSetInitiate'是 DBA 命令。再次运行“管理员”数据库。就像这里:

conn = Connection("localhost:27017", slave_okay=True)
conn.admin.command( "replSetInitiate" );
于 2013-07-29T09:19:33.017 回答
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')
于 2014-04-23T04:56:17.083 回答