MongoDB分片部署(windows)

OS:win10

MongoDB:4.4.24

分片架构

从图中可以看出,分片集群中主要由三个部分组成,即分片服务器( Shard )、路由服务器
Mongos )以及配置服务器( Config Server )组成。其中,分片服务器有三个,即 Shard1
Shard2 Shard3 ;路由服务器有两个,即 Mongos1 Mongos2 ;配置服务器有三个,即主、副、副。
主要有如下所述三个主要组件:
Shard: 用于存储实际的数据块,实际生产环境中一个shard server 角色可由几台机器组个一个 replica set 承担,防止主机单点故障
Config Server: mongod实例,存储了整个 ClusterMetadata ,其中包括 chunk 信息。
Query Routers: 前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

部署分片集群

部署shard

步骤一:环境准备

分片节点(实例)端口路径
1shard11(主)4006

dbpath:D:\shard1\shard11\data

logpath:D:\shard1\shard11\log

shard12(从)4007

dbpath:D:\shard1\shard12\data

logpath:D:\shard1\shard12\log

2shard21(主)4008

dbpath:D:\shard2\shard21\data

logpath:D:\shard2\shard21\log

shard22(从)4009

dbpath:D:\shard2\shard22\data

logpath:D:\shard2\shard22\log

每一个分片都应该安装 MongoDB 实例,需要将 bin 文件复制到每个分片中, 并且创建data 文件以及 log 文件存放数据库数据和日志数据

步骤二 启动分片服务(实例)

启动分片集群1(shard11和shard12)

shard11

然后进入数据库bin目录中,启动cmd

\bin>mongod --shardsvr --replSet shard1 -port 4006 -dbpath D:\shard1\shard11\data -logpath D:\shard1\shard11\log\shard11.log
--shardsvr 为分片声明
当命令一直保持运行状态则说明服务运行成功,此服务为一次性服务,不要关闭此窗口,最小化即可。
shard12:

再次进入数据库bin目录中,启动cmd

bin>mongod --shardsvr --replSet shard1 -port 4007 -dbpath D:\shard1\shard12\data -logpath D:\shard1\shard12\log\shard12.log

启动分片集群2(shard21和shard22)

shard21

\bin>mongod --shardsvr --replSet shard2 -port 4008 -dbpath D:\shard2\shard21\data -logpath D:\shard2\shard21\log\shard21.log

shard22

\bin>mongod --shardsvr --replSet shard2 -port 4009 -dbpath D:\shard2\shard22\data -logpath D:\shard2\shard22\log\shard22.log

tips:

电脑版本比较高,所以的 cmd 需要使用管理员身份运行
启动服务均为一次性服务,关闭 cmd 即为关闭服务,所以在未完成前,请勿关闭
实例均未添加至系统环境变量,请在 bin 目录下启动
虽然窗口很多,操作不太友好,但是在 win 系统下,还是多有耐心一点, linux会简单一些

步骤三:配置分片(shard)集群

进入到shard1集群任何一个节点中

use adminconfig={_id:"shard1",members:[
... {_id:0,host:"localhost:4006",priority:2},
... {_id:1,host:"localhost:4007",priority:1}
... ]}rs.initate(config)

进入到shard2集群任何一个节点中

use adminconfig={_id:"shard2",members:[
... {_id:0,host:"localhost:4008",priority:2},
... {_id:1,host:"localhost:4009",priority:1}
... ]}rs.initate(config)

至此,shard集群配置好了。

部署config server

步骤一:环境准备

值得注意的是:在 MongoDB 3 版本后 config 服务必须配置为从 副本集 ,所以直接用前面设置好了的副 本启动即可
config实例端口数据路径日志路径
config1(主)4002D:\config\config1\dataD:\config\config1\log
config2(从)4003D:\config\config2\dataD:\config\config2\log

老样子,每个文件夹添加datalog

步骤二:启动config server

启动config1

进入到bin目录中,启动cmd

\bin>mongod --configsvr --replSet confset -port 4002 -dbpath D:\config\config1\data -logpath D:\config\config1\log\conf1.log
--configsvr 这里我们完全可以像启动普通 mongodb 服务一样启动,不需要添加 —shardsvr configsvr 参数。因为这两个参数的作用就是改变启动端口的,所以我们自行指定了端口就可以。

启动config2

\bin>mongod --configsvr --replSet confset -port 4003 -dbpath D:\config\config2\data -logpath D:\config\config2\log\conf2.log

不要关闭 cmd 窗口,最小化即可 ]

