MongoDB教程
MongoDB 简介
MongoDB 安装与配置
MongoDB 的基本概念
MongoDB 数据库与集合操作
MongoDB CRUD 操作详解
MongoDB 高级查询
MongoDB索引与性能优化
MongoDB 聚合框架详解
MongoDB 复制集与分片
MongoDB 备份与恢复
MongoDB 安全与用户管理
MongoDB 性能优化与最佳实践
MongoDB 常见问题排查
-
+
首页
MongoDB 复制集与分片
### **MongoDB 复制集** #### **概念** - **定义**:MongoDB 复制集是一种高可用性的架构,由多个 mongod 实例组成,包括一个主节点(Primary)和多个从节点(Secondary)。 - **作用**: - **数据冗余**:数据在主节点和从节点之间自动复制,确保数据的完整性和安全性。 - **高可用性**:当主节点发生故障时,从节点可以自动接管,继续提供服务,减少停机时间。 - **读扩展**:可以通过从节点分担读压力,提高数据库的读取性能。 #### **配置方法** 1. **安装 MongoDB**:确保所有节点上都正确安装了 MongoDB。 2. **创建配置文件**:为每个 mongod 实例创建配置文件,并设置复制集名称和端口号。 3. **启动主节点**: ```bash mongod --config /etc/mongod.conf --replSet myReplicaSet ``` 4. **启动从节点**: ```bash mongod --config /etc/mongod.conf --replSet myReplicaSet --port 27018 ``` 5. **初始化复制集**: 连接到主节点,运行以下命令: ```javascript rs.initiate({ _id: "myReplicaSet", members: [ { _id: 0, host: "mongodb0.example.net:27017" }, { _id: 1, host: "mongodb1.example.net:27018" }, { _id: 2, host: "mongodb2.example.net:27019" } ] }) ``` #### **故障转移机制** - 当主节点发生故障时,复制集中的从节点会选举新的主节点。 - 主节点崩溃后,可用的从节点会通过心跳机制检测到主节点的故障。 - 剩余的从节点会发起一次选举,选举过程中每个节点会投票给其他节点,得票最多的节点成为新的主节点。 - 新的主节点会继续提供服务,而原来的主节点恢复后会自动成为从节点。 --- ### **MongoDB 分片** #### **概念** - **定义**:MongoDB 分片是一种水平扩展的架构,将大的数据集分散到多个称为分片的片(shard)上。 - **作用**: - **水平扩展**:通过增加分片的数量,可以线性扩展数据库的存储容量和读写性能。 - **负载均衡**:数据和请求分布在多个分片上,平衡了系统的负载。 #### **分片策略** - **基于范围的分片**: - 使用键的范围来分配数据。例如,键值小于 1000 的文档存储在一个分片上,大于等于 1000 的存储在另一个分片上。 - **哈希分片**: - 使用哈希函数将键值映射到不同的分片上,确保数据的均匀分布。 - **基于标签的分片**: - 允许根据自定义的规则(如地理位置)将数据分配到特定的分片上。 #### **配置方法** 1. **启用分片功能**: 在 mongos 实例上运行以下命令: ```javascript sh.enableSharding("myDatabase") ``` 2. **分片集合**: 指定分片键并开始分片操作: ```javascript sh.shardCollection("myDatabase.myCollection", { "shardKey": 1 }) ``` 3. **将数据迁移到分片**: MongoDB 会自动将数据根据分片策略迁移到相应的分片上。 通过使用 MongoDB 的复制集和分片技术,可以实现数据的高可用性、冗余存储和水平扩展,从而满足大规模数据存储和处理的需求。
wwbang
2025年2月27日 16:41
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码