-
MongoDB复制集是Mongodb提供的一种高可用和数据冗余的解决方案,复制集由多个MongoDB服务器组成,其中一个服务器作为主节点(Primary),处理所有写操作,而其他服务器作为从节点(Secondary)同步主节点的数据。
-
如果主节点不可用,复制集将紫东阁进行选举,提升一个从节点为新的主节点,确保服务器的连续性和数据的一致性。
-
MongdoDB复制集的基本原理:
- Primary节点将数据修改操作记录到本地的oplog(操作日志,在local库下)中,Seconday节点定期到Primary节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证Seconday与Primary数据一致。
-
-
三类节点:
-
1.主节点(Primary)
- 主节点是复制集中的领导者,负责处理所有的写操作
- 主节点将所有的操作都记录在操作日志(oplog)中,从节点通过复制这个日志来保持数据的一致性
- 在一个复制集当中,只有一个主节点
-
2.从节点(Secondary):
- 从节点复制主节点的数据,保持数据的冗余
- 从节点可以处理读操作
- 如果主节点不可用,复制集将自动选举一个从节点作为新的主节点
- 在一个复制集当中,可以有多个从节点
-
3.仲裁者节点(Arbiter)
- 仲裁者节点不复制数据,也不提供数据服务
- 主要作用是在选举过程中参与投票,以确保复制集能够快速进行故障转移
- 仲裁者节点是一个轻量级的进程,不需要太多的系统资源
-
-
-
实验准备环境:
- 3个以上的Mongodb节点(或者多实例)
- 这里使用多实例来代替Mongodb节点
- 每个服务器端口:
- 28017、28018、28019、28020
-
-
实验步骤:
-
创建多实例目录和配置文件:
- su - mongod
- mkdir -p /mongodb/28017/conf /mongodb/28017/data /mongodb/28017/log
- mkdir -p /mongodb/28018/conf /mongodb/28018/data /mongodb/28018/log
- mkdir -p /mongodb/28019/conf /mongodb/28019/data /mongodb/28019/log
- mkdir -p /mongodb/28020/conf /mongodb/28020/data /mongodb/28020/log
-
配置文件:
- cat > /mongodb/28017/conf/mongod.conf <<EOF
- systemLog:
- destination: file
- path: /mongodb/28017/log/mongodb.log
- logAppend: true
- storage:
- journal:
- enabled: true
- dbPath: /mongodb/28017/data
- directoryPerDB: true
- #engine: wiredTiger
- wiredTiger:
- engineConfig:
- cacheSizeGB: 1
- directoryForIndexes: true
- collectionConfig:
- blockCompressor: zlib
- indexConfig:
- prefixCompression: true
- processManagement:
- fork: true
- net:
- bindIp: 192.168.8.5,127.0.0.1
- port: 28017
- replication:
- oplogSizeMB: 2048
- replSetName: my_repl
- EOF
- cp /mongodb/28017/conf/mongod.conf /mongodb/28018/conf/
- cp /mongodb/28017/conf/mongod.conf /mongodb/28019/conf/
- cp /mongodb/28017/conf/mongod.conf /mongodb/28020/conf/
- sed 's#28017#28018#g' /mongodb/28018/conf/mongod.conf -i
- sed 's#28017#28019#g' /mongodb/28019/conf/mongod.conf -i
- sed 's#28017#28020#g' /mongodb/28020/conf/mongod.conf -i
-
启动每个实例:
- mongod -f /mongodb/28017/conf/mongod.conf
- mongod -f /mongodb/28018/conf/mongod.conf
- mongod -f /mongodb/28019/conf/mongod.conf
- mongod -f /mongodb/28020/conf/mongod.conf
-
查看端口:
- netstat -lnp|grep 280
-
配置普通复制集:
- 结构:一主两从,从库为普通从库
- 登录数据库:
- mongo --port 28017 admin
- 创建主从:
- config = {_id: 'my_repl', members: [
- {_id: 0, host: '192.168.8.5:28017'},
- {_id: 1, host: '192.168.8.5:28018'},
- {_id: 2, host: '192.168.8.5:28019'},
- {_id: 3, host: '192.168.8.5:28020'}]
- }
- 查询复制集状态:
- rs.status();
-
复制集管理操作:
-
查看复制集状态
- rs.status(); //查看整体复制集状态
- rs.isMaster(); // 查看当前是否是主节点
- rs.conf(); //查看复制集配置信息
- rs.slaveOk(); //从节点临时可读
-
添加删除节点
- rs.remove("ip:port"); // 删除一个节点
- rs.add("ip:port"); // 新增从节点
- rs.addArb("ip:port"); // 新增仲裁节点
-
-
-
3.Mongodb 复制集RS
努力转型的IT小王2024-06-17 9:08
相关推荐
时差9534 分钟前
【面试题】Hive 查询:如何查找用户连续三天登录的记录让学习成为一种生活方式6 分钟前
R包下载太慢安装中止的解决策略-R语言003秋意钟32 分钟前
MySQL日期类型选择建议Dxy12393102161 小时前
python下载pdf桀桀桀桀桀桀2 小时前
数据库中的用户管理和权限管理superman超哥3 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索用户8007165452003 小时前
HTAP数据库国产化改造技术可行性方案分析engchina4 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询engchina4 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径尘浮生4 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)