当前位置: 首页 > article >正文

mongodb集群搭建

1.环境

  1. windows或linux服务器
  2. mongodb包文件

mongodb官网链接
我使用的7.x版本

1.1 集群介绍

  • 集群分为两个副本集和一个配置集
  • 每个副本集有一个主节点,一个从节点,一个仲裁节点
  • 配置集里面有一个主两个从节点
  • 两个服务节点(访问入口)

1.2 功能说明

  • 副本集:存储分片数据,每个副本集一主一从一仲裁(投票者)
  • 配置集:存储元数据,路由节点创建数据库,表等元数据存储,一主两从,一般不会挂
  • 服务节点:集群入口,通过路由节点创建分片表和数据,元数据存储到配置集,并把数据按规则分布到副本集里。

2.安装配置

2.1.cluster-01 副本集配置

  1. 解压/安装 mongodb包
  2. 在解压包下新建conf/mongod.conf
  3. 三节点配置相同,注意修改ip,port和存储地址,存储地址需提前创建好文件夹
#数据存储路径
storage:
  dbPath: D:\software\mongodb\clusters\node1-1\data\db
systemLog:
  destination: file
  path: D:\software\mongodb\clusters\node1-1\logs\mongo.log
  logAppend: true
#守护进程
#processManagement:
#  fork: true
net:
  bindIp: 127.0.0.1,192.168.10.9
  port: 27018
replication:
  replSetName: cluster-01
sharding:
  #分片角色
  clusterRole: shardsvr  

我这边使用 27018-27020端口

2.2cluster-02 副本集配置

  1. 解压/安装 mongodb包
  2. 在解压包下新建conf/mongod.conf
  3. 三节点配置相同,注意修改ip,port和存储地址,存储地址需提前创建好文件夹
storage:
 dbPath: D:\software\mongodb\clusters\node2-1\data\db
systemLog:
 destination: file
 path: D:\software\mongodb\clusters\node2-1\logs\mongo.log
 logAppend: true
#守护进程
#processManagement:
#  fork: true
net:
 bindIp: 127.0.0.1,192.168.10.9
 port: 27021
replication:
 replSetName: cluster-02
sharding:
 #分片角色
 clusterRole: shardsvr  

我这边使用 27021-27023端口

2.3 cluster-03 配置服务

  1. 解压/安装 mongodb包
  2. 在解压包下新建conf/mongod.conf
  3. 三节点配置相同,注意修改ip,port和存储地址,存储地址需提前创建好文件夹
storage:
  dbPath: D:\software\mongodb\clusters\nodeConf-1\data\db
systemLog:
  destination: file
  path: D:\software\mongodb\clusters\nodeConf-1\logs\mongo.log
  logAppend: true
#守护进程
#processManagement:
#  fork: true
net:
  bindIp: 127.0.0.1,192.168.10.9
  port: 27024
replication:
  replSetName: cluster-03
sharding:
  #分片角色
  clusterRole: configsvr  

我这边使用 27024-27026端口

2.4 路由服务

  1. 解压/安装 mongodb包
  2. 在解压包下新建conf/mongos.conf
  3. 节点配置相同,注意修改ip,port和存储地址,存储地址需提前创建好文件夹
systemLog:
  destination: file
  path: D:\software\mongodb\clusters\nodes-1\logs\mongo.log
  logAppend: true
#守护进程
#processManagement:
#  fork: true
net:
  bindIp: 127.0.0.1,192.168.10.9
  port: 27027
  
sharding:
  #指定配置节点副本集
  configDB: cluster-03/192.168.10.9:27024,192.168.10.9:27025,192.168.10.9:27026

2.5 所有非路由节点在bin下启动

mongod --config ../conf/mongod.conf

2.6 所有路由节点在bin下启动

mongos --config ../conf/mongos.conf

3.初始化

使用命令行或者其他连接进入shell,我使用dataGrip连接

3.1 cluster-01主节点执行

rs.initiate();
#添加从节点
rs.add("192.168.10.9:27019");
# 普通主从使用,集群跳过 这里的 { w: 2 } 表示至少需要两个节点确认写入。你可以根据实际情况调整 w 的值。
#使用 setDefaultRWConcern 命令设置集群范围的默认写关注。例如,可以设置一个较宽松的写关注,以确保大多数节点确认写入
# db.adminCommand({
#   setDefaultRWConcern: 1,
#   defaultWriteConcern: { w: 2 }
# });
#添加仲裁者
rs.addArb("192.168.10.9:27020");

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/957fe83d3c9041179a9bd7dd555cde1c.png

