3.Mongodb 复制集RS

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