Python 如何使用pymongo在已经初始化的replicaset中添加mongo中的新节点?
我正在使用pymongo创建一个复制集,代码示例如下:Python 如何使用pymongo在已经初始化的replicaset中添加mongo中的新节点?,python,mongodb,amazon-web-services,mongodb-query,pymongo,Python,Mongodb,Amazon Web Services,Mongodb Query,Pymongo,我正在使用pymongo创建一个复制集,代码示例如下: client = MongoClient(allIps[0]+':27017',username='mongo-admin', password='${mongo_password}', authSource='admin') db=client.admin config = {'_id': 'Harmony-demo', 'members': [ {'_id': 0, 'host': allIps[0]+'
client = MongoClient(allIps[0]+':27017',username='mongo-admin', password='${mongo_password}', authSource='admin')
db=client.admin
config = {'_id': 'Harmony-demo', 'members': [
{'_id': 0, 'host': allIps[0]+':27017'},
{'_id': 1, 'host': allIps[1]+':27017'},
{'_id': 2, 'host': allIps[2]+':27017'}]}
db.command("replSetInitiate",config)
现在在将来,如果我的一个节点发生故障,我想使用pymongo再次在此replicaset中添加一个新主机,但我无法这样做,因为这会给我一个replicaset已经初始化的错误。我可以用mongo shell用这个
rs.add( { host: "mongodbd4.example.net:27017" } )
但是我想在python中也这样做,并且在pymongo的文档中没有找到任何内容。使用复制命令
replSetReconfig命令修改现有副本集的配置。您可以使用此命令添加和删除成员,以及更改在现有成员上设置的选项。使用以下语法:
result = db.command('replSetGetConfig')
config = result['config']
max_member_id = max(member['_id'] for member in config['members'])
config['members'].append(
{'_id': max_member_id + 1, 'host': 'mongodbd4.example.net:27017'}
)
config['version'] += 1 # update config version
db.command('replSetReconfig', config)