簡體   English   中英

如何使用pymongo在已經啟動的復制集中添加mongo中的新節點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM