MongoDB集群分片安装部署手册

文章目录

    • 一、集群规划
      • 1.1 集群安装规划
      • 1.2 端口规划
      • 1.3 目录创建
    • 二、mongodb安装(三台均需要操作)
      • 2.1 下载、解压
      • 2.2 配置环境变量
    • 三、mongodb组件配置
      • 3.1 配置config server的副本集
        • 3.1.1 config配置文件
        • 3.1.2 config server启动
        • 3.1.3 初始化config
      • 3.2 配置shard1 server的副本集
        • 3.2.1 shard1配置文件
        • 3.2.2 启动shard1
        • 3.2.3 初始化shard1
      • 3.3 配置shard2 server的副本集
        • 3.3.1 shard2配置文件
        • 3.3.2 启动shard2
        • 3.3.3 初始化shard2
      • 3.4 配置shard3 server的副本集
        • 3.4.1 shard3配置文件
        • 3.4.2 启动shard3
        • 3.4.3 初始化shard3
      • 3.5 配置mongos server的副本集
        • 3.5.1 mongos配置文件
        • 3.5.2 启动mongos
      • 3.6 添加分片
      • 3.7 安全验证
        • 3.7.1 生成key文件
        • 3.7.2 创建管理员用户密码
        • 3.7.3 关闭所有的节点
        • 3.7.4 在配置文件后添加key文件
        • 3.7.5 启动所有节点
        • 3.7.6 开启分片
        • 3.7.7 设置chunksize
    • 四、验证
      • 4.1 批量插入数据

一、集群规划

1.1 集群安装规划

在这里插入图片描述

1.2 端口规划

mongos:20000
config:21000
shard1:27001
shard2:27002
shard3:27003

1.3 目录创建

数据目录:
/mongodb/data/config
/mongodb/data/shard1
/mongodb/data/shard2
/mongodb/data/shard3
日志目录:
/mongodb/logs/mongos
/mongodb/logs/config
/mongodb/logs/shard1
/mongodb/logs/shard2
/mongodb/logs/shard3
配置目录:
/usr/local/mongodb/conf
/usr/local/mongodb/server

二、mongodb安装(三台均需要操作)

2.1 下载、解压

https://www.mongodb.com/try/download/community-edition/releases/archive

cd /usr/local/
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.26.tgz

2.2 配置环境变量

vim /etc/profile

#mongodb path
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

source /etc/profile

三、mongodb组件配置

3.1 配置config server的副本集

3.1.1 config配置文件

vim /usr/local/mongodb/conf/config.conf

## content
systemLog:destination: filelogAppend: truepath: /mongodb/logs/config.log# Where and how to store data.
storage:dbPath: /mongodb/data/configjournal:enabled: true# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/config/configsrv.pid# network interfaces
net:port: 21000bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: config        
sharding:clusterRole: configsvr
3.1.2 config server启动

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/config.conf &

3.1.3 初始化config

只需要在一台主机上执行

mongo 10.10.3.134:21000config = {_id : "config",members : [{_id : 0, host : "10.10.3.134:21000" },{_id : 1, host : "10.10.3.135:21000" },{_id : 2, host : "10.10.3.136:21000" }]}rs.initiate(config)

在这里插入图片描述
需要关闭防火墙,selinux

3.2 配置shard1 server的副本集

3.2.1 shard1配置文件

vim /usr/local/mongodb/conf/shard1.conf

# where to write logging data.
systemLog:destination: filelogAppend: truepath: /mongodb/logs/shard1/shard1.log# Where and how to store data.
storage:dbPath: /mongodb/data/shard1journal:enabled: truewiredTiger:engineConfig:cacheSizeGB: 1# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/shard1/shard1.pid# network interfaces
net:port: 27001bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: shard1
sharding:clusterRole: shardsvr

同步配置文件

scp /usr/local/mongodb/conf/shard1.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/shard1.conf root@mongo03:/usr/local/mongodb/conf/
3.2.2 启动shard1

三台主机上执行

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf &
3.2.3 初始化shard1

只需要在一台主机上执行

mongo mongo01:27001use adminconfig = { _id : "shard1",members : [{_id : 0, host : "10.10.3.134:27001" ,priority: 2 },{_id : 1, host : "10.10.3.135:27001" ,priority: 1 },{_id : 2, host : "10.10.3.136:27001",arbiterOnly: true}]}

“priority”优先级,数字越大,优先等级越高;“arbiterOnly”仲裁节点:仲裁节点根据优先等级判断哪个节点作为主节点
在这里插入图片描述

3.3 配置shard2 server的副本集

