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"); // 新增仲裁节点
相关推荐
Rookie也要加油26 分钟前
01_SQLite
数据库·sqlite
liuxin3344556630 分钟前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
看山还是山,看水还是。1 小时前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec1 小时前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa1 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke2 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D2 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
小宇成长录2 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
团儿.3 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
程序猿小D3 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa