基础篇(能解决工作中80%的问题):

  1. MongoDB的概述、应用场景、下载方式、连接方式和发展历史等

  2. MongoDB数据类型、重要概念以及shell常用指令

  3. MongoDB文档的各种增加、更新、删除操作总结

  4. MongoDB各种查询操作总结

  5. MongoDB对列的各种操作总结

  6. MongoDB中的索引操作总结

进阶篇:

  1. MongoDB聚合操作总结

  2. MongoDB的导入导出、备份恢复总结

  3. MongoDB的用户管理总结

  4. MongoDB复制(副本集)总结

  5. MongoDB 分片总结

  6. MongoDB 遇见 spark(进行整合)

  7. MongoDB内部的存储原理

其它:

  1. python3操作MongoDB的各种案例

  2. MongoDB命令汇总

一. 分片概述

分片(sharding)是指:将数据拆分,将其分散在不同机器的过程,有时也用分区(partitioning)来表示这个概念。将数据分散在不同的机器上,不需要强大的大型计算机就能存储更多的数据,可以满足MongoDB数据量大量增长的需求。

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

注意
副本集:能解决自动故障转移,主从复制,集群。解决的问题:数据冗余备份,架构高可用;但不能解决单节点压力问题(硬件限制,并发访问压力)

为什么使用分片:
1、本地磁盘不够大
2、当请求量巨大时会出现内存不足。
3、垂直扩展价格昂贵(内存、磁盘、cpu)

二. 分片集群结构

在MongoDB中使用分片集群结构分布:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vs4UlO1S-1657022797641)(evernotecid://B1CD39FE-B044-413D-A086-0649DB3F0070/appyinxiangcom/26430792/ENResource/p1225)]

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

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

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

三. 分片实例

分片结构端口分布如下:

Shard Server 1:27031
Shard Server 2:27032
Config Server: 27100
Route Process: 27777

步骤一:启动Shard Server

sudo rm -rf /MongoDB/shard/s1 /MongoDB/shard/s2 /MongoDB/shard/log
sudo mkdir -p /MongoDB/shard/s1 /MongoDB/shard/s2 /MongoDB/shard/log
sudo mongod --port 27031 --dbpath=/MongoDB/shard/s1
sudo mongod --port 27032 --dbpath=/MongoDB/shard/s2

步骤二: 启动Config Server

sudo rm -rf /MongoDB/shard/config
sudo mkdir -p /MongoDB/shard/config
sudo mongod --port 27100 --dbpath=/MongoDB/shard/config

注意:这里我们完全可以像启动普通mongodb服务一样启动,不需要添加—shardsvr和configsvr参数。因为这两个参数的作用就是改变启动端口的,所以我们自行指定了端口就可以。

步骤三: 启动Route Process

mongos --port 27777 --configdb 192.168.17.129:27100

步骤四: 配置Sharding

接下来,我们使用MongoDB Shell登录到mongos,添加Shard节点

mongo admin --port 27777
MongoDB shell version: 2.0.7
connecting to: 127.0.0.1:27777/admin
mongos> db.runCommand({ addshard:"192.168.17.129:27031" })
{ "shardAdded" : "shard0000", "ok" : 1 }
......
mongos> db.runCommand({ addshard:"192.168.17.129:27032" })
{ "shardAdded" : "shard0009", "ok" : 1 }

步骤五:对某个数据库test启用分片

#设置分片存储的数据库
mongos> db.runCommand({ enablesharding:"test" }) { "ok" : 1 }

步骤六:对collection进行分片

mongos> db.runCommand({ shardcollection: "test.mycol", key: { _id:1}})
{ "collectionsharded" : "test.mycol", "ok" : 1 }

步骤七:测试

mongo test --port 27777

输出10000条数据

use testvar

num =10000
for (var i=0;i<num;i++){ db.mycol.save({'_id':i})
}

程序代码内无需太大更改,直接按照连接普通的mongo数据库那样,将数据库连接接入接口27777

步骤八: 查看分片情况

查看分片情况时,必须在config(配置服务器上执行)而且必须在admin(如mongo 127.0.0.1:27100/admin)集合下执行

mongo admin --port 27100  #config(配置服务器上执行)
sh.status()# 输出如下:
-- Sharding Status --- sharding version: {"_id" : 1,"minCompatibleVersion" : 5,"currentVersion" : 6,"clusterId" : ObjectId("57cfcdfef06b33543fdeb52e")
}shards:{  "_id" : "shard0000",  "host" : "localhost:27031" }{  "_id" : "shard0001",  "host" : "localhost:27032" }active mongoses:"3.2.7" : 1balancer:Currently enabled:  yesCurrently running:  noFailed balancer rounds in last 5 attempts:  0Migration Results for the last 24 hours: 1 : Successdatabases:{  "_id" : "test",  "primary" : "shard0000",  "partitioned" : true }test.mycolshard key: { "_id" : 1 }unique: falsebalancing: truechunks:shard0000    2shard0001    1{ "_id" : { "$minKey" : 1 } } -->> { "_id" : 1 } on : shard0001 Timestamp(2, 0) { "_id" : 1 } -->> { "_id" : 57 } on : shard0000 Timestamp(2, 1) { "_id" : 57 } -->> { "_id" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 3)

四. Hashed Sharding

选择哈希片键最大的好处就是保证数据在各个节点分布基本均匀,下面使用_id作为哈希片键做个简单的测试:

mongo admin --port 27777
mongos> db.runCommand({ shardcollection: "test.myhash", key: { _id:"hashed"}})
{ "collectionsharded" : "test.myhash", "ok" : 1 }
use test
var num =10000
for (var i=0;i<num;i++){db.myhash.save({'_id':i})
}

总结:哈希分片将提供的片键散列成一个非常大的长整型作为最终的片键。

MongoDB 分片总结相关推荐

  1. mongodb分片扩展架构

    目录 一.简介 二.分片集群 三.数据分布策略 四.Mongos访问模式 五.Config元数据 六.分片均衡 参考文档 一.简介 MongoDB目前3大核心优势:『灵活模式』+ 『高可用性』 + 『 ...

  2. 搭建mongodb分片

    搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在shardi ...

  3. 搭建MongoDB分片集群

    在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...

  4. MongoDB 分片的原理、搭建、应用

    一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...

  5. mongodb 分片群集配置 及数据迁移

    配置mongodb分片群集(sharding cluster) Sharding cluster介绍 这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monod ...

  6. mongodb 启动_精心总结--mongodb分片集群启动与关闭

    概述 网上教程有点坑啊,很多bug,今天刚好涉及到所以抽空整理了下mongodb分片集群启动与关闭方面的教程.希望对大家有点帮助. 基础环境配置 192.168.240.145 测试Nosql服务器1 ...

  7. MongoDb分片集群认证

    本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), Mong ...

  8. MongoDB 分片

    MongoDB 分片 高数据量(消耗内存)和高吞吐量(消耗CPU)的数据库应用会对单机的性能造成较大压力,为了解决这些问题,一般采用两种方法:水平扩展(将数据集分布在多个服务器上)和垂直扩展(增加更多 ...

  9. mongodb分片概念和原理-实战分片集群

    一.分片 分片是一种跨多台机器分发数据的方法.MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署. 问题: 具有大型数据集或高吞吐量应用程序的数据库系统可能会挑战单个服务器的容量.例如 ...

  10. 实战:MongoDB 分片集群Shard Cluster 搭建(1台路由节点,3台配置节点,9台分片节点)

    MongoDB 分片集群搭建(分片集群安全认证+SpringBoot访问) 一.搭建要求 一台路由节点 IP地址:192.168.80.110 端口:11111 三套复制集(每个分片节点中的复制集 都 ...

最新文章

  1. Android中获取手机的IMEI
  2. Python编程基础:第五十九节 守护线程Daemon Threading
  3. C# 系统应用之调用SDelete程序粉碎文件及基础原理知识
  4. 语义分割深度学习方法集锦
  5. 2021牛客暑期多校训练营7 K-xay loves sequence(主席树+二分)
  6. 你必须了解的session的本质
  7. vue 3.x 中全局配置 axios
  8. python搭建网页_使用python快速搭建本地网站
  9. 基于SSM的境外电商后台管理系统(含word论文文档)
  10. plupload插件上传总结(分片上传,php后端处理)
  11. 【计算机组成原理之存储系统】超级详细
  12. 校园导游系统(C++实现,VC6.0编译,使用EasyX图形库)
  13. 社会保障psam卡 是什么_社会卡即服务
  14. 基于ISTQB定义理解软件测试
  15. HTML学习(二):HTML基础
  16. ie8 阻止java运行_解决IE屏蔽Java Applet问题的方法
  17. C#编程,Lazy(延迟初始化)用法
  18. AOD452场效应管MOS管
  19. 详解诊断数据库ODX-C
  20. [VIM]VIM/GVIM中代码的折叠和打开

热门文章

  1. 所有过往、皆为序章:我的2021
  2. 基于因果推断的根因分析
  3. ECDH秘钥协商算法原理(ECDH Key Exchange)
  4. 配置域名 二级,三级的泛解析
  5. IDEA怎么使折叠合并的文件夹分开
  6. 知网学术论文下载caj格式转换 caj转pdf
  7. Power BI(二十)power pivot之Earlier函数 - DAX进阶的里程碑
  8. MindManager2021 Win/Mac v2020.19.思维导图软件安装下载激活教程
  9. 应用于语义分割问题的深度学习技术综述(语义分割综述)
  10. 工程项目建设数字化管理解决方案