步骤三:配置config server集群

进入任何一个配置服务器的节点初始化配置服务器的群集

 use adminconfig={_id:"confset",configsvr:true,members:[
... {_id:0,host:"localhost:4002"},
... {_id:1,host:"localhost:4003"}
... ]}rs.initiate(config)

部署路由服务器 Route Process

可以创建专门的文件夹存放日志

在进入 数据库 bin 目录中 启动 cmd


D:\MongoDB\bin>mongos --configdb confset/localhost:4002,localhost:4003 -logpath D:\mongos\log\mongos.log -port 4000
mongos mongos 就是一个路由服务器,它会根据管理员设置的 片键 将数据分摊到自己管理的
mongod 集群,数据和片的对应关系以及相应的配置信息保存在 "config 服务器 " 上。

配置分片信息

bin 目录下使用 MongoDB Shell 登录到 mongos ,添加 Shard 节点

mongos> sh.addShard("shard1/localhost:4006,localhost:4007")

mongos> sh.addShard("shard2/localhost:4008,localhost:4009")

测试分片

登入路由(4000) 端口
指定要分片的数据库
mongos> sh.enableSharding("test")
指定数据库里需要分片的集合和片键,片键根据实际情况选择
mongos> sh.shardCollection("test.c2",{"id":"hashed"})

上述指令指定分片集合为c2,分片字段为“id”,分片形式是哈希分片,若改成“1”则为范围分片

如果集合已经包含数据,则必须在分片集合之前创建一个支持分片键的索引,如果集合为空,则
mongodb 将创建索引。

插入数据验证

mongos> for(var i=1;i<=10000;i++){
... db.c2.save({id:i,name:"a"+i});}

robo 3T查看分片集

连接两个 shard 端口查看分片情况,若两个片段不同,则说明分片成功!!

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

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

相关文章

Vision GNN: An Image is Worth Graph of Nodes

感受野&#xff1a;在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。 感受野并非越大越好&#xff0c;反而可能因为过大而过于发散梯度下降&#xff08;Gradient Descent GD&am…

C#面:介绍 Hashtable 和 Dictionary的区别

Hashtable 和 Dictionary 都是 C# 中用于存储键值对的数据结构&#xff0c; 它们之间的区别如下&#xff1a; 1. 实现方式&#xff1a; Hashtable 是基于哈希表实现的&#xff0c;而 Dictionary 是基于泛型实现的。 2. 类型安全&#xff1a; Hashtable 是非泛型的&#xf…

简介:Asp.Net Core进阶高级编程教程

课程简介目录 &#x1f680;前言一、课程背景二、课程目的三、课程特点四、课程适合人员六、最后 &#x1f680;前言 本文是《.Net Core进阶编程课程》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏主页&#xff0c;欢迎订阅&#xff0c;持续更新…&#xff09…

设计模式(020)行为型之备忘录模式

备忘录模式是一种行为型设计模式&#xff0c;用于在不破坏封装性的前提下捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;以便之后可以将该对象恢复到之前的状态。这种模式通常用于需要记录对象状态历史、撤销操作或实现“回到过去”功能的场景。 在…

突破编程_前端_SVG(使用 svg-pan-zoom 库进行平移与缩放)

1 svg-pan-zoom 概述 svg-pan-zoom 是一个轻量级、高性能且易于使用的 JavaScript 库&#xff0c;专为增强 SVG 图像的浏览体验而设计。它提供了平移和缩放功能&#xff0c;使用户能够无缝探索大型或复杂的 SVG 图形。这个库允许用户对SVG图像进行交互操作&#xff0c;包括缩放…

企业数据模型应用:数字化转型的关键引擎

一、引言 在数字化浪潮席卷全球的今天&#xff0c;数据已经成为企业运营、决策和创新的核心要素。企业数据模型作为数据管理的核心工具&#xff0c;正逐渐成为企业数字化转型的重要引擎。本文将深入探讨企业数据模型的基本概念、应用场景、挑战与对策&#xff0c;以及其在数字…

NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]

NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] Text-to-SQL&#xff08;或者Text2SQL&#xff09;&#xff0c;顾名思义就是把文本转化为SQL语言&#xff0c;更学术一…

数据结构——双向循环链表

目录 前言 一、链表的分类 二、双向循环链表 2.1 开辟新的节点 2.2 链表初始化 2.3 打印链表 2.4 链表的尾插 2.5 链表的头插 2.6 链表的尾删 2.7 链表的头删 2.8 查找链表 2.9 在pos位置之后插入数据 2.10 删除pos位置的数据 三、完整代码实现 四、顺序表和双向…

