部署monggodb单节点分片集群

        分片技术,可以满足MongoDB数据量大量增长的需求。当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

上图中主要有如下所述三个主要组件:

Shard:用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障

Config Server:mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

Query Routers:前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

部署monggodb三节点分片集群

首先修改主机名

192.168.197.136    hostnamectl set-hostname monggodb-1

192.168.197.137    hostnamectl set-hostname monggodb-2

192.168.197.138   hostnamectl set-hostname monggodb-3

安装monggodb(三个节点都做)

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.18.tgz --no-check-certificate

tar -zxvf mongodb-linux-x86_64-rhel70-5.0.18.tgz  解压安装包

mv mongodb-linux-x86_64-rhel70-5.0.18 /data/mongodb  移动到指定目录

配置环境变量

vim /etc/profile    最底部添加

MONGODB_HOME=/data/mongodb

export PATH=$PATH:$MONGODB_HOME/bin

source /etc/profile

创建数据库目录

mkdir /data/mongodb/{data,log,config}   数据存储目录,日志存储目录,confi server目录

部署config server(三台机器都操作)

启动config serve

mongod --bind_ip localhost,192.168.197.136 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

mongod --bind_ip localhost,192.168.197.137 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

mongod --bind_ip localhost,192.168.197.138 --configsvr --replSet config --dbpath /data/mongodb/config/ --logpath /data/mongodb/log/config.log --fork --port 27000

--configsvr 这个参数指定了该实例是一个配置服务器

--replSet config  这个参数指定了配置服务器的副本集名称为 config

mongo --host 192.168.197.136 --port 27000   登录到136创建config的副本集

rs.initiate( { _id: "config", configsvr: true, members: [ { _id : 0, host : "192.168.197.136:27000" }, { _id : 1, host : "192.168.197.137:27000" }, { _id : 2, host : "192.168.197.138:27000" } ] } )

创建完成后查看一下副本集状态    rs.status()

可以看到stateStr状态栏有1个 PRIMARY角色 和 2个 SECONDARY角色集群创建正常,如果是三个SECONDARY角色可以退出mongo重新登录在查看一下。

启动分片集群实例(三个节点都操作)

136节点操作

mongod --bind_ip localhost,192.168.197.136 --shardsvr --replSet mongodb-1 --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

--shardsvr 这个参数指示 MongoDB 服务器将作为一个分片服务器运行。

mongo --host 192.168.197.136 --port 27027

rs.initiate( { _id: "mongodb-1", members: [{_id:0, host : "192.168.197.136:27027" }]})

137节点操作

mongod --bind_ip localhost,192.168.197.137 --shardsvr --replSet mongodb-2 --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

mongo --host 192.168.197.137 --port 27027

rs.initiate( { _id: "mongodb-2", members: [{_id:0, host : "192.168.197.137:27027" }]})

138节点操作

mongod --bind_ip localhost,192.168.197.138 --shardsvr --replSet mongodb-3 --dbpath /data/mongodb/data/ --logpath /data/mongodb/log/mongod.log --fork  --port 27027

mongo --host 192.168.197.138 --port 27027

rs.initiate( { _id: "mongodb-3", members: [{_id:0, host : "192.168.197.138:27027" }]})