3.2 cluster-02主节点执行

rs.initiate();
rs.add("192.168.10.9:27022");
# 普通主从使用,集群跳过 这里的 { w: 2 } 表示至少需要两个节点确认写入。你可以根据实际情况调整 w 的值。
#使用 setDefaultRWConcern 命令设置集群范围的默认写关注。例如,可以设置一个较宽松的写关注,以确保大多数节点确认写入
# db.adminCommand({
#   setDefaultRWConcern: 1,
#   defaultWriteConcern: { w: 2 }
# });
#添加仲裁者
rs.addArb("192.168.10.9:27023");

3.3 cluster-03配置服务主节点执行

rs.initiate();
rs.add("192.168.10.9:27025");
rs.add("192.168.10.9:27026");

3.4 路由服务节点

单节点执行即可,配置信息已保存至conf

#这里的 { w: 2 } 表示至少需要两个节点确认写入。你可以根据实际情况调整 w 的值。
#使用 setDefaultRWConcern 命令设置集群范围的默认写关注。例如,可以设置一个较宽松的写关注,以确保大多数节点确认写入
db.adminCommand({
  setDefaultRWConcern: 1,
  defaultWriteConcern: { w: 2 }
});
sh.addShard("cluster-01/192.168.10.9:27018,192.168.10.9:27019,192.168.10.9:27020");
sh.addShard("cluster-02/192.168.10.9:27021,192.168.10.9:27022,192.168.10.9:27023");
//开启数据库分片(自动创建数据库)
sh.enableSharding("myDb")

//开启表分片,hash策略(自动创建表)
sh.shardCollection("myDb.books",{"userId":"hashed"})
//开启表分片,hash策略(自动创建表)
sh.shardCollection("myDb.books2",{"userId":1})

测试插入,够64m才会hash

db.myDb.insertOne({"article":"红楼梦","author":"曹雪芹","userId":1});
db.myDb.insertMany([{"article":"三国演义","author":"罗贯中","userId":2},{"article":"水浒传","author":"施耐庵","userId":3} ,{"article":"西游记","author":"吴承恩","userId":4} ]);

查看节点状态配置

rs.config();
rs.status();

项目连接只需连路由节点即可

uri: mongodb://localhost:27018,localhost:27027,localhost:27058/myDb

3.5 集群配置鉴权

配置用户鉴权登录后,需要在配置文件上添加配置,并将所有节点使用生成的同一keyFile文件(可用openssl生成)

#开启认证  
security:
  keyFile: ../mongo.keyfile
  authorization: enabled 

http://www.kler.cn/a/407354.html

相关文章:

  • LeetCode题解:28.找出字符串中第一个匹配项的下标【Python题解超详细,滑动窗口法、内置 find 函数、KMP算法】,知识拓展, KMP算法
  • Go语言工程测试的基本规则和流程
  • 量子感知机
  • Bokeh实现大规模数据可视化的最佳实践
  • 常用的消息中间件
  • C#元组详解:创建、访问与解构
  • 浅谈Go语言Optional模式和Builder模式
  • 11.19.2024刷华为OD
  • 利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器
  • Playwright(Java版) - 8: Playwright 元素交互的高级应用
  • 原生JS来完成一个小游戏——点击抽奖
  • iptables网络安全服务详细使用
  • Node相关教程
  • Vue3与Vue2 对比
  • Spring学习笔记_46——@InitBinder
  • 使用同一个链接,如何实现PC打开是web应用,手机打开是一个H5应用
  • Qwen大模型Lora微调-Windows
  • 跟《经济学人》学英文:2024年11月23日这期 Why British MPs should vote for assisted dying
  • 【SpringMVC - 1】基本介绍+快速入门+图文解析SpringMVC执行流程
  • 基本功能实现
  • Linux线程_线程互斥_线程同步
  • QT文件基本操作
  • BERT的中文问答系统35
  • 猎板科技:PCB 特殊定制领域的卓越引领者
  • 汽车软件开发中的ASPICE合规挑战与Jama Connect解决方案
  • 解决整合Django与Jinja2兼容性的问题