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"); // 新增仲裁节点
相关推荐
远歌已逝1 小时前
维护在线重做日志(二)
数据库·oracle
qq_433099403 小时前
Ubuntu20.04从零安装IsaacSim/IsaacLab
数据库
Dlwyz3 小时前
redis-击穿、穿透、雪崩
数据库·redis·缓存
工业甲酰苯胺4 小时前
Redis性能优化的18招
数据库·redis·性能优化
没书读了5 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
i道i6 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl6 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
wqq_9922502777 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空7 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
聂 可 以8 小时前
Windows环境安装MongoDB
数据库·mongodb