MongoDB DBA 实践6-----MongoDB的分片集群部署
一、分片
MongoDB使用分片技术来支持大数据集和高吞吐量操作。
1、分片目的
对于单台数据库服务器,庞大的数据量及高吞吐量的应用程序对它而言无疑是个巨大的挑战。频繁的CRUD操作能够耗尽服务器的CPU资源,快速的数据增长也会让硬盘存储无能为力,最终内存无法满足数据需要导致大量的I/O,主机负载严重。为了解决这种问题,mongodb系统主要采用分片技术。
2、MongoDB中的分片集群
分片:一种数据库体系结构,按键范围对数据进行分区,并在两个或多个数据库实例之间分配数据。分片可实现水平缩放。
分片群集:节点集合包括一个分片的MongoDB部署。分片群集由配置服务器,分片和一个或多个mongos
路由进程组成。
MongoDB通过配置分片集群来支持分片,一个分片集群包括以下几个组件:分片,查询路由,配置服务器
- 分片:用来存储数据,一个生产环境的分片集群,通常每个分片是一个副本集。
- 前端路由:指客户端应用访问每个分片的端口。
- 配置服务器:配置服务器存储群集的元数据和配置设置。从MongoDB 3.4开始,配置服务器必须部署为副本集(CSRS)。
3、数据划分
MongoDB的数据划分,是以集合级别为标准。分片通过shard key来划分集合数据。
- shard key:为了对集合分片,你需要指定一个shard key。shard key既可以是集合的每个文档的索引字段也可以是集合中每个文档都有的组合索引字段。MongoDB将shard keys值按照块(chunks)划分,并且均匀的将这些chunks分配到各个分片上。MongoDB主要使用基于范围划分和基于散列划分来划分chunks的。
- 基于范围划分:MongoDB通过shard key值将数据集划分到不同的范围就称为基于范围划分。对于数值型的shard key:你可以虚构一条从负无穷到正无穷的直线(理解为x轴),每个shard key 值都落在这条直线的某个点上,然后MongoDB把这条线划分为许多更小的没有重复的范围成为块(chunks),一个chunk就是就某些最小值到最大值的范围。
- 基于散列划分:MongoDB计算每个字段的hash值,然后用这些hash值建立chunks。
二、分片集群的实现
分片结构端口如下:
- 按照实践4的步骤创建shard1、shard2两个分片,并在配置文件mongodb.cfg中加入
sharding:clusterRole: shardsvr
创建配置服务器副本集(按照实践4)
- 配置三个configure服务器实例,并且启动。和实践4不同的是mongod.cfg中
sharding:clusterRole: configsvr
其中端口27022的服务器配置具体mongod.cfg如下:
# mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # Where and how to store data. storage:dbPath: C:\cluster\configure\dbjournal:enabled: true # engine: # mmapv1: # wiredTiger:# where to write logging data. systemLog:destination: filelogAppend: truepath: C:\cluster\configure\log\mongod.log# network interfaces net:port: 27022bindIp: 0.0.0.0#processManagement:#security:#operationProfiling:#replication:replSetName: config sharding:clusterRole: configsvr## Enterprise-Only Options:#auditLog:#snmp:
- 配置服务器副本集
cfg = { _id:"config", members:[ {_id:0,host:"192.168.111.131:27022"}, {_id:1,host:"192.168.111.135:27022"}, {_id:2,host:"192.168.111.138:27022"} ] }rs.initiate(cfg)
3. 分别配置路由服务器实例,并且启动。
# mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # where to write logging data. systemLog:destination: filelogAppend: truepath: C:\cluster\mongos\log\mongod.log# network interfaces net:port: 27023bindIp: 0.0.0.0#processManagement:#security:#operationProfiling:##replication: sharding: configDB:config/192.168.111.131:27022,192.168.111.135:27022,192.168.111.138:27022## Enterprise-Only Options:#auditLog:#snmp:
注意:加粗部分为上一步配置好的configure服务器。
4.使用mongos启动路由服务器实例,连接端口
5.使用如下指令添加复制集shard1和shard2的主副节点作为分片添加到集群中。
sh.addShard("shard1/192.168.111.131:27020,192.168.111.135:27020,192.168.111.138:27020") sh.addShard("shard2/192.168.111.131:27021,192.168.111.135:27021,192.168.111.138:27021")
注意:添加的ip或主机名要明确是rs.status()上的name
6.使用命令sh.status()检查配置正确与否。
转载于:https://www.cnblogs.com/0205gt/p/10106192.html
MongoDB DBA 实践6-----MongoDB的分片集群部署相关推荐
- MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署
今天,一同事反映,他安装部署mongodb副本集--分片集群,初始化分片时遇到问题:初始化分片必须使用主机名(也就是必须有相当于DNS服务的解析),这样以来,mongo副本集--分片集群就 会出现DN ...
- mongodb副本集+分片集群部署 step by step
mongodb副本集+分片集群部署step by step 本文只讲述mongodb副本集+分片集群的部署,关于mongdb shading & replica set原理优点等不在本文讨论范 ...
- redis搭建主从哨兵模式+分片集群部署(redis系列二)
前言:在前一章了解redis的基本介绍后,这一章主要介绍redis的实战部署,文章有点长请一步步耐心看完,我相信肯定会有收获的,这里用的资源包是2022年最新的redis版本可能会跟旧版本不同,在此章 ...
- mongodb 集群shard_【mongoDB运维篇④】Shard 分片集群
简述 为何要分片 减少单机请求数,降低单机负载,提高总负载 减少单机的存储空间,提高总存空间. 常见的mongodb sharding 服务器架构 要构建一个 MongoDB Sharding Clu ...
- mongodb 集群shard_【mongoDB运维篇④】Shard分片集群
## 简述 ### 为何要分片 1. 减少单机请求数,降低单机负载,提高总负载 2. 减少单机的存储空间,提高总存空间. ![此处输入图片的描述][1] ### **常见的mongodb shardi ...
- MongoDB部署分片集群
MongoDB分片集群简介 在单机环境下,高频率的查询会给服务器 CPU 和 I/O 带来巨大的负担,基于这个原因,MongoDB 提供了分片机制用于解决大数据集的分布式部署,从而提高系统的吞吐量.一 ...
- MongoDB4.4版本源码部署分片集群
MongoDB4.4版本源码部署分片集群 node1:39.103.204.27 node2:49.232.197.39 node3:43.138.41.190 shard1 PRIMARY shar ...
- 在分片集群中追踪MongoDB的操作日志
2019独角兽企业重金招聘Python工程师标准>>> 介绍 可追踪游标,特别是追踪MongoDB的操作日志是MongoDB中拥有多种用途.非常受欢迎的特色,例如向数据库发送一个有关 ...
- 搭建MongoDB分片集群
在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...
最新文章
- RHEL6 下安装tmux
- java 生成 防伪码,C#生成防伪码的思路及源码分享
- 又肝了下微服务 API 网关“金刚”,也是蛮香的~
- 2010年杭电计算机研究生复试---笔试编程
- linux的用户管理与权限学习总结
- 文献记录(part4)--Sparse Biclustering of Transposable Data
- php需要掌握什么,php专业需要掌握哪些知识
- php 抽象类 静态方法吗,php中的抽象类和静态方法是什么
- 21 张让你代码能力突飞猛进的速查表(神经网络、线性代数、可视化等)
- 带你掌握java反序列化漏洞及其检测
- 类的构造函数和析构函数、默认构造函数
- 用openbabel将pdbqt文件转成pdb
- DucleBox | A Game Engine for OpenGL Programming
- centos7设置输入密码三次错误锁定账号
- 域名和IP地址并用的理由
- java基础(十一章)
- 揭秘消费金融之反欺诈
- PMP第12章采购管理
- Python 批量获取今日头条街拍美图
- Vue 路由导航守卫(全局守卫、路由独享守卫、组件内守卫)详解