mongodb分片集群搭建

news2024/11/19 19:21:21

1.本次搭建使用三台centos7主机搭建伪集群,关闭防火墙和selinux服务

2.mongodb架构相当于9个分片节点,3个路由节点,3个配置节点,主机信息如下图所示

主机名称主机ip地址端口服务
A10.1.60.11420001,21001,22001,22002,22003shard1,shard2,shard3,config servers,mongos
B10.1.60.11520001,21001,22001,22002,22003shard1,shard2,shard3,config servers,mongos
C10.1.60.11820001,21001,22001,22002,22003shard1,shard2,shard3,config servers,mongos

3.从官网下载mongodb安装包(我这里下载的是6.0.5版本的tgz包)

Install MongoDB Community Kubernetes Operator | MongoDB

4.创建mongodb目录并将安装包放到目录下解压(以下所有操作没有特殊标明的都要在三台主机上执行)

mkdir /etc/mongodb

tar -zxvf /etc/mongodb/mongodb-linux-x86_64-rhel70-6.0.5.tgz /etc/mongodb/

mv /etc/mongodb/mongodb-linux-x86_64-rhel70-6.0.5 /etc/mongodb/mongodb

ls /etc/mongodb

 5.创建mongodb各项服务所需的目录

cd /etc/mongodb/mongodb

创建存放配置文件的目录

mkdir conf

创建存放config servers服务数据的目录

mkdir -p config/log

mkdir config/data

创建存放分片节点数据的目录(每台主机三个分片副本集节点)

mkdir -p shard1/data

mkdir shard1/log

mkdir -p shard2/data

mkdir shard2/log

mkdir -p shard3/data

mkdir shard3/log

创建存放mongos路由服务数据的目录

mkdir -p mongos/log

6. 创建mongodb各项服务的配置文件

编辑config servers服务配置文件

vi conf/config.conf 

pidfilepath=/etc/mongodb/mongodb/config/config_server.pid  #记录config服务的pid
dbpath=/etc/mongodb/mongodb/config/data/    #存放config服务数据的目录
logpath=/etc/mongodb/mongodb/config/log/config_server.log #记录config服务日志
logappend=true  #以追加写入的形式写入日志
bind_ip=0.0.0.0  #绑定ip地址
port=21001   #config服务使用的端口
fork=true  #后台启动服务
configsvr=true  #configsvr选项设置为true时,当前MongoDB实例将被配置为配置服务器,可以用于存储和管理分片集群的元数据信息,在这种情况下,MongoDB实例将会监听默认端口27019,并使用默认的数据目录/data/configdb存储配置服务器的数据文件
replSet=config_server #副本集名称
maxConns=20000  #最大连接数

编辑shard1服务配置文件

vi conf/shard1.conf

pidfilepath=/etc/mongodb/mongodb/shard1/shard1.pid
dbpath=/etc/mongodb/mongodb/shard1/data
logpath=/etc/mongodb/mongodb/shard1/log/shard1.log
logappend=true
bind_ip=0.0.0.0
port=22001
fork=true
directoryperdb=true #用于指定MongoDB实例是否使用独立的数据目录来存储每个数据库。当directoryperdb选项设置为true时,MongoDB实例将为每个数据库创建一个独立的数据目录,这样可以更好地管理和维护不同数据库之间的数据。如果directoryperdb选项设置为false,则MongoDB实例将使用单个数据目录来存储所有的数据库文件
replSet=shard1  #配置副本集名称
shardsvr=true  #用于指定MongoDB实例是否用作分片集群的分片节点。当shardsvr选项设置为true时,MongoDB实例将被配置为分片集群的分片节点,可以用于存储和管理分片集群的数据。在这种情况下,MongoDB实例将会监听默认端口27018,并使用默认的数据目录/data/db存储数据文件
maxConns=20000

编辑shard2服务配置文件

vi conf/shard2.conf

pidfilepath=/etc/mongodb/mongodb/shard2/shard2.pid
dbpath=/etc/mongodb/mongodb/shard2/data
logpath=/etc/mongodb/mongodb/shard2/log/shard2.log
logappend=true
bind_ip=0.0.0.0
port=22002
fork=true
directoryperdb=true
replSet=shard2
shardsvr=true
maxConns=20000

编辑shard3服务配置文件

