Linux安装mongodb企业版集群(分片集群)

news2024/9/17 9:25:39

目录

一、mongodb分片集群三种角色

二、安装

1、准备工作

2、安装

configsvr配置

router配置

shard配置

三、测试 

四、整合Springboot


一、mongodb分片集群三种角色

  • router角色: mongodb的路由,提供入口,使得分片集群对外透明,router不存储数据。
  • configsvr角色: mongodb的配置角色,存储元数据信息。分片集群后端有多份存储,读取数据该去哪个存储上读取,依赖于配置角色。配置角色建议使用副本集。
  • shardsvr角色:  mongodb的存储角色,存储真正的数据,建议使用副本集。

二、安装

1、准备工作

192.168.178.134

CentOS Linux release 7.7.1908 (Core)

27017

router

28018

configsvr

29019

shardsvr

29029

shardsvr

192.168.178.136

CentOS Linux release 7.7.1908 (Core)

27017router
28018configsvr
29019shardsvr
29029shardsvr

192.168.178.137

CentOS Linux release 7.7.1908 (Core)

27017router
28018configsvr
29019shardsvr
29029shardsvr

1.1、关闭selinux,关闭防火墙(或者开放端口)及安装软件包,在3台服务器上都执行。

#关闭Selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
 
#开启端口号27017
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
#关闭防火墙
systemctl stop firewalld
 
#安装工具
dnf -y install net-tools  bash-completion  vim wget
 
#重启
reboot

注意:安装工具包报错执行以下命令
yum install epel-release
 
yum install dnf -y
 
dnf -y install net-tools  bash-completion  vim wget

1.2、解压缩文件

#解压缩
tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-6.0.3.tgz
 
#移动文件
mv mongodb-linux-x86_64-enterprise-rhel70-6.0.3 /usr/local/mongodb

1.3、创建存储配置的目录

mkdir -p /data/mongodb/{router,config,shard,key}

#创建日志文件
touch /data/mongodb/config/configsvr.log

#创建存储数据目录
mkdir /data/mongodb/config/data -p

2、安装

configsvr配置

1、 在/data/mongodb/config 创建configsvr.conf配置文件

systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/config/configsvr.log
storage:
  dbPath: /data/mongodb/config/data
  journal:
    enabled: true
processManagement:
  fork: true
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 28018
  bindIp: 0.0.0.0
replication:
  replSetName: mycluster
sharding:
  clusterRole: configsvr
security:
 authorization: enabled
 keyFile: /data/mongodb/key/mongo.keyfile

 注:上面配置在没有设置mongodb密码的情况下,请注释掉security对应的配置。

2、 启动mongodb

/usr/local/mongodb/bin/mongod -f /data/mongodb/config/configsvr.conf
#检查是否启动成功
netstat -antup | grep mongod

3、 登录客户端,配置configsvr

mongosh 192.168.178.134:28018
use admin
config = { _id:"mycluster", 
  configsvr: true,
  members:[
    {_id:0,host:"192.168.178.134:28018"},
    {_id:1,host:"192.168.178.136:28018"},
    {_id:2,host:"192.168.178.137:28018"}
  ]
}
rs.initiate(config)
 #查看状态
rs.status();

router配置

1、在/data/mongodb/router/目录下创建router.conf配置文件。

systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/router/router.log
processManagement:
  fork: true
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27017
  bindIp: 0.0.0.0
sharding:
  configDB: mycluster/192.168.178.134:28018,192.168.178.136:28018,192.168.178.137:28018

2、创建日志文件启动

touch /data/mongodb/router/router.log

#启动,注意是mongos,不是mongod了
/usr/local/mongodb/bin/mongos  -f /data/mongodb/router/router.conf

shard配置

1、由于每个数据有两个分片,所以需要创建两个文件

mkdir -p /data/mongodb/shard/shardsvr1
mkdir -p /data/mongodb/shard/shardsvr2

2、配置文件

在上面的目录下创建shardsvr.conf配置文件

shardsvr1文件下对应的shardsvr.conf文件

systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/shard/shardsvr1/shardsvr.log
storage:
  dbPath: /data/mongodb/shard/shardsvr1
  journal:
    enabled: true
processManagement:
  fork: true
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 29019
  bindIp: 0.0.0.0
replication:
  replSetName: myclusterdata1
sharding:
  clusterRole: shardsvr

shardsvr2文件下对应的shardsvr.conf文件

systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/shard/shardsvr2/shardsvr.log
storage:
  dbPath: /data/mongodb/shard/shardsvr2
  journal:
    enabled: true
processManagement:
  fork: true
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 29029
  bindIp: 0.0.0.0
replication:
  replSetName: myclusterdata2
sharding:
  clusterRole: shardsvr

3、创建日志文件启动

touch /data/mongodb/shard/shardsvr1/shardsvr.log

touch /data/mongodb/shard/shardsvr2/shardsvr.log

#启动
/usr/local/mongodb/bin/mongod -f /data/mongodb/shard/shardsvr1/shardsvr.conf

