MongoDB的分片集群的安装

Wesley13
• 阅读 473

简介
所谓分片,指的就是把数据拆分,将其分散到不同机器上的过程。MongoDB支持自动
分片,对应用而言,好像始终和一个单机的服务器交互一样。
分片和复制
复制是让多台服务器拥有相同的数据副本,而分片是每个分片都拥有整个数据集的
一个子集,且相互是不同的数据,多个分片的数据合起来构成整个数据集。
Mongos
用来执行客户端访问集群数据的路由,它维护着一个内容列表,记录了每个分片包
含的数据,应用程序只要连接上它,就跟操作单台服务器一样。
配置服务器
配置服务器就是普通的mongod服务器,保存整个集群和分片的元数据:集群中有哪
些分片,分片的是哪些集合,以及数据块的分布。它极其重要,必须启用日志功能。
在大型的集群中,建议配置3台配置服务器,就足够用了。启动配置服务器的方式:
    1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建confdb文件夹,然后在confdb下
面创建confdb1,confdb2,confdb3文件夹;
同理在前面的logs下面创建conflogs文件夹

  2:然后分别启动这三个配置服务器,使用—configsvr指明是配置服务器,如下:

./mongod --configsvr --dbpath ../dbs/confdb/confdb1 --logpath ../logs/conflog/conflog1 --fork --port 30001
./mongod --configsvr --dbpath ../dbs/confdb/confdb2 --logpath ../logs/conflog/conflog2 --fork --port 30002
./mongod --configsvr --dbpath ../dbs/confdb/confdb3 --logpath ../logs/conflog/conflog3 --fork --port 30003

 3:--configsvr默认的端口为27019,默认的数据目录为/data/configdb,可以使用--dbpath
和--port自己定义。
  4:注意不要使用--replSet选项,配置服务器不是副本集成员。Mongos会向所有的3台配置服
务器发送写请求,并确保3台服务器拥有相同的数据。

启动mongos进程
1:

./mongos --configdb localhost:30001,localhost:30002,localhost:30003 --logpath ../logs/conflog/mongoslog --fork

2:可以启动任意多个mongos,通常是一个应用服务器使用一个mongos,也就是说mongos通常
与应用服务器运行在一个机器上
3:mongos的默认端口是27017,可以用chunkSize来指定块的大小,默认是200M

将副本集转换成为分片
1:如果没有副本集,按照前面讲的创建并初始化一个;如果有一个副本集,就打开相应的服
务器,把副本集运行起来

2:先连接到mongos use admin 也就是切换到使用admin的数据库

./mongo localhost:27017
use admin

3:然后连接到mongos,把副本集转换成为分片,示例如下:

sh.addShard("myrepl/127.0.0.1:20001,127.0.0.1:20002");

不用把所有副本集的成员都写出来,mongos会自动检查整个副本集。副本集的名称
myrepl就用作了分片的名称。
4:使用sh.status();察看状态,会发现整个副本集里面的服务都加入进来了。
5:注意:添加分片过后,客户端应该连接mongos进行操作,而不是连接副本集了。
6:也可以创建单mongod服务器的分片,但不建议在生产环境中使用
7:至此一个分片就创建好了,然后可以重复步骤,创建一个新的副本集,加入到分片中来

数据分片
需要明确指定分片的数据库和集合,MongoDB才会对数据进行自动分片。
1:对数据库启用分片

sh.enableSharding(“数据库名”);

2:然后指定分片的集合,还有分片的键,如果对已经存在的集合进行分片,那么指定的这个
分片键上必须有索引;如果集合不存在,mongos会自动在分片键上创建索引。例如:

sh.shardCollection("rep1.users",{"userId":1});
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
MongoDB分片集群机制及原理
1.MongoDB常见的部署架构单机版复制集分片集群2.为什么要使用分片集群数据容量日益增大,访问性能日渐下降,怎么破?新品上线异常火爆,如何支撑更多用户并发?单库已有10TB数据,恢复需要12天,如何加速?地理分布数据3.分片如何解决问题?银
Stella981 Stella981
2年前
MongoDB分片(Sharding)技术
分片(sharding)是MongoDB用来将大型集合分割到不同服务器(或者说一个集群)上所采用的方法。尽管分片起源于关系型数据库分区,但MongoDB分片完全又是另一回事。和MySQL分区方案相比,MongoDB的最大区别在于它几乎能自动完成所有事情,只要告诉MongoDB要分配数据,它就能自动维护数据在不同服务器之间的均衡。2.1MongoDB
Stella981 Stella981
2年前
MongoDb分片集群认证
本文主要基于已经搭建好的未认证集群,结合上篇Mongodb副本集分片集群模式环境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html),MongoDb分片集群认证几个主要流程1.在分片集群环境中,副本集内成员之间需要用keyFile认证,mongos与配置服务器,副本集之间也要keyFi
Wesley13 Wesley13
2年前
MongoDB学习笔记10——分片
分片(Sharding)这种技术可以将数据分散到多台机器,但对于应用而言,仍然如同在使用单个数据库一样。在使用MongoDB时,水平分区是唯一可采用的方式。在MongoDB中由MongoS路径进程管理数据的分割,并将请求路由到必需的分片服务器。在进行分片的时候需要mongod配置服务器和mongos分片服务器。1)创建分片设置:打开新的终端窗
Wesley13 Wesley13
2年前
MongoDB最新4.2.7版本三分片集群修改IP实操演练
背景重新组网,需要对现有MongoDB分片集群服务器的IP进行更改,因此也需要对MongoDB分片集群的IP也进行相应的更新,而MongoDB分片集群的IP修改不能单纯的通过配置来进行,需要一番折腾后才能正常更新,这里对整个MongoDB集群的IP修改过程做下记录,希望对有同样需求的小伙伴有所帮助。作者:依乐祝原文地址:http
Wesley13 Wesley13
2年前
Mongo权威指南(初级篇)
MongoDB学习笔记特点:空间换时间易于扩展全文索引SQL与NoSQL的合并,解决了SQL的效率既有SQL的形式,又有NoSQL的自由分片(Sharding)将大的集合分割到不同的服务器(集群),MongoDB自动完成数据的分配,而且对应用层透明集群mongos是用户与集群的交互点,用户可以把一个集群当成一台服务器
Stella981 Stella981
2年前
Mongodb集群搭建一篇就够了
本文主要介绍mongodb集群的搭建安装过程,对于学习mongodb的同学很有帮助,包括分片模式、复制集模式、是否启用认证等,本文选取mongodb3.6.3版本为例进行详细安装说明,其他版本搭建过程和本过程一样,只需按照本文说明操作即可。1.Mongodb分片集群架构
Wesley13 Wesley13
2年前
MongoDB分片介绍
本文简单介绍MongoDB的分片功能,对分片进行了概述,具体的功能详解,后续文章会陆续推出分片是把数据分配到多个服务器上的一种方式,MongoDB使用分片实现大数据部署以及高吞吐操作。大数据以及高吞吐量的应用会对单个服务器的容量造成很大的挑战。比如,高频率的查询操作会消耗服务器的CPU,如果数据集大于系统的RAM容量,也会对硬盘的性能造成影响。应
Stella981 Stella981
2年前
Mongodb集群节点故障恢复场景分析(转)
一个适当配置的Mongodb分片集群是没有单点故障。本文描述了分片集群中存在的几种不同的潜在的节点故障场景,以及Mongodb对这些节点故障是怎么处理的。1、Mongos节点宕机一个Mongos进程应该运行在每一个应用程序服务器上,这个服务器应该独占这个Mongos进程,并且通过它与分片集群来通讯。Mongos进程不是持久化的,相反,
Wesley13 Wesley13
2年前
MongoDB 分片的原理、搭建、应用
一、概念:     分片(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fdocs.mongodb.org%2Fmanual%2Fcore%2Fshardingintroduction%2F)(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不