最新要闻
- 女子投简历被告知不招豫籍 直呼地域歧视很不公平:网友力挺河南人
- 全球看点:神了!锐龙9 7900X反而比锐龙9 7900便宜 还送32GB内存
- 世界实时:颜值就是正义!联力积木风扇SLV2上架京东:259元一只
- 满分100!老外给《流浪地球2》打分30 情节复杂:网友称文化输出成功
- 高铁超员报警无法行驶 无票乘客下车:网友直呼头回见 12306回应合规
- 离谱!男子竟在高速上与公鸡打架!网友:“被年货打了”
- 天天实时:谷歌裁员1.2万人当天 幸存员工崩溃哭泣:有员工直呼跟永不作恶告别
- 世界讯息:日系车再受质疑 因发动机缺陷:日产召回超52万辆汽车
- 【环球新视野】3女生拎3斤米酒进站被拦一饮而尽!网友:王宝强听了都头疼
- 天天短讯!比亚迪海豚上演高速路“全自动驾驶” 车主躺后排睡觉
- 每日视点!击败《流浪地球2》!《满江红》成票房冠军:张艺谋大儿子出演 游客排长队打秦桧雕像免票逛岳飞庙
- 自建“出海舰队” 比亚迪花了50亿元买的船:长这模样
- 日本原装进口!雀巢黑咖啡大促:6毛8能泡一杯
- 当前焦点!夏普发布新款PV800UL激光投影仪:亮度高达8000ANSI流明
- 观点:还买啥车!美国人车贷都还不起了 拖欠率比金融危机峰值还高
- 中国反击!新增7项先进科技禁止/限制出口 合计达139项
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球即时:手把手教你搭建mongodb分片集群
本章用的自己的电脑win10 系统 因为工作上的环境也是win的 就没在虚拟机上玩 (ps: 其实上面环境都大同小异)
在MongoDB(版本 6.xx)中,分片是指将collection分散存储到不同的Server中,每个Server只存储collection的一部分,服务分片的所有服务器组成分片集群。分片集群(Sharded Clustered)的服务器分为三中类型:Router(mongos),Config Server 和 Shard(Replica Set 或 Standalone mongod)。使用分片集群,不需要使用强大的计算机,就能存储更多的数据,处理更大的负载。分布式数据库系统的设计目的是:水平分片,将负载分配到多台Server,减少单机查询的负载。
(资料图)
一,配置服务器
config server 存储分片的元数据,元数据包括每个分片的块(chunk)列表和每个chunk包含数据的范围。路由服务区(Router)从config server上获取分片的元数据,使用元数据将读写操作路由到正确的分片上。
The metadata includes the list of chunks on every shard and the ranges that define the chunks. The mongos instances cache this data and use it to route read and write operations to the correct shards.
config server的读写操作是非常少的,config server将分片的元数据存储在config 数据库中,只有当分片的元数据变化时,比如 chunk migration,chunk split,才会修改config server中的数据。只有在mongos 第一次启动或重启时,或者分片的元数据变化时,mongos才会读取config server中的数据。mongos在读取分片的元数据之后,会缓存在本地。
Config servers store the cluster’s metadata in the config database. The mongos instances cache this data and use it to route reads and writes to shards. MongoDB only writes data to the config servers when the metadata changes, such as
- after a chunk migration, or
- after a chunk split.
MongoDB reads data from the config server in the following cases:
- A new mongos starts for the first time, or an existing mongos restarts.
- After change in the cluster metadata, such as after a chunk migration.
实际上,config server是mongod,只不过设置 --configsvr 选项。
--configsvr 指定mongod作为一个config server
二,mongos 路由服务器
mongos 为MongoDB提供路由服务,处理从application layer发送的查询请求,定位数据所在的分片,对分片上的查询结果进行combine,以完成分布式数据查询。从Application来看,mongos担当的角色是一个MongoDB Instance,隐藏了从分片上query和combine数据的复杂过程。
mongos 的重要参数
--config
--configdb 指定config server列表,格式是:config-svr:port,config-svr:port
--chunkSize 指定data block的大小,单位是MB,默认值是64
--port 指定mongos 监听的TCP的端口号,默认值是27017
--logpath 指定mongos 记录日志的路径,默认情况下,MongoDB将现存的日志文件重命名,而不是重写。By default, MongoDB will move any existing log file rather than overwrite it. To instead append to the log file, set the --logappend option.
搭建mongodb分片集群前提:
1 能够知道mongodb基本的使用
2 知道mongodb的副本集,并且能够搭建
3 知道一些基本的参数
(不清楚的上一篇中有一些说明,或者mongodb 官网上充电)
下面就开始了
1 提前准备好文件夹(我分的层级比较细,也可以不用和我一样的)
mongodb的分片集我本次就用的2个分片
分片服务器:
Shard1: (一主二从)
Shard2:(一主二从)
路由服务器:
router: 单个(这个也是可以搭多个的)
配置服务器:
service: (一主二从)
这些log文件要提前创建好
c1文件夹下创建一个文件以.conf
bind_ip=0.0.0.0port=28017dbpath=D:\mongoDB\zone\config\c1logpath=D:\mongoDB\zone\config\log\config28017.loglogappend=truereplSet=configconfigsvr=trueoplogSize=1024
c2文件夹下创建一个文件以.conf
bind_ip=0.0.0.0port=28018dbpath=D:\mongoDB\zone\config\c2logpath=D:\mongoDB\zone\config\log\config28018.loglogappend=truereplSet=configconfigsvr=trueoplogSize=1024
c3文件夹下创建一个文件以.conf
bind_ip=0.0.0.0port=28019dbpath=D:\mongoDB\zone\config\c3logpath=D:\mongoDB\zone\config\log\config28019.loglogappend=truereplSet=configconfigsvr=trueoplogSize=1024
Shard1:
(log文件要提前创建好)
在data0-1data0-2 data0-3中新建 .conf 文件
data0-1
#mongodb端口port=27018
#绑定ip,只有这个ip才可以访问上mongodbbind_ip=0.0.0.0
# 日志文件的路径logpath=D:\mongoDB\zone\ser1\log\mongodb27018.log
# 数据文件的目录dbpath=D:\mongoDB\zone\ser1\data0-1
#日志以追加的方式存在logappend=true
# fork=true linux以后台方式启动,在window上没有用# 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5%oplogSize=1024# 复制集的名称,同一个复制集的名称必须要相同replSet=myreplace1
data0-2
#mongodb端口port=27019
#绑定ip,只有这个ip才可以访问上mongodbbind_ip=0.0.0.0
# 日志文件的路径logpath=D:\mongoDB\zone\ser1\log\mongodb27019.log
# 数据文件的目录dbpath=D:\mongoDB\zone\ser1\data0-2
#日志以追加的方式存在logappend=true
# fork=true linux以后台方式启动,在window上没有用# 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5%oplogSize=1024# 复制集的名称,同一个复制集的名称必须要相同replSet=myreplace1
data0-3
#mongodb端口port=27020
#绑定ip,只有这个ip才可以访问上mongodbbind_ip=0.0.0.0
# 日志文件的路径logpath=D:\mongoDB\zone\ser1\log\mongodb27020.log
# 数据文件的目录dbpath=D:\mongoDB\zone\ser1\data0-3
#日志以追加的方式存在logappend=true
# fork=true linux以后台方式启动,在window上没有用# 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5%oplogSize=1024# 复制集的名称,同一个复制集的名称必须要相同replSet=myreplace1
Shard2:
这个分片也按照Shard1 做就新了 区分好端口 和日志文件replSet=myreplace1 这个是分片的名称 要区分开来
#mongodb端口port=27021
#绑定ip,只有这个ip才可以访问上mongodbbind_ip=0.0.0.0
# 日志文件的路径logpath=D:\mongoDB\zone\ser2\log\mongodb27021.log
# 数据文件的目录dbpath=D:\mongoDB\zone\ser2\data1-1
#日志以追加的方式存在logappend=true
# fork=true linux以后台方式启动,在window上没有用# 此参数较大比较好,单位是 MB,默认是磁盘可用空间的 5%oplogSize=1024# 复制集的名称,同一个复制集的名称必须要相同replSet=myreplace2
其他的省略。。。
router 没什么好说的同样需要配置文件和日志文件
bind_ip=0.0.0.0port=27017
#mongos.log 需要提前在 los 中建好logpath=D:\mongoDB\zone\router\los\mongos.loglogappend=trueconfigdb=config/127.0.0.1:28017,127.0.0.1:28018,127.0.0.1:28019
到这里准备工作就完成了,下面就是准备启动了(其实可以用批处理文件启动 我就不用了)
我这边是按照自己目录来的
Shard1
mongod.exe --shardsvr --config "D:\mongoDB\zone\ser1\data0-1\27018.conf"mongod.exe --shardsvr --config "D:\mongoDB\zone\ser1\data0-2\27019.conf"mongod.exe --shardsvr --config "D:\mongoDB\zone\ser1\data0-3\27020.conf"
Shard2
mongod.exe --shardsvr --config "D:\mongoDB\zone\ser2\data1-1\27021.conf"mongod.exe --shardsvr --config "D:\mongoDB\zone\ser2\data1-2\27022.conf"mongod.exe --shardsvr --config "D:\mongoDB\zone\ser2\data1-3\27023.conf"
config:
mongod.exe --config "D:\mongoDB\zone\config\c1\28017.conf"mongod.exe --config "D:\mongoDB\zone\config\c2\28018.conf"mongod.exe --config "D:\mongoDB\zone\config\c3\28019.conf"
mongosh.exe --port 27018 连接到Shard1分片的任意服务器初始化
use admin
rs.initiate({ _id : "myreplace1", members : [ {_id : 0,host : "192.168.12.1:27018","priority":10}, {_id : 1,host : "192.168.12.1:27019"}, {_id : 2,host : "192.168.12.1:27020"}]});
mongosh.exe --port 27021 连接到Shard2分片的任意服务器初始化
rs.initiate({ _id : "myreplace2", members : [ {_id : 0,host : "192.168.12.1:27021","priority":10}, {_id : 1,host : "192.168.12.1:27022"}, {_id : 2,host : "192.168.12.1:27023"}]});
mongosh.exe --port 28017 连接到config分片的任意服务器 初始化
rs.initiate({ _id : "config", members : [ {_id : 0,host : "192.168.12.1:28017","priority":10}, {_id : 1,host : "192.168.12.1:28018"}, {_id : 2,host : "192.168.12.1:28019"}]});
启动router 服务
mongos.exe --config "D:\mongoDB\zone\router\27017.conf"
连接到mongos
mongosh.exe --port 27017
use admin
-- 创建需要分片的库
sh.enableSharding("test9527")
usetest9527
db.createCollection("user");
-- 创建mongodb的索引 以哈希散列db.user.createIndex({_id:"hashed"})
use admin
sh.shardCollection("test9527.user",{_id:"hashed"})
usetest9527
-- 向 user文档中插入多条数据db.user.insert({name:"xxs",age:21});
插入了15条数据
切换到Shard1分片
切换到Shard2分片
加起来刚刚好15条 ,打完收工!!!
-
环球新动态:【算法训练营day28】LeetCode93. 复原IP地址 LeetCode78. 子集 LeetCode90. 子集II
LeetCode93 复原IP地址题目链接:93 复原IP地址独上高楼,望尽天涯想起来简单,写起来还是很难的一道...
来源: 环球即时:手把手教你搭建mongodb分片集群
女子投简历被告知不招豫籍 直呼地域歧视很不公平:网友力挺河南人
全球看点:神了!锐龙9 7900X反而比锐龙9 7900便宜 还送32GB内存
环球新动态:【算法训练营day28】LeetCode93. 复原IP地址 LeetCode78. 子集 LeetCode90. 子集II
环球新动态:C# 闭包类对弱引用的坑
天天新资讯:DC-9
世界实时:颜值就是正义!联力积木风扇SLV2上架京东:259元一只
天天微资讯!Collection常用方法【汇总】
满分100!老外给《流浪地球2》打分30 情节复杂:网友称文化输出成功
高铁超员报警无法行驶 无票乘客下车:网友直呼头回见 12306回应合规
离谱!男子竟在高速上与公鸡打架!网友:“被年货打了”
天天实时:谷歌裁员1.2万人当天 幸存员工崩溃哭泣:有员工直呼跟永不作恶告别
世界快看:推荐这5个很牛的开源项目,程序员直呼内行
天天视点!IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)
世界热门:VS Code保存后自动格式化Vue代码
世界讯息:日系车再受质疑 因发动机缺陷:日产召回超52万辆汽车
世界速看:(笔记)运算放大器经典应用电路及工作原理
【网关开发】6.lua绑定委托(delegate)实现多播调用
【环球新视野】3女生拎3斤米酒进站被拦一饮而尽!网友:王宝强听了都头疼
天天短讯!比亚迪海豚上演高速路“全自动驾驶” 车主躺后排睡觉
每日视点!击败《流浪地球2》!《满江红》成票房冠军:张艺谋大儿子出演 游客排长队打秦桧雕像免票逛岳飞庙
自建“出海舰队” 比亚迪花了50亿元买的船:长这模样
日本原装进口!雀巢黑咖啡大促:6毛8能泡一杯
当前通讯!看个小说竟然像在照镜子!
数据库容灾等级
后端跨域问题导致java.io.IOException: UT010029: Stream is closed解决办法
当前焦点!夏普发布新款PV800UL激光投影仪:亮度高达8000ANSI流明
观点:还买啥车!美国人车贷都还不起了 拖欠率比金融危机峰值还高
中国反击!新增7项先进科技禁止/限制出口 合计达139项
MySQL索引底层探究
热头条丨感受 Vue3 的魔法力量
每日短讯:真刺鸡战场!西安一景区设免费抓鸡活动:人鸡比例10:1
AMD YES!来自小厂的迷你主机 把友商按在地上摩擦
世界看点:你敢坐吗?日产汽车联手日立:通过电动汽车为电梯临时供电
湖南以前叫什么名字?湖南旅游十大必去景区
南菱嫣盛霆旭是什么小说?2023年言情小说推荐
创造营2019全部成员有哪些?创造营2019出道成员
雪见是哪个电视剧的人物?雪见是哪个演员扮演的角色?
不要抛下绮绮是什么意思?王者荣耀流行梗有哪些?
大金空调是哪个国家的品牌?大金空调不制热怎么回事?
环球快消息!【如何提高IT运维效率】深度解读京东云基于NLP的运维日志异常检测AIOps落地实践
环球实时:别再写狗屎代码了,推荐这 5 款 IDEA 插件,让你的代码质量直接起飞!
将实体光盘制作成光盘映像iso文件
输入法切换不了是什么原因?输入法切换不了怎么解决?
小米6x什么时候发布的?小米6x详细参数
qq游戏大厅在哪里打开?qq游戏大厅怎么多开?
注册表编辑器是干什么的?注册表编辑器怎么恢复默认设置?
【当前热闻】《流浪地球2》周边众筹已超4500万!最初目标仅仅10万
中国“宁王”成功出海 宁德时代首座海外工厂投产
全球头条:springboot~logback按level添加不同的颜色
春节假期有车走应急车道 视频车拍照举报还得数百元红包奖励
环球百事通!最勤劳“小兔子”行驶1500米、数据940GB!玉兔二号传回新玉照
当前热讯:中国玩家的电子阳痿:被日本“老中医”彻底治好了
聚焦:读Java8函数式编程笔记03_高级集合类和收集器
【天天快播报】男子与女友吵完架开车2分钟扣22分 逆行、闯红灯等:网友看完害怕
最新:男子春节逆向旅游深圳承包整片沙滩:通过房价得出判断
中国春节档电影市场重焕活力:总票房破67亿 列历史第2
头条焦点:AX9000安装使用Docker
天天看点:理想L9高速“失灵” 追尾“自杀式并线”车引争议:车主自找的?
车企年度销量目标完成率:比亚迪一枝独秀 长城、长安惨不忍睹
今日热议:唯一/普通索引的选择?change buffer
焦点消息!AMD RX 400/500老显卡尴尬不能跑新游戏:同时代N卡却没问题
当前视点!暗物质:宇宙中最神秘的物质之一 已经逼疯科学家了
环球观天下!RabbitMQ介绍
图省钱去开电动汽车:在美国根本不存在
天天快资讯丨玩法BT!真人版《鱿鱼游戏》出意外:多人受伤
世界速看:MQ的相关概念
Python字符串
当前关注:女子过年练车坠河:一家3人不幸遇难 还是大学生
环球快播:学习笔记——安卓的下载路径;创建一个空的安卓project;Android中的日志工具划分
滚动:史上最好Windows系统!微软要对Win11首个正式版强制升级22H2了
【全球报资讯】马斯克称中国竞争对手最努力最聪明:最有可能仅次于特斯拉
每日快讯!Cybertruck又跳票了!特斯拉首款电动皮卡量产要等到2024年
2022手机战事骁龙精彩收官:新的好戏要开场了!
全球微头条丨Codeforces Round #601 (Div. 2) A-E
世界快报:敏感肌适用 露得清氨基酸洗面奶19.9元白菜价:3.3折狂促
全球要闻:POJ 1185 炮兵阵地
每日动态![概率论与数理统计]笔记:4.3 常用的统计分布
通讯!刘德华吴京《流浪地球2》电影里重回20岁 吴京:没有被年轻俊美吓到吧
【天天新要闻】2G/3G退网 怎就这么难
【环球速看料】[NOIP2016提高组] 愤怒的小鸟
焦点速看:33.98万元起买吗?理想L7内部空间图公布:感受一下到底有多能装
男子花20多万三亚度假遭遇节约型爸妈 网友热议:过度节约才是更大浪费
全球热点!操作系统的概念、功能和目标
今日热讯:阿里回应将在新加坡建“第一高楼”当全球总部:出生在杭州 生长在杭州 发展在杭州
中国团队开发液体机器人成功越狱:复刻《终结者2》T-1000名场面
密钥封装和公钥加密的联系和区别?
环球观热点:将awk脚本写在文件里:一种高效的awk循环循环方式
【世界播资讯】男子在鱼疗池睡着“生吞”小鱼 网友:鱼生从未体验的味道
要闻速递:国航航班颠簸下坠乘客录视频遗言以防不测:全飞机的人都在尖叫
学习笔记——redis数据类型(ZSet)
世界微速讯:这几个月的二手车 可能是最香的
Hexo 修改默认文章路径
【世界热闻】-53℃的漠河启动i9-13900K、RTX 4090!魔幻一幕出现
当前热点-男孩逛景区遇现实版“鹈鹕灌顶”:小心确实有攻击性
Educational Codeforces Round 1
动态焦点:女儿返程点千元外卖塞满父母冰箱:感恩双亲 过去他们把我行李箱装满
【世界新视野】顽皮狗总监:《神秘海域》不会再出了
环球速看:Windows开发的瑞士军刀,NewSPYLite发布
当前最新:学习笔记——redis中的数据类型(List、Set、Hash)