3.3.1 shard2配置文件

vim /usr/local/mongodb/conf/shard2.conf

# where to write logging data.
systemLog:destination: filelogAppend: truepath: /mongodb/logs/shard2/shard2.log# Where and how to store data.
storage:dbPath: /mongodb/data/shard2journal:enabled: truewiredTiger:engineConfig:cacheSizeGB: 1# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/shard2/shard2.pid# network interfaces
net:port: 27002bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: shard2
sharding:clusterRole: shardsvr

同步配置文件

scp /usr/local/mongodb/conf/shard2.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/shard2.conf root@mongo03:/usr/local/mongodb/conf/
3.3.2 启动shard2

三台主机上执行
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard2.conf &

3.3.3 初始化shard2

只需要在一台主机上执行

mongo mongo01:27002use adminconfig = { _id : "shard2",members : [{_id : 0, host : "10.10.3.134:27002" ,arbiterOnly: true },{_id : 1, host : "10.10.3.135:27002" ,priority: 2 },{_id : 2, host : "10.10.3.136:27002",priority: 1}]}rs.initiate(config)

在这里插入图片描述

3.4 配置shard3 server的副本集

3.4.1 shard3配置文件

vim /usr/local/mongodb/conf/shard3.conf

# where to write logging data.
systemLog:destination: filelogAppend: truepath: /mongodb/logs/shard3/shard3.log# Where and how to store data.
storage:dbPath: /mongodb/data/shard3journal:enabled: truewiredTiger:engineConfig:cacheSizeGB: 1# how the process runs
processManagement:fork: truepidFilePath: /mongodb/logs/shard3/shard3.pid# network interfaces
net:port: 27003bindIp: 0.0.0.0#operationProfiling:
replication:replSetName: shard3
sharding:clusterRole: shardsvr

同步配置文件

scp /usr/local/mongodb/conf/shard3.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/shard3.conf root@mongo03:/usr/local/mongodb/conf/
3.4.2 启动shard3

三台主机上执行

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard3.conf &
3.4.3 初始化shard3

只需要在一台主机上执行

mongo mongo01:27003use adminconfig = { _id : "shard3",members : [{_id : 0, host : "10.10.3.134:27003" ,priority: 1 },{_id : 1, host : "10.10.3.135:27003" ,arbiterOnly: true },{_id : 2, host : "10.10.3.136:27003",priority: 2}]}rs.initiate(config)

在这里插入图片描述

3.5 配置mongos server的副本集

3.5.1 mongos配置文件

vim /usr/local/mongodb/conf/mongos.conf

systemLog:destination: filelogAppend: truepath: /mongodb/logs/mongos/mongos.log
processManagement:fork: truepidFilePath: /mongodb/logs/mongos/mongos.pid# network interfaces
net:port: 20000bindIp: 0.0.0.0
sharding:configDB: config/10.10.3.134:21000,10.10.3.135:21000,10.10.3.136:21000

同步配置文件

scp /usr/local/mongodb/conf/mongos.conf root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/mongos.conf root@mongo03:/usr/local/mongodb/conf/
3.5.2 启动mongos

三台主机上执行

/usr/local/mongodb/bin/mongos -f /usr/local/mongodb/conf/mongos.conf &

3.6 添加分片

只需要在一台主机上执行

mongo mongo01:20000
sh.addShard("shard1/10.10.3.134:27001,10.10.3.135:27001,10.10.3.136:27001")
sh.addShard("shard2/10.10.3.134:27002,10.10.3.135:27002,10.10.3.136:27002")
sh.addShard("shard3/10.10.3.134:27003,10.10.3.135:27003,10.10.3.136:27003")

在这里插入图片描述
查看分片状态

sh.status()

在这里插入图片描述

3.7 安全验证

3.7.1 生成key文件
openssl rand -base64 756 > /usr/local/mongodb/conf/KeyFile.file

分发key文件

scp /usr/local/mongodb/conf/KeyFile.file root@mongo02:/usr/local/mongodb/conf/
scp /usr/local/mongodb/conf/KeyFile.file root@mongo03:/usr/local/mongodb/conf/
3.7.2 创建管理员用户密码

只需要在一台主机上执行

mongo -port 20000use admindb.createUser(
{
user:"live",
pwd:"xxxx",
roles:[{role:"root",db:"admin"}]
}
)

在这里插入图片描述

3.7.3 关闭所有的节点

按照先后顺序来处理关闭,mongos>config>shard3>shard2>shard1
三台主机的服务都关闭后再关闭下一个服务。例如三台主机mongos服务都关闭后再关闭config服务,以此类推
关闭mongos

mongo -port 20000use admindb.auth('live','xxxx')db.shutdownServer()

在这里插入图片描述
关闭config

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/config.conf --shutdown

关闭shard

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard3.conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard2.conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf --shutdown
3.7.4 在配置文件后添加key文件

config.conf、shard1.conf、shard2.conf、shard3.conf最后添加:

security:keyFile: /usr/local/mongodb/conf/KeyFile.fileauthorization: enabled

mongos.conf配置文件中最后添加:

security:
keyFile: /usr/local/mongodb/conf/KeyFile.file

同步配置文件

scp *.conf root@mongo02:/usr/local/mongodb/conf/
scp *.conf root@mongo03:/usr/local/mongodb/conf/
3.7.5 启动所有节点

启动顺序:config>shadr1>shadr2>shadr3>mongos
三台主机的服务都开启后再开启下一个服务。例如三台主机config服务都开启后再开启shard1服务,以此类推

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/config.conf &
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard1.conf &
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard2.conf &
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/shard3.conf &
/usr/local/mongodb/bin/mongos -f /usr/local/mongodb/conf/mongos.conf &
3.7.6 开启分片
mongo 10.10.3.134:20000
use admin
db.auth('live','xxxx')
#为testdb库开启分片功能
db.runCommand( { enablesharding :"testdb"})
#指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection : "testdb.table1",key : {_id: 1} } )

在这里插入图片描述

3.7.7 设置chunksize
use testdb
#设置数据块的大小,超过这个数据块大小(1M)就会分裂,自动均衡迁移到别的分片
db.settings.save({"_id":"chunksize","value":1})
#查看配置
db.settings.find()

在这里插入图片描述

四、验证

4.1 批量插入数据

use testdbfor (var i = 1; i <= 100000; i++){db.table1.insert({"_id":i,"test1":"testval1"+i});}#查看数据分布
db.table1.getShardDistribution()

在这里插入图片描述
等十几分钟后,数据会均匀分配到其他分片
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一种多功能调试工具设计方案开源

一种多功能调试工具设计方案开源 设计初衷设计方案具体实现HUB芯片采用沁恒微CH339W。TF卡功能网口功能SPI功能IIC功能JTAG功能下行USB接口 安路FPGA烧录器功能Xilinx FPGA烧录器功能Jlink OB功能串口功能RS232串口RS485和RS422串口自适应接口 CAN功能烧录器功能 目前进度后续计…

三维测量与建模笔记 - 5.3 光束法平差(Bundle Adjustment)

此篇笔记尚未理解&#xff0c;先做笔记。 如上图&#xff0c;在不同位姿下对同一个物体采集到了一系列图像&#xff0c; 例子中有四张图片。物体上某点M&#xff0c;在四幅图像上都能找到其观测点。 上式中的f函数是对使用做投影得到的估计点位置。求解这个方程有几种方法&…

力扣hot100道【贪心算法后续解题方法心得】(三)

力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划&#xff1f;关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…

ElasticSearch学习篇19_《检索技术核心20讲》搜推广系统设计思想

目录 主要是包含搜推广系统的基本模块简单介绍&#xff0c;另有一些流程、设计思想的分析。 搜索引擎 基本模块检索流程 查询分析查询纠错 广告引擎 基于标签倒排索引召回基于向量ANN检索召回打分机制&#xff1a;非精确打分精准深度学习模型打分索引精简&#xff1a;必要的…

Ambrus 游戏工作室将应对气候变暖与游戏变现完美结合

当 Ambrus Studio 创始人兼 CEO Johnson Yeh 计划打造他称之为“第一款伟大的 Web3 游戏”时&#xff0c;他设立了两个关键目标&#xff1a;游戏需要在传统大型工作室忽视的市场中盈利&#xff0c;以及它需要具备超越娱乐的意义。 在 Sui 的帮助下&#xff0c;Johnson 和他的团…

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍 ETT(电变压器温度)&#xff1a;由两个小时级数据集&#xff08;ETTh&#xff09;和两个 15 分钟级数据集&#xff08;ETTm&#xff09;组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) &#xff1a;描…

UEFI Spec 学习笔记---3 - Boot Manager(3)

3.2 Boot Manager Policy Protocol EFI_BOOT_MANAGER_POLICY_PROTOCOL----EFI应用程序使用该协议请求UEFI引导管理器使用平台策略连接设备。 typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL…

wordpress网站首页底部栏显示网站备案信息

