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"); // 新增仲裁节点
相关推荐
RestCloud1 天前
SQL Server到Hive:批处理ETL性能提升30%的实战经验
数据库·api
RestCloud1 天前
为什么说零代码 ETL 是未来趋势?
数据库·api
ClouGence1 天前
CloudCanal + Paimon + SelectDB 从 0 到 1 构建实时湖仓
数据库
DemonAvenger1 天前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
AAA修煤气灶刘哥2 天前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
RestCloud2 天前
揭秘 CDC 技术:让数据库同步快人一步
数据库·api
得物技术2 天前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
可涵不会debug2 天前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库
ByteBlossom2 天前
MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
数据库·mysql·面试
麦兜*2 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud