-
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
相关推荐
woshilys21 分钟前
sql server 查询对象的修改时间Hacker_LaoYi22 分钟前
SQL注入的那些面试题总结建投数据1 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证Hacker_LaoYi2 小时前
【渗透技术总结】SQL手工注入总结岁月变迁呀2 小时前
Redis梳理独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)你的微笑,乱了夏天3 小时前
linux centos 7 安装 mongodb7工业甲酰苯胺3 小时前
分布式系统架构:服务容错独行soc4 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)White_Mountain4 小时前
在Ubuntu中配置mysql,并允许外部访问数据库