/usr/local/mongodb/bin/mongod -f /data/mongodb/shard/shardsvr2/shardsvr.conf

4、配置集群

配置集群1并查看状态

mongosh 192.168.178.134:29019
use admin
config = { _id:"myclusterdata1", 
  members:[
    {_id:0,host:"192.168.178.134:29019"},
    {_id:1,host:"192.168.178.136:29019"},
    {_id:2,host:"192.168.178.137:29019"}
  ]
}
rs.initiate(config)

rs.status()

 

 

配置集群2并查看状态

mongosh 192.168.178.134:29029
use admin
config = { _id:"myclusterdata2", 
  members:[
    {_id:0,host:"192.168.178.134:29029"},
    {_id:1,host:"192.168.178.136:29029"},
    {_id:2,host:"192.168.178.137:29029"}
  ]
}
rs.initiate(config)
 
rs.status()

 5、router中填加shardsvr

mongosh 192.168.178.134:27017
use admin
sh.addShard("myclusterdata1/192.168.178.134:29019,192.168.178.136:29019,192.168.178.137:29019")
sh.addShard("myclusterdata2/192.168.178.134:29029,192.168.178.136:29029,192.168.178.137:29029")
sh.status()

三、测试 

插入数据

mongosh 192.168.3.81:27017
use mydb
for(i=1; i<=500;i++){
  db.myuser.insert( {name:'mytest'+i, age:i} )
}
 
sh.status()
db.myuser.count();
db.myuser.countDocuments()
db.myuser.estimatedDocumentCount()

 切换到myclusterdata1节点

./mongosh 192.168.178.134:29019

use mydb
db.myuser.estimatedDocumentCount()
db.myuser.find({"name":"mytest400"});

 可见在从分片上并没有数据,注意:默认情况下所有数据未分片存储,只存在主集群中。

数据分片存储

mongosh 192.168.178.134:27017
use mydb
db.dropDatabase()
use admin
db.runCommand( { enablesharding :"mydb"});
db.runCommand( { shardcollection : "mydb.myuser",key : {_id: "hashed"} } )
use mydb
for(i=1; i<=500;i++){
  db.myuser.insert( {name:'mytest'+i, age:i} )
}

 可以看到在myclusterdata1从库上也有了数据库mydb。

查看分片状态

sh.status();

 四、整合Springboot

Linux安装mongodb集群&&整合SpringBoot_熟透的蜗牛的博客-CSDN博客_springboot整合mongodb集群

参考: https://blog.csdn.net/w975121565/article/details/126978303

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【目标检测论文解读复现NO.27】基于改进YOLOv5的螺纹钢表面缺陷检测

前言此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0c;…

【工程化之路】Node require 正解

require 实现原理 流程概述 步骤1&#xff1a;尝试执行代码require("./1"). 开始调用方法require.步骤2&#xff1a;此时会得到filename&#xff0c;根据filename 会判断缓存中是否已经加载模块&#xff0c;如果加载完毕直接返回&#xff0c;反之继续执行步骤3&…

python图像处理(laplacian算子)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和之前的prewitt算子、sobel算子不同,laplacian算子更适合检测一些孤立点、短线段的边缘。因此,它对噪声比较敏感,输入的图像一定要做好噪声的处理工作。同时,laplacian算子设计…

Leetcode 03. 无重复字符的最长子串 [C语言]

目录题目思路1代码1结果1思路2代码2结果2该文章只是用于记录考研复试刷题题目 Leetcode 03: 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所…

尚医通-OAuth2-微信登录接口开发(三十一)

目录&#xff1a; &#xff08;1&#xff09;微信登录-OAuth2介绍 &#xff08;2&#xff09;前台用户系统-微信登录-准备工作 &#xff08;3&#xff09;微信登录-生成微信二维码-接口开发 &#xff08;4&#xff09;微信登录-生成验证码-前端整合 &#xff08;5&#xf…

Telerik DevCraft Ultimate R1 2023

Telerik DevCraft Ultimate R1 2023 Kendo UI R1 2023-添加新的Chip和ChipList组件。 KendoReact R1 2023&#xff08;v5.11.0&#xff09;-新的PDFViewer组件允许用户直接在应用程序中查看PDF文档。 Telerik JustLock R1 2023-Visual Studio快速操作菜单现在可以在创建通用…

蓝桥杯重点(C/C++)(随时更新,更新时间:2023.1.29)

点关注不迷路&#xff0c;欢迎推荐给更多人 目录 1 技巧 1.1 取消同步&#xff08;节约时间&#xff0c;甚至能多骗点分&#xff0c;最好每个程序都写上&#xff09; 1.2 万能库&#xff08;可能会耽误编译时间&#xff0c;但是省脑子&#xff09; 1.3 蓝桥杯return 0…

【数据库-通用知识系列-01】数据库规范化设计之范式,让数据库表看起来更专业

我们在设计数据库时考虑的因素包括读取性能&#xff0c;数据一致性&#xff0c;数据冗余度&#xff0c;可扩展性等&#xff0c;好好学习数据库规范化的知识&#xff0c;设计的数据库表看起来才专业。 范式一览 “键”理解&#xff1a; 超键&#xff1a;在关系中能唯一标识元组…