[lesson37]智能指针分析

智能指针分析 永恒的话题 内存泄漏(臭名昭著的bug) 动态申请堆空间&#xff0c;用完后不归还C语言中没有垃圾回收的机制指针无法控制所指堆空间的生命周期 深度的思考 我们需要什么&#xff1f; 需要一个特殊的指针指针生命周期结束时主动释放堆空间一片堆空间最多只能由一…

Qt——【若按钮点击后无反应,UI界面中已经勾选Checkable属性, 并且调用了按钮的setchecked(false), 但是页面就是不切换状态

几经排查&#xff0c;发现是按钮组的Exclusive属性造成的。Exclusive属性执行后&#xff0c; 当有一个选中&#xff0c;并且没有选择其它按钮时&#xff0c;此按钮一直为选中状态。即使执行了按钮的setchecked&#xff08;false&#xff09;。 如果QAbstractButton属于独占组&a…

【C/C++笔试练习】read函数、虚拟存储、用户态、线程特点、缺页处理、调度算法、进程优先级、锁的使用、创建进程、不用加减乘除做加法、三角形

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;read函数&#xff08;2&#xff09;虚拟存储&#xff08;3&#xff09;用户态&#xff08;4&#xff09;线程特点&#xff08;5&#xff09;缺页处理&#xff08;6&#xff09;调度算法&#xff08;7&#xff09;进程优先…

IP地址和目标端口简介

IP地址和目标端口都是网络通信中重要的概念&#xff0c;它们共同作用来确保数据能够正确地传输到目标设备。 IP地址&#xff08;Internet Protocol Address&#xff09;是互联网上每个设备的唯一标识符。它由四个数字组成&#xff0c;每个数字之间用点&#xff08;.&#xff0…

服务器Linux搭建NPM私有仓库

服务器Linux搭建NPM私有仓库 环境搭建 安装 nodejs nodejs官网&#xff1a;https://nodejs.org/en/download/package-manager 可以去官网自行下载nodejs的Linux版本&#xff0c;但是出于别的原因考虑&#xff0c;可以使用nvm去下载nodejs这样会切换nodejs也方便。 nvm 这…

ubuntu20.04基础镜像中jdk8.0中文乱码问题(需要加上ENV LANG C.UTF-8和ENV LC_ALL C.UTF-8)

文章目录 描述原因解决 描述 # 基础镜像 FROM ubuntu:20.04# 避免在安装过程中&#xff0c;有些程序需要交互式输入&#xff08;如地区设置等&#xff09; ARG DEBIAN_FRONTENDnoninteractive# 更新软件包列表&#xff0c;安装必要的软件包 RUN apt-get update && apt…

Android 混淆模板

保持对外门面类 -keep public class com.xx.devtools.middle.manager.DevLogManager { public *; } 保持model类 -keep public class com.xx.devtools.middle.model.** { public *; } -keep public class com.xx.devtools.middle.Globals { public *; } 保持Bus注册方法 -…

整数运算超越存储单元表示范围:上溢出、下溢出、回绕

示例&#xff1a; /*** brief how about integer-underflow-overflow? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <std…

P5730 【深基5.例10】显示屏

思路&#xff1a; 此题只需要两层循环&#xff0c;通过数组映射即可求出答案 AC代码&#xff1a; #include<iostream>using namespace std;typedef long long ll; const int N 10; int a[N];int main() {ll n,m;cin >> n >> m;for(ll in;i<m;i){ll nu…

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is ja

具体报错&#xff1a; org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Receiver class org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient does not define or inher…

leetcode:42.接雨水

单调栈解题思路&#xff1a; 需要知道当前遍历到的元素左边和右边第一个比该元素大的元素。 如果当前遍历到的元素大于栈顶元素&#xff0c;则该元素为栈顶元素右边第一个比它大的元素&#xff0c;此时&#xff0c;栈顶元素的栈内相邻元素是该元素左边第一个比它大的元素。【…

亚马逊登录数据筛选

亚马逊登录接口逆向分析 前言方法策略 前言 最近因为工作需要研究了下亚马逊的登录接口&#xff0c;找到了验证登录账户的使用方法。 方法策略 批量检验亚马逊账户是一件非常费事费力的事情&#xff0c;使用 selenium 在网页上操作&#xff0c;一分钟才能筛选两三个&#xf…