vi conf/shard3.conf

pidfilepath=/etc/mongodb/mongodb/shard3/shard3.pid
dbpath=/etc/mongodb/mongodb/shard3/data
logpath=/etc/mongodb/mongodb/shard3/log/shard3.log
logappend=true
bind_ip=0.0.0.0
port=22003
fork=true
directoryperdb=true
replSet=shard3
shardsvr=true
maxConns=20000

编辑mongos服务配置文件

vi conf/mongos.conf

pidfilepath=/etc/mongodb/mongodb/mongos/mongos.pid
logpath=/etc/mongodb/mongodb/mongos/log/mongos.log
logappend=true
bind_ip=0.0.0.0
port=20001
fork=true
configdb=config_server/10.1.60.114:21001,10.1.60.115:21001,10.1.60.118:21001  #配置config服务副本集的所有节点,config_server之前在config配置文件中配置的副本集的名称
maxConns=20000

7.启用mongodb各项服务

cd /etc/mongodb/mongodb/

启动config servers服务

bin/mongod --config conf/config.conf

启动shard服务

bin/mongod --conf conf/shard1.conf

bin/mongod --config conf/shard2.conf

bin/mongod --config conf/shard3.conf

启动mongos服务

bin/mongos --config conf/mongos.conf

 8.安装mongosh服务(mongodb的6.0.5版本没有自带的客户端)

参考:安装mongodb客户端_Apex Predator的博客-CSDN博客

9.初始化各项服务副本集(此步骤在副本集中的任意一个节点主机上配置即可)

以下配置去掉注释后在一行一行的输入到mongodb的命令行中执行 

使用mongosh服务登录config服务初始化config servers服务副本集

mongosh --port 21001

rs.initiate({                          #初始化副本集

   _id:"config_server",       #此处需要填写config配置文件中设置的副本集名称

   members:[                    #副本集成员信息

             {_id:0,host:"10.1.60.114:21001"},

             {_id:1,host:"10.1.60.115:21001"},

             {_id:2,host:"10.1.60.118:21001"}

   ]

});

使用mongosh服务登录shard服务初始化shard服务副本集

mogosh --port 22001

rs.initiate({

   _id:"shard1",          #此处需要填写shard1配置文件中设置的副本集名称

   members:[

             {_id:0,host:"10.1.60.114:22001"},

             {_id:1,host:"10.1.60.115:22001"},

             {_id:2,host:"10.1.60.118:22001",arbiterOnly:true}        #配置此节点为副本集的仲裁节点

   ]

});

mogosh --port 22002

rs.initiate({

   _id:"shard2",          #此处需要填写shard2配置文件中设置的副本集名称

   members:[

             {_id:0,host:"10.1.60.114:22002"},

             {_id:1,host:"10.1.60.115:22002"},

             {_id:2,host:"10.1.60.118:22002",arbiterOnly:true}        #配置此节点为副本集的仲裁节点

   ]

});

mogosh --port 22003

rs.initiate({

   _id:"shard3",          #此处需要填写shard3配置文件中设置的副本集名称

   members:[

             {_id:0,host:"10.1.60.114:22003"},

             {_id:1,host:"10.1.60.115:22003"},

             {_id:2,host:"10.1.60.118:22003",arbiterOnly:true}        #配置此节点为副本集的仲裁节点

   ]

});

 使用mongosh服务登录mongos服务添加分片信息

mogosh --port 20001

注意MongoDB6以后直接在路由中加入分片信息会报错,需要先进行以下配置

use admin               #使用admin库,以下操作需要在admin库下执行

db.adminCommand({

   "setDefaultRWConcern" : 1,

   "defaultWriteConcern" : {

      "w" : 2

   }

});

添加分片副本集信息

db.runCommand({'addshard':'shard1/10.1.60.114:22001,10.1.60.115:22001.10.1.60.118:22001'});

db.runCommand({'addshard':'shard2/10.1.60.114:22002,10.1.60.115:22002.10.1.60.118:22002'});

db.runCommand({'addshard':'shard3/10.1.60.114:22003,10.1.60.115:22003.10.1.60.118:22003'});

查看集群状态

sh.status()

 可以看到已经是识别到了分片信息,仲裁节点是不显示的,所以shard副本集里就只显示两个节点

 10.测试mongodb集群分片存储