送什么礼物给小学生比较有纪念意义?适合送小学生的小礼物

送给小学生的礼物哪种比较有意义呢&#xff1f;送给学生的礼物&#xff0c;基本上是对学习有所帮助的&#xff0c;但是像送钢笔、练习册这些&#xff0c;有一部分学生是抗拒的&#xff0c;作为大人就是希望对视力、对成长有用的东西&#xff0c;我认为保护视力是现在许多家庭的…

isNotEmpty() 和 isNotBlank() 的区别,字符串判空, StringUtils工具包 StringUtil工具类,isEmpty() 和 isBlank() 的区别

目录1.StringUtils 和 StringUtilStringUtils 的依赖&#xff1a;StringUtils 的用法&#xff1a;StringUtil 工具类2. isNotEmpty() 和 isNotBlank()1.StringUtils 和 StringUtil 注&#xff1a;StringUtils 和 StringUtil 的区别&#xff08;StringUtil为自定义工具类&#…

以表达式作为template参数

目录 一.template参数的分类&#xff1a; 二.非类型参数与默认参数值一起使用 三.应用 一.template参数的分类&#xff1a; ①.某种类型&#xff1a; template<typename T>; ②.表达式(非类型)&#xff1a; template<int length,int position>; 其中length…

Liunx中shell命令行和权限的理解

文章目录前言1.shell外壳的理解2.关于权限理解1.Linux下的用户2.角色划分3.文件和目录的权限3.粘滞位3.总结前言 Linux中的操作都是通过在命令行上敲指令来实现的&#xff0c;本文将简单的介绍Linux中的外壳程序shell以及浅谈一下对Linux中的权限理解。 1.shell外壳的理解 Lin…

微信小程序开发(一)

1. 微信小程序的开发流程 2. 注册小程序 小程序注册页&#xff1a;https://mp.weixin.qq.com/wxopen/waregister?actionstep1 如已注册&#xff0c;直接登录 小程序后台 https://mp.weixin.qq.com/ 即可。 在小程序后台的 【开发管理】→ 【开发设置】下可以查看AppID&…

算法训练营DAY45|322. 零钱兑换、279.完全平方数

两道题思路上有相似之处&#xff0c;都是求得最少的种类方法&#xff0c;也就是说在完全背包里给定容量时&#xff0c;用最少的物品去装满背包。它和用最多的方法去装满背包也有一些相似&#xff0c;也就是说两者实际上是互通的。 322. 零钱兑换 - 力扣&#xff08;LeetCode&a…

HTML零散知识

1、代码规范与思路 参考凹凸实验室代码规范&#xff1a;Aotu.io - 前端代码规范 CSS编写顺序的思路 先确定盒子本身是如何布局 position: absolutefloat: left/rightdisplay: flex 盒子的特性和可见性 display: block/inline-block/inline/nonevisibility/opacity 盒子模型…

【Pytorch项目实战】之生成式模型:DeepDream、风格迁移、图像修复

文章目录生成式模型&#xff08;算法一&#xff09;深度梦境&#xff08;DeepDream&#xff09;&#xff08;算法二&#xff09;风格迁移&#xff08;Style Transfer&#xff09;&#xff08;算法三&#xff09;图像修复&#xff08;Image Inpainting&#xff09;&#xff08;一…

(13)工业界推荐系统-小红书推荐场景及内部实践【用户行为序列建模】

&#xff08;1&#xff09;工业界推荐系统-小红书推荐场景及内部实践【业务指标、链路、ItemCF】 &#xff08;2&#xff09;工业界推荐系统-小红书推荐场景及内部实践【UserCF、离线特征处理】 &#xff08;3&#xff09;工业界推荐系统-小红书推荐场景及内部实践【矩阵补充、…

Docker搭建LNMP+Wordpress

一、服务器环境 容器操作系统IP地址主要软件nginxCentOS 7172.18.0.10Docker-NginxmysqlCentOS 7172.18.0.20Docker-MysqlmysqlCentOS 7172.18.0.20Docker-Mysql 二、Linux系统基础镜像 systemctl stop firewalld setenforce 0 docker pull centos:7 #从公有仓库中下载cento…

cubeIDE开发, stm32人工智能开发应用实践(Cube.AI).篇三

一、cube.AI实际项目应用 接篇二&#xff0c;前文都是采用FP-AI-SENSING1案例和配套的B-L475E-IOT01A开发板来阐述的&#xff0c;而实际项目中&#xff0c;我们都是基于自身项目硬件平台来训练模型及部署模型的&#xff0c;我们仅仅需要cube.AI软件包&#xff08;作为可调用库&…

技术大佬说我对「压测目标」的分析不够细

前言 前面总结压测类型的时候有简单描述了不同压测类型的从准备-脚本设计-压测的整体过程&#xff0c;但是对于压测对象没有更深入的进行分析总结&#xff0c;导致在压测执行结束后&#xff0c;出现压测结果不准确的情况。所以这边就压测的对象进行单独的总结分析。 在执行压测…