首页 > 数据库 >Mongodb中的PSA转换为PSS架构

Mongodb中的PSA转换为PSS架构

时间:2022-11-12 11:02:57浏览次数:42  
标签:vm001 mg 架构 Mongodb PSA conf PSS data rs1

PSA架构的问题

众所周知,PSA架构中如果Secondary发生故障会带来一系列的问题,包括

  • Majority写入无法完成
  • 造成主库内存压力的增加
  • 重启主库需要更多的时间
  • 特殊情况下会导致数据的丢失

所以副本集架构中最好的方式是PSS的架构


当前环境

Primary

vm003:28001

Secondary

vm002:28001

Arb

vm001:28000

需求是将副本集架构修改为:

Primary

vm003:28001

Secondary

vm002:28001

Secondary

vm001:28001

操作过程

添加Secondary节点

方法1:使用初始化的方式进行同步

  • 在vm001上面创建mongodb实例

```

[root@vm001 conf]# cat rs1.conf 

storage:

  dbPath: "/mg_data/rs1/data"

systemLog:

  destination: file

  path: "/mg_data/rs1/log/mongo1.log"

  logAppend: true

net:

  port: "28001"

  bindIp: localhost,vm001

processManagement:

  fork: true

replication:

  replSetName: rs0

security:

  keyFile: /mg_data/rs1/pki/myrp-keyfile

```

启动实例

mongd -f rs1.conf 


  • 添加实例

添加之前建议备份rs.conf()的内容

```

rs.add("vm001:28001");

```


方式2:使用同步其它节点数据目录的方式进行同步

对于一些数据量比较大的节点,初始化的时间可能会很长,同时会对主库的性能造成一定的影响,那么这个时候就可以采用同步其它节点数据目录的方式快速创建备库。但是PSA结构下要注意对majority写入的影响

  • 修改默认写关注

```

db.adminCommand({

  "setDefaultRWConcern" : 1,

  "defaultWriteConcern" : {

    "w" : "majority"

  }

})

```

在同步现有secondary数据目录的时候需要先停止这个secondary。但对于PSA架构来说停止secondary的关闭会带来一系列的影响。


  • 停止备库并且复制备库数据文件目录到新节点

```

vm002上操作

mongod -f /mg_data/rs1/conf/rs1.conf

scp -r /mg_data/rs1/data/ vm001:/mg_data/rs1/

```


  • 在vm003上面启动mongod实例


  • remove原来的仲裁节点

```

mongod -f /mg_data/rs1/conf/arb_rs1.conf --shutdown

连接到primary

rs.remove("vm001:28000")

```


  • 恢复默认的写关注

db.adminCommand({

  "setDefaultRWConcern" : 1,

  "defaultWriteConcern" : {

    "w" : "majority"

  }

})


总结

需要注意的问题:

1、注意当Secondary关闭之后对主库的影响

2、注意OPLOG的保留期限






标签:vm001,mg,架构,Mongodb,PSA,conf,PSS,data,rs1
From: https://blog.51cto.com/u_15078930/5846559

相关文章

  • mongoDB大数据查询遇到的问题
    有一个30亿量级数据的库,如何全量爬取并分析?因为量级过大无法一次性爬取至本地再分析,考虑使用limit().skip()混合的方法,一次读取1万条数据进行分析存储,30亿数据分成30万份后......
  • 【MongoDB】复制集 相关 (bully算法)
    复制集技术相比较传统的Master-Slave模式好处在于多了容错机制。所以MongoDB的复制集技术主要为用户解决了两大问题:第一就是primary节点挂了,其余的secondary节点会自动选举......
  • 【MongoDB】shard切分 原理
    1.角色:在一个MongoDB的shard集群中,会有三种角色:shard,config和routingshard:每一个shard节点都会包含数据集的一部分,是存储真正数据的节点;config:主要存储元数据或者配置信息,比......
  • Python操作MongoDB
    一安装pymongopipinstallpymongo==3.4导入MongoClientfrompymongoimportMongoClient 二连接MongoDB数据库MongoDB端口号:27017连接MongoDB我们需要使用P......
  • 电影推荐系统项目实战:环境配置与搭建:Linux环境下 MongoDB的配置与安装 ----- centos7
    1.在主机中下载好Linux版本的MongoDB压缩包:连接如下:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.3.tgz 2.打开VM,启动虚拟机(这里是hadoop102)......
  • MongoDB集群之复制集,分片
    目录1集群1.1简介1.2复制集1.2.1简介1.2.2复制集设置1.2.2.1创建目录并启动1.2.2.2配置及初始化1.2.2.3操作节点1.2.2.4不正常关闭服务1.3分片1.3.1简介1.3.2......
  • 【解包裹】基于GPSA和AIA实现相位提取附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • Mongodb数据库和MySQL的比较
    谈谈Mongodb和MySQL的区别什么是Mongodb数据库Mongodb是一个介于关系数据库和非关系数据库之间的产品(Nosql),非关系型数据库(nosql),属于文档型数据库。文档是mongoDB......
  • Installing MongoDB-6.0.2 on openEuler-22.09
    一、InstallingMongoDB-6.0.2onopenEuler-22.091查看版本openEuler-22.09和CentOS8.3里安装无差别,直接一步到位好吧! X、OneStepSuccesssystemctlstopfi......
  • mongodb添加删除节点及仲裁节点
    温馨提示:此mongodb版本为5.0.11,并注意,如果要删除节点,可以直接删除,添加节点前要先删除仲裁节点。rs.remove("192.168.0.180:27017");  (移除节点,如果移除仲裁节点一直卡......