使用客户端连接mongos服务

mogosh --port 20001

创建测试库

use db

开启测试库分片,需要在admin库下执行命令

use admin

db.runCommand({enablesharding:'sj'})

 创建collection并开启分片

use sj 

db.user.ensureIndex({'id':'hashed'});       #在 user 集合中创建一个基于 id 字段的哈希索引,也可以不用执行创建索引命令

use admin

db.runCommand({shardcollection:'sj.user',key:{'id':'hashed'}})   #将 sj 数据库中的 user 集合分片,并使用 id 字段的哈希值作为分片键

 查看user集合是否开启分片

use sj

db.user.stats().sharded

写入数据测试查看分片情况

use sj

for(i=1;i<=20000;i++)db.user.insert({id:i,name:'linlin',sex:'boy'})

sh.status() 

查看数据分片情况

db.user.getShardDistribution()

 

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

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

相关文章

二叉树基本概念、种类、存储方式、遍历(JS实现)

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 二叉树基本概念性质 二叉树的种类满二叉树完全二叉树二叉搜索树平衡二叉搜…

问卷调查工具排行榜

问卷调查是从特定目标受众收集信息、意见和反馈的重要工具。随着技术的进步&#xff0c;市场上有许多问卷调查工具可供选择&#xff0c;这使得选择最适合您需求的工具变得具有挑战性。在本文中&#xff0c;我们将讨论一些可用的知名问卷调查工具。 1、Zoho Survey Zoho Surve…

看过这篇文章,读懂数据分析

一、为什么需要数据分析 数据分析的重要性不言而喻&#xff0c;没有数据&#xff0c;就是感性。数据不会被观点打败&#xff0c;数据只能被数据打败。我们现在妥妥地已经进入了数据时代。 量化IT投资成效&#xff0c;以数据驱动决策 站在公司或者决策者角度&#xff0c;数据最…

Smart Tools 网站的架构之美

本文将简要介绍Smart Tools工具箱网站的架构设计&#xff0c;带领大家一起领略架构之美。 Smart Tools是一款实用的在线工具箱网站&#xff0c;地址&#xff1a;https://smart-tools.cn 总体架构 Smart Tools工具箱网站是采用前后端分离的总体架构。其中&#xff0c;前端是由…

纯干货建议码住,新手写软文有哪些注意事项

随着互联网发展的越来越好&#xff0c;越来越的企业开始注重网络营销&#xff0c;软文营销就是其中的一种。软文营销对于很多企业来说无疑是非常具有优势的一种宣传方式。它可以帮助公司更优秀的传达其产品及服务的诉求&#xff0c;吸引潜在客户&#xff0c;加强品牌知名度&…

Java 电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

营造全面规范安全的电子招投标环境&#xff0c;促进招投标市场健康可持续发展 传统采购模式面临的挑战 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标…

一文解析Multi-queue 架构

Linux上传统的块设备层&#xff08;Block Layer&#xff09;和IO调度器&#xff08;如cfq&#xff09;主要是针对HDD&#xff08;hard disk drivers&#xff09;设计的。我们知道&#xff0c;HDD设备的随机IO性能很差&#xff0c;吞吐量大约是几百IOPS&#xff08;IOs per seco…

魔兽世界服务端AzerothCore核心Centos系统编译教程

魔兽世界服务端AzerothCore核心Centos系统编译教程 大家好,我是艾西今天跟大家分享下用linux系统怎么编译一个自己的魔兽世界服务端 准备工作:服务器一台、 安装软件、下载源码、 地图文件、 修改配置文件 修改文件执行权限、 修改配置文件、编译及启动、编译项目 数据…

体验 langchain-ChatGLM

体验 langchain-ChatGLM 1. 什么是 langchain-ChatGLM2. 什么是 langchain3. Github 地址4. 安装 Miniconda35. 创建虚拟环境6. 部署 langchain-ChatGLM7. 启动 langchain-ChatGLM8. 访问 langchain-ChatGLM9. API部署10. 命令行部署11. 其他&#xff0c;LangChain Document Lo…

rem响应式布局-自动将px转换为rem--px2rem插件的使用

在项目中我们可能要做适配根据不同分辨率做相应的页面处理 当你在项目中采用rem做响应式页面的时候&#xff0c;如果代码里面写的是rem单位的话&#xff0c;会不好判断各种距离、宽高的具体数值&#xff0c;下面介绍一款插件&#xff1a;px2rem&#xff0c;使用此插件可以在代码…

windows怎么把包含某个关键词的文件移动到一个文件夹中

文章目录 windows怎么把包含某个关键词的文件移动到一个文件夹中问题来源省流版本操作过程具体问题方法一&#xff1a;使用cmd终端解决方法二&#xff1a;使用python脚本 总结 windows怎么把包含某个关键词的文件移动到一个文件夹中 问题来源 今天想移动window文件&#xff0…

Java中的基本容器知识你真的了解过吗?

前言&#xff1a;尽量使用简单易懂的通俗语言让大家初步了解各个重要的知识点。博学之&#xff0c;审问之&#xff0c;慎思之&#xff0c;明辨之&#xff0c;笃行之。 一、容器&#xff08;Collection&#xff09; Collection容器其实是用来存储独立元素的各种数据结构&#xf…

CPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析

文章目录 0. 写此篇博客的原因1. 物理CPU&#xff0c;核&#xff0c;逻辑CPU概念1.1 内核工作方式1.2 超线程1.3 什么是大小核 2. CPU信息的查询方法2.1 Windows下查询CPU信息的方法2.2 Linux下查询CPU信息的方法方法一&#xff1a;lscpu 整体查看方法二&#xff1a;分别查看 3…

思享工具箱,各种工具汇总

站长,开发者常用在线工具集合 - 思享工具箱 思享工具箱&#xff0c;各种工具汇总 https://tool.4xseo.com/ JSON工具 Json格式化 Json格式化(上下) Json格式化(左右) Json在线压缩转义 Json生成C#实体类 Json生成Java实体类 Json生成Go结构…

戴尔Alienware x15R1 R2原厂win11系统带F12 Support Assist OS Recovery恢复功能

戴尔Alienware x15R1 x15R2原厂win11系统带F12 Support Assist OS Recovery恢复功能 恢复各机型预装系统&#xff0c;带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能&#xff0c;一次性恢复成新机状态&#xff0c;并且以后不用重装系统&#xff…

OpenGL(七)——摄像机

目录 一、前言 二、摄像机空间 2.1 摄像机位置 2.2 摄像机方向 2.3 右轴 2.4 上轴 2.5 LookAt观察矩阵 三、视觉移动 3.1 自由移动 3.2 移动速度 3.3 视觉移动 3.4 缩放 四、摄像机类 一、前言 之前3D物体已经有了&#xff0c;如何在观察空间中随意移动去“游览”3D物…

三维数据学习笔记:ply数据内容介绍

目录 前言1. 三维数据的组成1.1 点云数据1.2 网格数据 2. ply数据内容2.1 属性2.1.1 文本描述属性2.1.2 数据描述属性2.1.2.1 顶点(vertex)2.1.2.2 面(face)2.1.2.3 相机(camera) 2.2 数据2.2.1 顶点(vertex)2.2.2 面(face)2.2.3 相机(camera) 3. 示例3.1 示例13.2 示例2 前言 …

中盐集团:加快推进数智化转型,引领盐行业高质量发展

2022年无论对党和国家&#xff0c;还是对中盐集团&#xff0c;都是极不平凡、极为重要的一年。 这一年&#xff0c;党的二十大胜利召开&#xff0c;在“两个一百年”奋斗目标的历史交汇期&#xff0c;描绘了以中国式现代化全面推进中华民族伟大复兴的宏伟蓝图&#xff0c;开启了…

chatgpt国内能用吗?详细解读gpt的使用方法

chatgpt国内能用吗&#xff1f;Chat GPT是一种自然语言处理技术。它基于深度神经网络&#xff0c;并使用Transformer模型进行预测和生成。Chat GPT是OpenAI公司的一项人工智能技术&#xff0c;并在自然语言处理领域拥有广泛的应用。今天我们就来详细的聊聊国内能不能使用这个问…

Unity3D:内置着色器的用途和性能

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 内置着色器的用途和性能 Unity 中的着色器是通过__材质__来使用的&#xff0c;材质本质上结合了着色器代码与纹理等参数。此处提供了关于着色器/材质关系的深入说明。 当选择材质…