一、页脚文件footer.php 例如&#xff0c;wordpress主题使用的是simple-life主题&#xff0c;服务器IP为192.168.68.89,在wordpress主题文件中有个页脚文件footer.php&#xff0c;这是一个包含网站页脚代码的文件。 footer.php 路径如下&#xff1a; /www/wwwroot/192.168.68…

QT实战-qt各种菜单样式实现

本文主要介绍了qt普通菜单样式、带选中样式、带子菜单样式、超过一屏幕菜单样式、自定义带有滚动条的菜单样式&#xff0c; 先上图如下&#xff1a; 1.普通菜单样式 代码&#xff1a; m_pmenu new QMenu(this);m_pmenu->setObjectName("quoteListMenu"); qss文…

数据结构实训——查找

声明&#xff1a; 以下是我们学校在学习数据结构时进行的实训&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法…

指针(上)

目录 内存和地址 指针变量和地址 取地址&#xff08;&&#xff09; 解引用&#xff08;*&#xff09; 大小 类型 意义 const修饰 修饰变量 修饰指针 指针运算 指针- 整数 指针-指针 指针的关系运算 野指针 概念 成因 避免 assert断言 指针的使用 strl…

13TB的StarRocks大数据库迁移过程

公司有一套StarRocks的大数据库在大股东的腾讯云环境中&#xff0c;通过腾讯云的对等连接打通&#xff0c;通过dolphinscheduler调度datax离线抽取数据和SQL计算汇总&#xff0c;还有在大股东的特有的Flink集群环境&#xff0c;该环境开发了flink开发程序包部署&#xff0c;实时…

ARP表、MAC表、路由表的区别和各自作用

文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2流程图 简短总结 ARP表、MAC表、路由表的区别和各自作用 拓扑图如下: 同一网络内:…

第七课 Unity编辑器创建的资源优化_UI篇(UGUI)

上期我们学习了简单的Scene优化&#xff0c;接下来我们继续编辑器创建资源的UGUI优化 UI篇&#xff08;UGUI&#xff09; 优化UGUI应从哪些方面入手&#xff1f; 可以从CPU和GPU两方面考虑&#xff0c;CPU方面&#xff0c;避免触发或减少Canvas的Rebuild和Rebatch&#xff0c…

微服务搭建----springboot接入Nacos2.x

springboot接入Nacos2.x nacos之前用的版本是1.0的&#xff0c;现在重新搭建一个2.0版本的&#xff0c;学如逆水行舟&#xff0c;不进则退&#xff0c;废话不多说&#xff0c;开搞 1、 nacos2.x搭建 1&#xff0c;首先第一步查询下项目之间的版本对照&#xff0c;不然后期会…

Node.js 实战: 爬取百度新闻并序列化 - 完整教程

很多时候我们需要爬取一些公开的网页内容来做一些数据分析和统计。而多数时候&#xff0c;大家会用到python &#xff0c;因为实现起来很方便。但是其实Node.js 用来爬取网络内容&#xff0c;也是非常强大的。 今天我向大家介绍一下我自己写的一个百度新闻的爬虫&#xff0c;可…

Flink四大基石之State(状态) 的使用详解

目录 一、有状态计算与无状态计算 &#xff08;一&#xff09;概念差异 &#xff08;二&#xff09;应用场景 二、有状态计算中的状态分类 &#xff08;一&#xff09;托管状态&#xff08;Managed State&#xff09;与原生状态&#xff08;Raw State&#xff09; 两者的…

底部导航栏新增功能按键

场景需求&#xff1a; 在底部导航栏添加power案件&#xff0c;单击息屏&#xff0c;长按 关机 如下实现图 借此需求&#xff0c;需要掌握技能&#xff1a; 底部导航栏如何实现新增、修改、删除底部导航栏流程对底部导航栏部分样式如何修改。 比如放不下、顺序排列、坑点如…

如何在 Firefox 中清除特定网站的浏览历史记录

以下&#xff0c;我将介绍如何清除特定网站的浏览历史记录。清除历史记录可以保护隐私&#xff0c;特别是在公共或共享设备上使用时&#xff0c;还能节省设备存储空间&#xff0c;避免浏览历史占用过多内存。 如何清除特定网站的浏览历史记录 在 Firefox 中&#xff0c;清除特…

SpringMVC(二)

Model 以Map方式进行存储&#xff0c;用于向作用域中存值。 注意&#xff1a;在Model中增加模型数据&#xff0c;若不指定key&#xff0c;则默认使用对象的类型作为key Controller //控制器类 public class IndexController {RequestMapping("/index3")public Strin…