[英]How to add a new node in mongo in an already initilized replicaset using pymongo?
我正在使用這個代碼示例使用pymongo創建一個replicaset:
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
復制命令。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.