You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyMongo在已初始化的MongoDB副本集中添加新节点

用PyMongo给MongoDB副本集添加新节点(故障节点替换/新增)

嘿,刚好有过类似的操作经验,我来给你一步步讲清楚怎么用PyMongo给你的MongoDB副本集添加新节点,尤其是在原有节点故障之后的场景:

前提准备

在动手添加之前,先确保新节点满足这些条件:

  • 新节点上的MongoDB已经安装配置好,配置文件里的replSet参数必须和你的副本集名称一致(也就是你初始化时的Harmony-demo),然后重启MongoDB服务。
  • 新节点和副本集里的其他可用节点网络互通,27017端口能正常访问。
  • 新节点的MongoDB认证配置和主节点一致(你的场景里开启了认证),确保能通过相同的账号密码访问。

具体操作步骤

1. 连接到副本集的主节点

副本集的配置修改只能在主节点上执行,所以首先要确保你连接的是主节点。你可以直接连接副本集的多个可用节点,PyMongo会自动路由到主节点:

from pymongo import MongoClient

# 替换成你现有可用节点的IP列表,比如剩下的正常节点IP
available_ips = ["192.168.1.10", "192.168.1.11"]
client = MongoClient(
    [f"{ip}:27017" for ip in available_ips],
    username='mongo-admin',
    password='${mongo_password}',
    authSource='admin',
    replicaSet='Harmony-demo'  # 必须指定副本集名称,否则客户端不会识别为副本集连接
)

# 验证是否连接到了主节点
db = client.admin
master_status = db.command("ismaster")
if master_status["ismaster"]:
    print("成功连接到主节点,可以开始操作")
else:
    print("当前连接的不是主节点,请检查可用节点列表,确保包含主节点")

2. (可选)移除故障节点

如果故障节点还在副本集的配置里(状态显示为DOWN),你可以先把它移除,避免影响副本集的投票和状态:

# 替换成故障节点的host,比如原来的故障节点IP是192.168.1.12:27017
remove_result = db.command("replSetRemove", "192.168.1.12:27017")
print("移除故障节点结果:", remove_result)

3. 添加新节点

准备新节点的配置,注意_id必须是副本集里未使用过的数值,然后执行添加命令:

# 新节点的配置,_id选一个没被用过的(之前你用了0,1,2,这里用3)
new_node_config = {
    "_id": 3,
    "host": "新节点IP:27017",
    # 可选:如果需要设置节点优先级、投票权等,可以加上这些参数
    # "priority": 1,  # 优先级越高,越容易被选为主节点,默认1
    # "votes": 1      # 投票权,默认1,最多和成员数一致
}

# 执行添加命令
add_result = db.command("replSetAdd", new_node_config)
print("添加新节点成功,结果:", add_result)

4. 验证添加结果

添加完成后,你可以查看副本集的状态,确认新节点是否正常加入并开始同步数据:

repl_status = db.command("replSetGetStatus")
# 遍历所有成员,查看新节点的状态
for member in repl_status["members"]:
    print(f"节点ID: {member['_id']}, 地址: {member['name']}, 状态: {member['stateStr']}")

一些注意事项

  • 新节点加入后会自动开始同步主节点的数据,这个过程的快慢取决于数据量大小,耐心等待即可。
  • 如果你的副本集开启了认证,新节点的MongoDB必须配置相同的认证机制,并且主节点上的管理员账号要能访问新节点。
  • 不要随意修改现有节点的_id,每个节点的_id在副本集生命周期内是唯一且固定的。

内容的提问来源于stack exchange,提问作者the_Strider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:02:46