找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 8201|回复: 0

MongoDB副本集搭建与数据高可用配置

[复制链接]

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2026-8-11 18:29:42 | 显示全部楼层 |阅读模式
MongoDB 副本集搭建与数据高可用配置

MongoDB 副本集是一组维护相同数据集的 mongod 实例,提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤:

1. 准备工作

硬件/环境要求

  • 至少3个服务器节点(生产环境建议奇数个节点)
  • 确保节点间网络互通
  • 相同的 MongoDB 版本


节点规划示例
| 节点类型 | 主机名/IP | 端口 | 角色 |
|---------|----------|------|------|
| Primary | node1 | 27017 | 主节点 |
| Secondary | node2 | 27017 | 备节点 |
| Secondary/Arbiter | node3 | 27017 | 备节点或仲裁节点 |

2. 配置副本集

2.1 修改配置文件

在每个节点的
  1. mongod.conf
复制代码
文件中添加或修改以下配置:
  1. storage:
  2.   dbPath: /var/lib/mongodb
  3.   journal:
  4.     enabled: true
  5. systemLog:
  6.   destination: file
  7.   path: /var/log/mongodb/mongod.log
  8.   logAppend: true
  9. net:
  10.   port: 27017
  11.   bindIp: 0.0.0.0  # 或特定IP
  12. replication:
  13.   replSetName: rs0  # 副本集名称,所有节点需相同
复制代码

2.2 启动 MongoDB 实例
  1. # 在每个节点上启动 mongod
  2. sudo systemctl start mongod
  3. # 或
  4. mongod --config /etc/mongod.conf
复制代码

3. 初始化副本集

3.1 连接到主节点
  1. mongo --host node1 --port 27017
复制代码

3.2 初始化副本集
  1. rs.initiate({
  2.   _id: "rs0",
  3.   members: [
  4.     { _id: 0, host: "node1:27017" },
  5.     { _id: 1, host: "node2:27017" },
  6.     { _id: 2, host: "node3:27017" }
  7.   ]
  8. })
复制代码

3.3 验证副本集状态
  1. rs.status()
复制代码

4. 配置高可用性

4.1 读写关注配置
  1. // 设置写关注为"majority",确保大多数节点确认写入
  2. use admin
  3. db.runCommand({setParameter: 1, w: "majority"})
  4. // 或者在应用连接字符串中指定
  5. // mongodb://host1,host2,host3/?replicaSet=rs0&w=majority
复制代码

4.2 选举配置

  • 确保副本集有奇数个成员(3,5,7...)
  • 考虑使用仲裁节点(Arbiter)作为第3个节点(不存储数据,只参与选举)


4.3 优先级配置
  1. // 设置节点优先级(0-1000),优先级高的节点更可能成为主节点
  2. cfg = rs.conf()
  3. cfg.members[0].priority = 2  // 节点1优先级更高
  4. cfg.members[1].priority = 1
  5. cfg.members[2].priority = 1
  6. rs.reconfig(cfg)
复制代码

5. 监控与维护

5.1 常用管理命令
  1. // 查看副本集状态
  2. rs.status()
  3. // 手动触发选举
  4. rs.stepDown()
  5. // 查看副本集配置
  6. rs.conf()
  7. // 重新配置副本集
  8. var cfg = rs.conf()
  9. // 修改配置...
  10. rs.reconfig(cfg)
复制代码

5.2 监控指标

  • 复制延迟:
    1. rs.printSlaveReplicationInfo()
    复制代码
  • 选举状态
  • 心跳信息


6. 故障转移测试

  • 模拟主节点故障(停止主节点服务)
  • 观察副本集自动选举新主节点
  • 验证应用能否自动连接到新主节点


7. 最佳实践

  • 节点分布:将副本集成员分布在不同的物理机、机架或可用区
  • 磁盘配置:使用高性能SSD,确保足够的IOPS
  • 网络配置:低延迟、高带宽的网络连接
  • 备份策略:定期备份oplog和快照
  • 安全配置:启用认证和加密
  • 版本升级:滚动升级,保持版本一致


8. 仲裁节点(Arbiter)

如果资源有限,可以使用仲裁节点:

  • 不存储数据,只参与选举
  • 减少存储成本
  • 配置方法:在初始化时添加
    1. { _id: 2, host: "arbiter:27017", arbiterOnly: true }
    复制代码


通过以上配置,MongoDB 副本集能够提供自动故障转移、数据冗余和读取扩展能力,确保数据库的高可用性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五云论坛 ( 黔ICP备2022001370号-1|贵公网安备52032102000798号 )

GMT+8, 2026-9-12 18:10 , Processed in 0.071683 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表