gpt4 book ai didi

python - 如何使用pymongo在已经初始化的副本集中添加一个新节点?

转载 作者:可可西里 更新时间:2023-11-01 09:33:37 27 4
gpt4 key购买 nike

我正在使用带有此代码示例的 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]+':27017'},
{'_id': 1, 'host': allIps[1]+':27017'},
{'_id': 2, 'host': allIps[2]+':27017'}]}
db.command("replSetInitiate",config)

现在,如果我的一个节点出现故障,并且我想再次使用 pymongo 在此复制集中添加一个新主机,但我无法这样做,因为这会给我一个复制集已经初始化的错误。我可以用 mongo shell 使用这个

rs.add( { host: "mongodbd4.example.net:27017" } )

但我想在 python 中做同样的事情,但在 pymongo 的文档中没有找到任何内容。

最佳答案

使用replSetReconfig复制命令。

The replSetReconfig command modifies the configuration of an existing replica set. You can use this command to add and remove members, and to alter the options set on existing members. Use the following syntax:

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)

关于python - 如何使用pymongo在已经初始化的副本集中添加一个新节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49384432/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com