为分片集群启动mongos(在136节点操作

mkdir mongos   创建数据存储目录

vim /data/mongodb/mongos/mongod.conf  创建monggodb的配置文件添加一些参数

net:

  port: 27017 #monggodb使用的端口

  bindIp: 0.0.0.0 #支持任意ipv4地址访问

  ipv6: true #开启ipv6

启动 mongos 指定之前部署的 config 副本集

mongos --configdb config/192.168.197.136:27000,192.168.197.137:27000,192.168.197.138:27000 --config /data/mongodb/mongos/mongod.conf  --logpath /data/mongodb/log/mongos.log --fork --port 27017

连接分片集群  mongo --host 192.168.197.136 --port 27017

将分片添加到集群

sh.addShard( "mongodb-1/192.168.197.136:27027")

sh.addShard( "mongodb-2/192.168.197.137:27027")

sh.addShard( "mongodb-3/192.168.197.138:27027")

如果有多个分片可以重复此步骤

删除分片的命令 sh.removeShard("mongodb-1")

use test

sh.enableSharding("test")    给test库启动分片

sh.shardCollection("test.userid", {_id: "hashed" } )   根据"_id"字段做 hash 分片 

sh.status();     查看分片详情

database._id 表示开启分片的库。

database.primary 表示主 shard。

database.partitioned 表示这个库是否开启分片,true 表示开启。

collections 中表示分片的表。

collections.shardKey 表示分片健。

collections.balancing 为 true 表示平衡。

collections.chunks 数据分布情况。

use test      测试插入数据

for (var i=1; i<=10; i++ ) db.userid.save({userid:i,username:'a'});

插入完数据后到三个节点查看一下数据是否已经分片存储

mongo --host 192.168.197.136 --port 27027

db.the_exam_history_detail_1.find().pretty()  整齐的显示内容

mongo --host 192.168.197.137 --port 27027

mongo --host 192.168.197.138 --port 27027

可以看到输入的数据分别存储到了三个分片当中,到这里我们的单节点分片集群就做好了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用Python动态展示排序算法

文章目录 选择冒泡插入排序归并排序希尔排序 经常看到这种算法可视化的图片&#xff0c;但往往做不到和画图的人心灵相通&#xff0c;所以想自己画一下&#xff0c;本文主要实现归并排序和希尔排序&#xff0c;如果想实现其他算法可参考这篇 C语言实现各种排序算法[选择&#x…

v-if 和v-show 的区别

第074个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使用&#xff0c;computed&a…

Ps:直接从图层生成文件(图像资源)

通过Ps菜单&#xff1a;文件/导出/将图层导出到文件 Layers to Files命令&#xff0c;我们可以快速地将当前文档中的每个图层导出为同一类型、相同大小和选项的独立文件。 Photoshop 还提供了一个功能&#xff0c;可以基于文档中的图层或图层组的名称&#xff0c;自动生成指定大…

无人机飞控算法原理基础研究,多旋翼无人机的飞行控制算法理论详解,无人机飞控软件架构设计

多旋翼无人机的飞行控制算法主要涉及到自动控制器、捷联式惯性导航系统、卡尔曼滤波算法和飞行控制PID算法等部分。 自动控制器是无人机飞行控制的核心部分&#xff0c;它负责接收来自无人机传感器和其他系统的信息&#xff0c;并根据预设的算法和逻辑&#xff0c;对无人机的姿…

材料非线性Matlab有限元编程:切线刚度法

导读:本文主要围绕材料非线性问题的有限元Matlab编程求解进行介绍,重点围绕牛顿-拉普森法(切线刚度法)、初应力法、初应变法等三种非线性迭代方法的算法原理展开讲解,最后利用Matlab对材料非线性问题有限元迭代求解算法进行实现,展示了实现求解的核心代码。这些内容都将收…

利用Python画布之乌龟的爬行

一.基础操作 1.引入turtle库 首先&#xff0c;在你的Python代码中引入turtle库&#xff0c;代码如下&#xff1a; import turtle 2.创建画布 要创建一个画布&#xff0c;你可以使用turtle库中的Screen类。Screen类提供了一个窗口&#xff0c;你可以在其中创建一个画布。下…

Github 2024-02-08 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-08统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Ruby项目1HTML项目1Python项目1Scala项目1PLpgSQL项目1Rust项目1NASL项目1C项目1TypeScript项目1非开发语言项目…

结构体的大小以及内存对齐问题

结构体的大小怎么计算&#xff1f;什么是结构体的对齐&#xff1f; 首先想要直到结构体的大小需要先了解结构体的内存对齐。那么&#xff0c;什么是结构体的内存对齐&#xff1a; 什么是结构体内存对齐 结构体的对齐 就是 结构体类型数据在内存中按照一定的对齐规律储存。结…

中科大计网学习记录笔记(七):Web and HTTP

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

免费软件推荐-开源免费批量离线图文识别(OCR)

近期要批量处理图片转电子化&#xff0c;为了解决这个世纪难题&#xff0c;试了很多软件&#xff08;华为手机自带OCR识别、 PandaOCR、天若OCR、Free OCR&#xff09;等软件&#xff0c;还是选择了这一款&#xff0c;方便简单 一、什么是OCR? 光学字符识别&#xff08;Opt…

【Java EE初阶十一】文件操作(IO)

1. 认识文件 所谓的文件是一个广义的概念&#xff0c;可以代表很多东西&#xff1b;在操作系统里面&#xff0c;会把很多的硬件设备和软件设备都抽象成“文件”&#xff0c;统一进行管理&#xff1b;但是大部分情况下&#xff0c;我们读到的文件&#xff0c;都是指硬盘的文件&a…

泽攸科技ZEM系列台扫助力环境科研创新:可见光催化抗生素降解的探索

环境污染和能源短缺是当今人类社会面临的最严重威胁之一。为了克服这些问题&#xff0c;特别是在污水处理过程中&#xff0c;寻找新的技术来实现清洁、高效、经济的发展显得尤为重要。在各种工业废水中&#xff0c;抗生素的过量排放引起了广泛关注。抗生素的残留会污染土壤、水…

【机器学习】数据清洗之处理缺失点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

Web Services 服务 是不是过时了?创建 Web Services 服务实例

Web Services 是不是过时了&#xff1f; 今天是兔年最后一天&#xff0c;先给大家拜个早年 。 昨天上午视频面试一家公司需要开发Web Services 服务&#xff0c;这个也没有什么&#xff0c;但还需要用 VB.net 开发。这个是多古老的语言了&#xff0c;让我想起来了 10年 前 写 …

NLP_Bag-Of-Words(词袋模型)

文章目录 词袋模型用词袋模型计算文本相似度1.构建实验语料库2.给句子分词3.创建词汇表4.生成词袋表示5.计算余弦相似度6.可视化余弦相似度 词袋模型小结 词袋模型 词袋模型是一种简单的文本表示方法&#xff0c;也是自然语言处理的一个经典模型。它将文本中的词看作一个个独立…

ChatGPT高效提问—prompt常见用法(续篇七)

ChatGPT高效提问—prompt常见用法&#xff08;续篇七&#xff09; 1.1 零样本、单样本和多样本 ​ ChatGPT拥有令人惊叹的功能和能力&#xff0c;允许用户自由向其提问&#xff0c;无须提供任何具体的示例样本&#xff0c;就可以获得精准的回答。这种特性被称为零样本&#x…

Electron+Vue实现仿网易云音乐实战

前言 这个项目是我跟着官方文档的那个Electron入门教程大致跑了一遍,了解了下Electron开发流程之后的实战项目,所以中间应该是会有很多写法不是很规范,安全性有可能也没考虑到,可实现的各种api也不是很了解,适合初学者。 必须感谢 https://github.com/Binaryify/NeteaseC…

第二节课[Demo]作业

基础作业 使用 InternLM-Chat-7B 模型生成 300 字的小故事 user avatar 你是一个精通isekai的勇者&#xff0c;现在需要你讲述一段清新脱俗的异世界日常故事&#xff0c;字数300字以上robot avatar 在一个普通的早晨&#xff0c;我像往常一样起床、洗漱、吃早餐。但是&#xf…

力扣231. 2 的幂(数学,二分查找,位运算)

Problem: 231. 2 的幂 文章目录 题目描述思路即解法复杂度Code 题目描述 思路即解法 思路1&#xff1a;位运算 1.易验证2的幂为正数&#xff1b; 2.易得2的幂用二进制表示只能有一个位为数字1 3.即将其转换为二进制统计其二进制1的个数 思路2&#xff1a;数学 当给定数n大于1时…

基于tomcat运行jenkins常见的报错处理

目录 1.jenkins.util.SystemProperties$Listener错误 升级jdk11可能遇到的坑 2.java.lang.RuntimeException: Fontconfig head is null, check your fonts or fonts configuration 3.There were errors checking the update sites: UnknownHostException:updates.jenkins.i…